【建议收藏】数据库 SQL 入门——数据查询操作(内附演示)
📚引言
在上一节中,我们讨论了DML的使用方法,本节我们继续开始DQL的学习。
首先回归一下DQL的基于定义:
DQL(Data Query Language) :数据查询语言,用来查询数据库中表的记录
在本节中我们主要讨论DQL的用法以及基本语法,话不多说,我们开始吧。
📖DQL语句
📃DQL-基本查询
数据查询的语句中包括了很多数据查询的操作,常用的DQL数据查询语法如下:
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
下面我们从基本的查询出发开始逐步介绍条件查询等内容。
🔖查询多个字段
想要查询多个字段可以使用下面的两种语法:
SELECT 字段1,字段2,字段3... FROM 表名; SELECT * FROM 表名;
其中,第一条语句可以选择其中的部分字段,而第二句可以查询所有的字段,其中*表示通配符全部。
下面我们进行实践,我们首先创建一个测试表格其中包括多条语句,下面是我创建的表。

当我们键入第二条语句时,可以看到所有的数据都已经被查询出来:

接下来我们根据第一句的语法,执行查询语句把所有的字段写到SQL语句中。

可以看到,所有的记录还是被查询出来了。
注意:在实际的开发中,最好不要撰写*通配符,而要把所有的字段都写上,因为这样更直观。
🔖设置别名
在实际查询的过程中,我们可以为字段设置别名。在合适的时间设置别名有助于我们对数据表的字段理解,设置别名的语句如下所示:
SELECT 字段1[AS 别名1],字段2[AS 别名2] ... FROM 表名;
例如,当我们想要查询上述的表格,但是我们希望为NAME设置别名USERNAME,可以按照如下的方式进行查询:

可以看到数据表中的字段已经被我们更改了别名。
🔖去除重复记录
在某些情况下,我们希望查询的记录中不要有重复的内容,就可以用下面的语句:
SELECT DISTINCT 字段列表 FROM 表名;
在这里本例就不做示范了。
📃DQL-条件查询
在条件查询中,有一个通用的语法如下:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
在WHERE后需要我们编写的是条件列表,可以撰写一些限制条件来满足我们不同的查询需求。
🔖查询条件运算符
当我们需要进行条件查询时,需要用到很多查询条件运算符,这就需要我们对不同的运算符功能做了解:
| 比较运算符 | 功能 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| != 或 | 不等于 |
| BETWEEN… AND… | 在某个范围之内(含最大、最小值) |
| IN(…) | 在in之后的列表中的值 |
| LIKE | 模糊匹配(_匹配单个字符,%匹配多个字符) |
| IS NULL | 是NULL |
除上述比较运算符外,我们需要一些逻辑运算符来进行逻辑查询的编写:
| 逻辑运算符 | 功能 |
|---|---|
| AND 或 && | 并且 |
| OR | 或者 |
| NOT 或 ! | 非,不是 |
📃DQL-聚合函数
将一列数据作为一个整理进行计算的函数
🔖常见的聚合函数
聚合函数可以帮助我们完成很多聚合的功能,常用的聚合函数如下:
| 函数 | 功能 |
|---|---|
| count | 统计数量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
🔖聚合函数的语法
SELECT 聚合函数(字段列表) FROM 表名;
注意:所有的聚合函数是不计算null值的
例如我们需要统计某表中的年龄书名,可以使用如下的操作:

而当我们输入进行*字段的count操作时却出现的如下的情况:

这就是因为上述的聚合函数在计算的过程中发现其他字段有4个所计算出来的结果,但是由于AGE字段中有一个null,所以计算出来为3。
📃DQL-分组查询
🔖分组查询的语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组过后的条件];
WHERE和HAVING的区别:
执行时机不同:WHERE是分组之前进行过滤,不满足WHERE条件,不参与分组;而HAVING是分组之后对结果进行过滤。
判断条件不同:WHERE不能对聚合函数进行判断,而HAVING可以。
🔖分组查询的例子
例如,我们有一张图书表格如下所示:

我们想查询两种图书种类的数量,可以按照下面的语句方式查询:

注意:
执行顺序: WHERE>聚合函数>HAVING
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有任何意义
📃DQL-排序查询
🔖排序查询的语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
排序方式:
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,与第一个字段值相同时,才会根据第二个字段进行排序。
🔖排序查询的例子
例如,我们想要按照升序对某员工表进行查询,我们可以使用如下的语句:

当我们希望年龄相同的员工的入职时间排降序的时候,可以按照下面的内容操作:

📃DQL-分页查询
🔖分页查询的语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT。
如果查询的是第一页数据,起始索引可以省略,直接简写为limit10。
🔖分页查询的例子
例如在一个数据表EMP中,我们想要使用第一页的十个数据,可以使用下面的操作:

这样就会返回第一页的十条数据,此时若我们想要查询第二页数据,可以使用

另外,不同的数据库中分页查询的实现是不同的,在mysql中实现是LIMIT。
📃DQL-执行顺序
数据查询的语句中包括了很多数据查询的操作,常用的DQL数据查询语法如下:
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
同时这也是我们编写DQL语句的顺序,但是执行顺序与编写顺序并不相同。
DQL语句的执行顺序为:
SELECT 4 字段列表 FROM 1 表名列表 WHERE 2 条件列表 GROUP BY 3 分组字段列表 HAVING 分组后条件列表 ORDER BY 5 排序字段列表 LIMIT 6 分页参数
我们在编写DQL语句的时候,要注意SQL的执行顺序,否则可能会导致最后的执行不成功。
📕总结
本次列举了SQL中DQL的相关语句,在实际学习的过程中还需要多学习以及使用才能熟练掌握。
余下的SQL内容我也将持续更新,如果感兴趣的话不妨订阅本专栏或者点个关注,我们下次再见。

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/f45326b2fc.html
