SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾
2.SQL语句可以使用空格/缩进来增强语句的可读性
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
单行注释:--注释内容或者#注释内容(MySQL特有)
多行注释/*注释内容*/
SQL分类
DDL:Data Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DML: Data Manipulation Language数据操作语言,用来对数据表中的数据进行增删改
DQL:Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL: Data Control Language 数据控制语言,用来创建数据库用户,控制数据库的访问权限
DQL-语法
DQL-基本查询
1.语法
emp表展现:
DQL-条件查询
语法:
各类运算符:
案例:
注意:between...and...第一个空填的是最小值,第二个空填的是最大值,不可以调换顺序!
%模糊匹配,前面是几个字符都行,_精确到几位数
所以身份证可以用%X或者十七个_加上X
DQL-聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见聚合函数
3.语法
第一个结果为16,而第二个结果为15,因为idcard存在一个null值,不参与聚合函数运算。
DQL-分组查询
1.语法
2.where与having的区别
执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组,而having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以。
案例:
先用where把数据过滤一次,再用count把过滤出来的所有数据进行统计
count统计出来的结果之后再通过having对这个结果进行二次过滤
执行顺序是 where>聚合函数>having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
DQL-排序查询
1.语法
2.排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
案例:
不写ASC也行,自动默认为ASC
DQL-分页查询
1.语法
注意:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
分页查询不同数据库有不同的实现,MySQL中是LIMIT
如果查询的是第一页数据,其实索引可以省略,直接简写为limit 10
案例:
这边起始索引为10,因为这是第二页,(页码-1)*页展示记录数
DQL-执行顺序