DQL
DQL- 编写顺序
代码语言:javascript复制 SELECT 字段列表 select
FROM 表名列表 from
WHERE 条件列表 where
GROUP BY 分组字段列表 group by
HAVING 分组后条件列表 having
ORDER BY 排序字段列表 order by
LIMIT 分页参数 limit
DQL- 基础查询
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
- 查询指定多个字段
select 字段1,字段2,字段3,.... from 表名
- 查询返回所有字段
select * from 表名设置别名
- 设置别名
select 字段1 [ as 别名1],字段2[as 别名2]... from 表名
as可以省略不写
- 去除重复数据
select distinct 字段列表 from 表名
DQL- 条件查询
代码语言:javascript复制 -- 查询 年龄 age > 18 的员工有哪些
select * from employee where age >18;
-- 查询 年龄 age < 18 的员工有哪些
select * from employee where age < 18;
-- 查询 年龄 age = 18 的员工有哪些
select * from employee where age = 18;
-- 查询 年龄 age >= 18 的员工有哪些
select * from employee where age >= 18;
-- 查询 年龄 age 不为null 的员工有哪些
select * from employee where age is not null;
-- 查询年龄 age 不等于 30 的员工有哪些
select * from employee where age != 30;
select * from employee where age <> 30;
-- 查询 年龄在 20 - 25 之间的 员工有哪些
select * from employee where age >= 20 && age <= 25;
select * from employee where age >= 20 and age <= 25;
select * from employee where age between 20 and 25; -- 包头包尾
-- 查询年龄 = 18 并且 性别为 男 的 员工 有哪个
select * from employee where age = 18 and gender = '男';
-- 查询年龄 = 25 或者 28 或者 32 并且性别为 男 的员工有哪些;
-- 因为该语句中使用了 OR 运算符来组合多个条件时,可能存在优先级问题,需要用括号明确指定条件的优先级。
select * from employee where gender = '男' and (age = 25 or age = 28 or age = 32) ;
select * from employee where gender = '男' and (age in (25,28,32)) ;
-- 查询姓名 为3个汉字(3个字符)的员工有哪些;
select * from employee where name like '___'; -- ___ 代表三个字符
-- 查询身份证 最后一位是0 的员工有哪些; %0 : 表示前面有多是字符我不管,我只需要知道最后一个字符是0
select * from employee where idcard like '%0';
update employee set age = 18 where name = '张三';
DQL- 聚合函数
1.介绍:
将一列数据作为一个整体,进行纵向计算
2.常见聚合函数 (不计算 字段值为null
的数据 )
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和总数 |
3. 语法
代码语言:javascript复制 select 聚合函数 (字段列表) from 表名;
4. 练习题
DQL- 分组查询
1. 语法
ELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ];
2. where与having区别 执行时机不同:
- where是
分组之前进行过滤
,不满足where条件,不参与分组; - 而having是
分组 之后
对结果
进行过滤
。 判断条件不同:where不能对聚合函数进行判断
,而having可以
。
3. 注意事项:
- 分组之后,查询的
字段一般
为聚合函数
和分组字段
,查询其他字段无任何意义。
- 执行顺序: where > 聚合函数 > having 。
- 支持多字段分组, 具体语法为 : group by columnA,columnB
4. 练习题
DQL- 排序查询
1. 语法