概述:
上一篇博客已经把数据和字符串类型及DML语句整理结束,那么接下来,我会继续整理关于DQL语句的整理。
数据查询语言 -- DQL
分块整理:
1、基本查询:select 字段列表
from 表名列表
2、条件查询:where 条件列表
3、聚合函数(count 、 max 、min、avg、sum)
分组查询 :group by 分组字段列表
having 分组后条件列表
4、排序查询:order by 排序字段列表
5、分页参数 :limit 分页参数
DQL --基本查询
1、查询多个字段
select 字段1,字段2,字段3··· from 表名;
或者
select * from 表名;
2、设置别名
select 字段1 [as 别名1] , 字段2 [as 别名2] , ···from 表名;
注意:这里“as”可以省略不写就是直接在字段1 后面跟上别名1。
3、去除重复记录
select distinct 字段列表 from 表名;
示例:我们用上一博客中创建的emp表进行演示。
注意:这里我将emp表修改名字为employee
alter table emp rename to employee;
首先我们查询employee表中的workaddress,
select workaddress from employee;
我们会发现:有很多重复项,我们接下来用 distinct关键字进行去重。
我们用distinct关键字进行查询employee表中的workaddress。
select distinct workaddress from employee;
我们得到的返回结果为:
演示结束,可以明白“distinct”是去重的关键字。
DQL --条件查询
语法:
select 字段列表 from 表名 where 条件列表;
补充: --运算符
1、 比较运算符
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<>或者 != 不等于
between...and... 在某个范围内(含最小,最大值)
in(...) 在in之后的列表中的值多选一
like 占位符 模糊匹配(_ 是匹配单个字符,%是匹配任意个字符)
is null 是NULL
2、逻辑运算符
and 或 && 并且(多个条件同时成立)
or 或 || 或者(多个条件任意一个成立)
not 或者 ! 非,不是
练习:
1、查询年龄为88岁的员工信息
2、查询年龄小于20岁的员工信息
3、查询年龄小于且等于20岁的员工信息
4、查询idcard为null的员工信息
5、查询年龄不是88岁的员工信息
(以上俩种方式都可以)
6、查询年龄在15~20岁的员工信息
(以上两种方法都可以)
7、查询年龄小于25岁的女员工信息
8、查询年龄为18、20、40岁的员工信息
9、查询员工名字是两个字的员工信息
(这里注意一下下划线是两个因为版本的问题,所以显示的像一个)
10、查询idcard最后位为“8”的员工信息
这里十个练习大家可以自己做一下,试着操作一下。
DQL --聚合函数
1、介绍
聚合函数就是将一列数据作为一个整体,进行纵向计算。
2、常见聚合函数
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
注意:null值不参与所有聚合函数运算
语法:
select 聚合函数(字段列表) from 表名;
示例:
1、统计员工人数
2、统计员工年龄最大值
3、统计员工年龄最小值
4、统计年龄平均值
5、统计年龄都加起来为多少
DQL --分组查询
1、语法
select 字段列表 from 表名 [where 条件] group by 分组字段名[having 分组后过滤条件];
示例:
-- 统计员工男女数量
-- 统计地区分组后的数量
-- 统计年龄小于45岁的员工在同一个地区多于3个人的地区名字及数量
2、having 和 where 的区别
>执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤
>判断条件不同:where 不能对聚合函数进行判断,而having可以。
注意:在上面示例中存在执行顺序的前后,
where > 聚合函数 > having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
DQL --排序查询
1、语法
select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2;
2、排序方式
>ASC :升序(默认项)
>DESC :降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
示例:
1、按照年龄进行升序排列
2、按照入职日期降序排列
3、按照年龄进行升序排列如果年龄相同的话再按照入职日期进行降序排列
DQL --分页查询
1、语法
select 字段列表 from 表名 limit 起始索引 ,查询记录数;
在这里说明一下起始索引:
起始索引是从0 开始,起始索引=(查询页码-1)* 每页显示记录数
另外,分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是limit
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
示例:
1、查询第一页数据
2、查询第二页数据
拓展 -- DQL的执行顺序
先说编写顺序,编写顺序就是写sql语句时的输入语句:
select
(聚合函数)
from
where
group by ... having
order by
limit
然后再说一下执行顺序:
from
where
(聚合函数)
group by ... having
select
order by
limit
总结:
这次的整理把DQL语句整理结束,大家可以根据示例进行练习。最后,后续我会继续更新,同时也希望大家多多包涵,同时有需要改正的地方,希望大家积极的在评论区留言,不胜感激。另外,有什么问题,也可以在评论区留言,我看到也会回复给大家。
未完···待续···