DQL语句—数据查询语言—data query language
select选择
where从条件中选择
in 在....内
between ...and 在....范围内
like 模糊查询 用% —通配符
1简单查询
1.1.查询表所有数据
使用表示所有列—一般不使用查询所有—*查询效率低
一般会写所有的查询字段名
SELECT * FROM 表名;
1.2.查询指定列
写出查询每列的名称
SELECT 字段名1, 字段名2, 字段名3, … FROM 表名;
1.3.别名查询
查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名1, 字段名2… FROM 表名;
1.4.消除重复值distinct
-
查询时给列、表指定别名需要使用AS关键字
-
使用别名的好处是方便观看和处理查询到的数据
SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名 AS 表别名;
注意:查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处 AS关键字可以省略
1.5.查询结果参与运算
查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
2.条件查询
关键字 where+条件
语法格式:SELECT 字段名 FROM 表名 WHERE 条件;
流程:
取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
2.2比较运算符
大于
<小于
<=小于等于
=大于等于
=等于
<>、!=不等于
2.3逻辑运算符
and(&&) 多个条件同时满足
or(||) 多个条件其中一个满足
not(!) 不满足
in关键字
语法格式:SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2...);
in里面的每个数据都会作为一次条件,只要满足条件的就会显示
2.4范围
BETWEEN 值1 AND 值2 表示从值1到值2范围,包头又包尾
比如:age BETWEEN 80 AND 100
相当于: age>=80 && age<=100
2.5like
LIKE表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
满足通配符字符串规则的数据就会显示出来
所谓的通配符字符串就是含有通配符的字符串
MySQL通配符有两个:
%: 表示0个或多个字符(任意个字符)
_: 表示一个字符
3.排序
通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
ASC: 升序, 默认是升序---ascent上升
DESC: 降序---descend下降
order 命令 /顺序
3.1单列排序
单列排序就是使用一个字段排序
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
3.2组合排序
加粗样式组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];
3.3 聚合函数
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。另外聚合函数会忽略空值
五个聚合函数:
1.count: 统计指定列记录数,记录为NULL的不统计
统计:SELECT COUNT(字段名) FROM 表名
2.sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
求和:SELECT SUM(字段名) FROM 表名
3.max: 计算指定列的最大值
最大值:SELECT MAX(字段名) FROM 表名
4.min: 计算指定列的最小值
最小值:SELECT MIN(字段名) FROM 表名
5.avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
求平均值:SELECT AVG(字段名) FROM 表名
聚合函数的使用:写在 SQL语句SELECT后 字段名的地方
SELECT 字段名... FROM 表名;
解决聚合函数忽略空值的问题:ifnull(exper1,exper2)—如果第一个参数部位null,则IFNULL()的返回值expr1;否则其返回值为exper2
SELECT 聚合函数(ifnull(字段名,默认值)) FROM 表名
3.4分组查询
分组查询是指使用 GROUP BY语句对查询信息进行分组,相同数据作为一组
SELECT 字段1,字段2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
SELECT 字段1,字段2....FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 条件;
having与where的区别
- having是在分组后对数据进行过滤.
- where是在分组前对数据进行过滤
- having后面可以使用聚合函数
- where后面不可以使用聚合函数
3.5limit语句—常用于分页
LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];
LIMIT语法格式:
LIMIT offset,length; 或者limit length;
offset是指偏移量,可以认为是跳过的记录数量,默认为0
length是指需要显示的总记录数
注意:
- 如果第一个参数是0可以简写:
SELECT * FROM student3 LIMIT 0,5;
SELECT * FROM student3 LIMIT 5;
- LIMIT 10,5; -- 不够5条,有多少显示多少
DQL语句的标准
查询语句的依据:
SELECT 字段, 聚合函数 FROM 表名 WHERE 条件GROUP BY 条件 HAVING 条件 ORDER BY 条件 asc/desc LIMIT
offset,length