目录
编辑
🤔前言:
🤔DQL介绍:
🤔查询种类:
1.基本查询:
🔍1.查询多个字段:
🔍2.查询所有字段:
🔍3.去除重复记录:
2.条件查询:
条件种类:
🔍1.比较查询:
🔍2.逻辑运算:
示例:
3.分组查询
语法:
where与having的区别:
示例:
重点:
4.排序查询
示例:
5.分页查询:
注意点:
示例:
结束!
🤔前言:
本篇将会进入较繁琐的一个语句操作:DQL操作,它种类繁多;有基础查询,条件查询,分组查询,分页查询,排序查询。因此我们要做好心理准备,常复习以前的知识点,才能更好的掌握SQL语言。
🤔DQL介绍:
DQL(Data Query Language)指的是在面向关系型数据库时,用于查询数据的语言。DQL语言包含了SELECT语句和相关子句,用于检索数据和对查询结果进行操作和管理。在SQL语言中,DQL语句是其中最常用的语句之一,一般也被称为查询语言。
🤔查询种类:
- 基本查询
- 条件查询(where)
- 聚合函数(count,max,min,avg,sum)
- 分组查询(group by)
- 排序查询(order by)
- 分页查询(limit)
1.基本查询:
我们预设一张填有信息的表,方便后面进行讲解:
🔍1.查询多个字段:
SELECT 字段1,字段2,字段3.....from 表名;
代码示例:
SELECT id,name from user_name;
运行结果:
我们只查询姓名和id,就只返回了姓名和id。
🔍2.查询所有字段:
select *from 表名;
代码示例:
SELECT *from user_name;
运行结果:
🔍3.去除重复记录:
SELECT DISTINCT 字段列表 FROM 表名;
代码示例:
select distinct age from user_name;
运行结果:
我们可以发现这次18岁只返回了一次。
2.条件查询:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件种类:
🔍1.比较查询:
-
> 大于
-
>= 大于等于
-
< 小于
-
= 等于
-
<>或!= 不等于
-
between and 在某个范围内(含最大值最小值)
- in(...)在in之后的列表中多选1匹配
- like 占位符 模糊匹配 _匹配单个字符,%d匹配任意个字符
- is null 是NULL;
🔍2.逻辑运算:
- and或&& 并且(多个同时成立)
- or或 || 或者(多个条件成立一个即可)
- not或! 非,不是
为了方便演示案例,我们再次向表中插入数据:
示例:
📖1.寻找年龄大于12岁的人
代码示例:(>)
SELECT id ,name,age FROM user_name WHERE age>12;
运行结果:
📖 2.寻找年龄在15到18岁之间的人(between and)
代码示例:
SELECT id ,name,age FROM user_name WHERE age between 15 and 18;
运行结果:
📖 3.寻找年龄是15或18岁的人(in(...))
代码示例:
SELECT id ,name,age FROM user_name WHERE age in(15,18);
运行结果:
📖 4.寻找年龄不是18岁的人
代码示例:
SELECT id ,name,age FROM user_name WHERE age !=18;
运行结果:
3.分组查询
预先展示数据:
语法:
SELECT 字段列表 FROM 表名 [where 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
where与having的区别:
- 执行时机不同:where是分组之前进行过滤,不满足where条件的不参与分组,而having是分组以后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,但是having可以。
示例:
📖1.根据性别分组,分别计算男女两组人数:
代码示例:
select count(*)from user_name group by gender;
运行结果:
📖 2.根据性别分组后,计算两组的平均年龄:
代码示例:
select avg(age)from user_name group by gender;
运行结果:
📖3. 查询年龄小于16岁的员工,并且根据性别分组,获取员工数量大于3的性别。
代码示例:
select gender ,count(*)from user_name where age<16 group by gender having count(*)>3;
运行结果:
重点:
- 执行顺序:where>聚合函数>having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有意义。
4.排序查询
SELECT 字段列表 form 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式只有两种:
- ASC 升序(默认值)
- DESC 降序
📖多字段的排序规则是只有第一个字段值相同的时候,才会根据第二个字段进行排序。
示例:
📖1.根据年龄对人员按照降序进行排序:
代码示例:
SELECT name,age from user_name order by age desc ;
运行结果:
5.分页查询:
SELECT 字段列表 from 表名 limt 起始索引,查询记录数;
注意点:
- 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMT。
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10;
示例:
📖1.查询第一页数据,每页展示十条记录
代码示例:
SELECT name,age from user_name limit 0,10
运行结果: