目录
前言
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。
一、基础查询
1.查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ; # * 号代表查询所有字段
2.查询字段并给字段取别名
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;
上面两句命令用法效果一致,AS可以省略不写。
3.查询字段并去重
SELECT DISTINCT 字段列表 FROM 表名;
二、条件查询
1.命令语法
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
2.运算符(比较运算符&逻辑运算符)
3.举例
#查年龄等于19的人 SELECT * FROM tb_user WHERE age = 19; #查询小于等于20岁的 SELECT * FROM tb_user WHERE age <=20; #查询年龄不等于19岁 SELECT * FROM tb_user WHERE age !=19; #查询年龄在19和21之间 下面两种命令效果一致 #注意使用BETWEEN小的写左边,大的写右边 SELECT * FROM tb_user WHERE age >= 19 AND age <= 20; SELECT * FROM tb_user WHERE age BETWEEN 19 AND 20; #查询年龄等于19或20的人 SELECT * FROM tb_user WHERE age = 19 OR age = 10; SELECT * FROM tb_user WHERE age IN (19,20); #查询名字为3个字的人 SELECT * FROM tb_user WHERE `name` LIKE '___'; #这里''中输入的是三个下划线
三、聚合函数
1.常用的聚合函数
聚合函数对一组值执行计算并返回单一的值
2.使用聚合函数的语法
SELECT 聚合函数(字段列表) FROM 表名 ;
要注意的是:NULL值不参与所有的聚合函数运算,聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
3.举例
#统计表的用户数量 SELECT COUNT(*) FROM tb_user; #统计该表用户平均年龄 SELECT AVG(age) FROM tb_user; #统计该表用户最大年龄 SELECT MAX(age) FROM tb_user; #统计该表用户最小年龄 SELECT MIN(age) FROM tb_user; #统计女员工年龄之和 SELECT SUM(age) FROM tb_user WHERE gender = '女';
四、分组查询
1.使用分组查询的语法
SELECT字段列表FROM表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ];
where与having区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项:
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
- 执行顺序: where > 聚合函数 > having 。
- 支持多字段分组, 具体语法为 : group by columnA,columnB
2.演示
#根据性别分组,统计男用户和女用户的总数 SELECT gender, COUNT(*) FROM tb_user GROUP BY gender; #根据性别分组,统计男用户 和 女用户的平均年龄 SELECT gender, AVG(age) FROM tb_user GROUP BY gender; #查询id值大于3,按年龄分组,获取用户数量大于等于3的年龄值 SELECT age, COUNT(*) FROM tb_user WHERE id > 3 GROUP BY age HAVING count(*) >= 3;
五、排序查询
排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
- ASC : 升序(默认值)
- DESC: 降序
2.演示
#对表按照年龄进行升序排序 SELECT * FROM tb_user ORDER BY age ASC; #对表按照年龄进行降序排序 SELECT * FROM tb_user ORDER BY age DESC; #根据年龄对表进行升序排序,年龄相同者再根据id进行降序排序 SELECT * FROM tb_user ORDER BY age asc , id desc;
注意:
如果是升序, 可以不指定排序方式ASC ;
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
六、分页查询
1.语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
2.演示
#查询第1页用户数据, 每页展示5条记录 SELECT * FROM tb_user LIMIT 0 , 5; #查询第2页用户数据, 每页展示5条记录 & (页码-1)*页展示记录数 SELECT * FROM tb_user LIMIT 5 ,5;
总结
DQL语句的执行顺序为: from ... where ... group by ... having ... select ... order by ... limit ...