zoukankan      html  css  js  c++  java
  • MYSQL基础语法

    MYSQL单表查询

    简单数据查询 (SELECT 选择查询列表)(FROM提供数据源)

    • 和创建表时的顺序一致。匹配所有的字段SELECT *(表示所有列)FROM table_name (表名) :表示查询表中所有信息

    • 可以自己调整顺序,在select后边加上要查询的列名。SELECT A,B,C FROM table_name (表名):表示查询A,B ,C列中所有信息

    消除结果中重复的数据

    • SELECT DISTINCT 列名 FROM 表名

    实现数学运算查询

    • 对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)

    • 对DATE型数据可以使用部分算数操作符创建表达式 (+ -)

    设置列名的别名

    • 语法:SELECT 列名 as 新列名 (as可以省略)FROM table_name

    设置显示格式

    • 使用CONCAT函数来连接字符串 语法 SELECT CONCAT(列名,“ 字符串”,列名)FROM table_name

    过滤查询(字符串和日期要用单引号扩起来)

    • SELECT 列名 FROM table_name WHERE 条件1 AND/OR 条件2;

    逻辑运算

    优先级规则(() 小括号跨越所有运算符优先级)

    范围查询-BETWEEN AND

    • 语法:SELECT 列名 FROM table_name WHERE 列名 BETWEEN AND(闭区间)

    集合查询(IN)

    • 使用IN运算符,判断列的值是否在指定的集合中

    • 语法:SELECT 列名 FROM table_name WHERE 列名 IN(值1,值2....)

    空值查询 IS NULL

    • 语法:SELECT 列名 FROM table_name WHERE IS NULL

    • 注意 列的值是 null 和空字符串不一样,如果是空字符串 应该 = ""

    模糊查询 LIKE

    • 语法:SELECT 列名 FROM table_name WHERE LIKE 通配符 字符串 通配符 ( 例如% ML%)

    • %:通配符:可表示零或多个任意的字符。

    • _:通配符:可表示任意的一个字符

    结果排序(使用ORDER BY子句将结果的记录排序)

    • 升序 ASC : 升序,缺省--不写默认

    • DESC: 降序。

    • 注意:ORDER BY 语句出现在SELECT语句的最后

    • SELECT 列名 FROM 表名 ORDER BY 列名 ASC/DESC

    分页查询 LIMIT

    • 假分页(逻辑分页): 把数据全部查询出来,存在于内存中,翻页的时候,直接从内存中去截取.真分页(物理分页): 每次翻页都去数据库中去查询数据.

      假分页: 翻页比较快,但是第一次查询很慢,若数据过大,可能导致内存溢出.真分页: 翻页比较慢,若数据过大,不会导致内存溢出.

    • 语法:SELECT 列名 FROM table_name LIMIT SELECT 列名 FROM table_name LIMIT beginIndex(表示页数), pageSize(表示每页展示的行数

    • beginIndex = (currentPage-1) * pageSize;第一个: 表示本页,开始索引(从0开始).SELECT 列名 FROM table_name LIMIT 0 ,pageSize;第二个?: 每页显示的条数SELECT 列名 FROM table_name LIMIT beginIndex ,3;规定:每页显示3条数据. pageSize = 3第一页: SELECT * FROM product LIMIT 0, 3第二页: SELECT * FROM product LIMIT 3, 3第三页: SELECT * FROM product LIMIT 6, 3第 N页: SELECT * FROM product LIMIT (N-1)*3, 3

    聚集函数

    • COUNT:统计结果记录数 如果列的值为null 不会计算在内的

    • MAX: 统计计算最大值

    • MIN: 统计计算最小值

    • SUM: 统计计算求和

    • AVG: 统计计算平均值 如果列的值为null 不会计算在内的

    • 语法 SELECT 聚集函数+列名 FROM table_name +其他判断条件

    • CAST函数 :类型转换 CAST(列名 as 类型)

    • CONVERN :类型转换 CONVERN(列名 ,类型)

      ---- 可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

      ​ 二进制,同带binary前缀的效果 : BINARY

      ​ 字符型,可带参数 : CHAR()

      ​ 日期 : DATE

      ​ 时间: TIME

      ​ 日期时间型 : DATETIME

      ​ 浮点数 : DECIMAL

      ​ 整数 : SIGNED

      ​ 无符号整数 : UNSIGNED

    • IFNULL: IF(列为null ,默认值)

    分组查询GROUP BY

    • 可以使用GROUP BY 子句将表中的数据分成若干组,再对分组之后的数据做统计计算,一般使用聚集函数才使用GROUP BY.

    • GROUP BY 后面的列名的值要有重复性分组才有意义;

    • 使用HAVING字句,对分组之后的结果作筛选;

    • 不能在 WHERE 子句中使用组函数(注意);可以在 HAVING 子句中使用组函数;

    • 一般 HAVING有GROUP BY的操作时才用

    MYSQL进阶

    DDL(用来对表结构进行操作)

    • 创建表

    • create table 表名(列名 类型(长度),。。。。)

    • 添加字段

    • alter table 表名 add 字段名 字段类型(长度)

    • 修改表名

    • alter table 表名 rename 新表名

    • 删除表

    • drop table 表名

    • 删除字段

    • alter table 表名 drop 字段名

    • 修改字段类型

    • alter table 表名 modity 字段名 新类型(长度)

    DML(用来对表中的内容进行操作 增删改查)

    • 添加数据 insert

    • insert into 表名 (字段名,。。。) values (值1,。。。)添加单条数据

    • insert into 表名 (字段名,。。。) values (值1,。。。),(值1,。。。)添加多条数据

    • 修改 update

    • update 表名 set 字段名= 修改的值; (列表值全部修改)

    • update 表名 set 字段名= 修改的值 where 主键=修改的值; (修改的具体某个值)

    • 删除 delete

    • delete from 表名; (表中内容全部删除)

    • delete from 表名 where 主键 ; (删除的具体某一个对象的值)

    • 查找数据

    • select 字段名或* from 表名

    多表查询

    笛卡儿积

    • 产生原因:多个表没有直接的连接条件 导致数据组合在一起

    • 消除笛卡儿积 通过外键来消除 外键是另外一张表的主键

    内连接

    • 隐式内连接: select A.* ,B.* from table A,table B where A.id=b.id

    • 显式内连接(inner join)(取交集)

    • select A.,B. from table A inner join table B on A.id= B.id

    外连接

    • 左外连接(lift join ) 以左边为准 右边的数据没有 以null显示

    • 举例 :select A.,B. from table A left join table B on A.id= B.id

    • 右外连接 (right join) 以右边为准 左边的数据没有 以null显示

    • 举例 : select A.,B. from table A right join table B on A.id= B.id

    自连接 (自己把自己作为另外一张表)

    • 子查询:一个查询语句可以放在另一个查询中;内层查询的结果可以作为外层查询条件。一般的,嵌套在WHERE或者FROM字句中。

    • 举例:单行单列子查询:需求: 查询零售价比罗技MX1100更高的所有商品信息。SELECT * FROM productWHERE salePrice > (SELECT salePrice FROM product WHERE productName = '罗技MX1100')

    • 单行多列子查询:需求: 查询分类编号和折扣与罗技M100相同的所有商品信息。SELECT * FROM productWHERE (dir_id,cutoff)=(SELECT dir_id,cutoff FROM product WHERE productName = '罗技M100')

    常用函数(与string中方法联合记忆)

    • 小写转大写

    • SELECT UPPER("itsource")

    • 大写转小写

    • SELECT LOWER("ITSOURCE")

    • 替换

    • SELECT REPLACE(“功夫小宝”,“小宝”,“熊猫”) 结果为 “功夫熊猫”

    • 截取

    • SELECT SUBSTR (字符串,开始位置,截取长度)

    • 去空

    • SELECT TRIM ( 字符串 ) 只能去掉两边的空格

    • SELECT LTRIM ( 字符串 ) 只能去掉左边空字符串

    • SELECT RTRIM ( 字符串 ) 只能去掉右边空字符串

    • 反转 REVERSE

    • SELECT REVERSE( 字符串 )

    • 获得长度(跟编码集有关 不同编码集的字符串所占用的字节长度不一样)

    • SELECT LENGTH(字符串)

    • 四舍五入

    • SELECT ROUND(999.666) 默认取整 结果为 1000

    • SELECT ROUND(999.666,2) 表示保留小数点后两位 结果为 999.67

    • 日期

    • SELECT LOCATIME() /NOW()

    数据的备份与恢复

    • 备份:管理员运行cmd 不要登录mysqlmysqldump -uroot -p密码 数据库名称> 存储路径/文件名.sql

    • 恢复mysqldump -uroot -p密码 数据库名称< 存储路径/文件名.sql

  • 相关阅读:
    VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态怎么解决
    linux中几种安装软件 方法
    Linux向文件添加内容的几种方法
    什么是模块?模块划分的原则是什么?
    NOIP2009 t3 最优贸易
    HDU3072 Intelligence System
    洛谷P2569 股票交易
    玄学
    [0403]学习一个——苟(简单Java开发)
    实验 3:类和对象
  • 原文地址:https://www.cnblogs.com/logoman/p/11342367.html
Copyright © 2011-2022 走看看