MySQL基础——DQL语句

本文详细介绍了MySQL中的DQL语句,包括基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询。通过实例展示了如何使用DQL进行数据操作,如使用LIKE进行模糊匹配,利用GROUP BY和HAVING进行分组过滤,以及ORDER BY和LIMIT进行排序和分页。了解这些基础知识对于数据库查询至关重要。
摘要由CSDN通过智能技术生成

目录

DQL语句

基本查询

条件查询

聚合函数

分组查询

排序查询

分页查询

在上篇文章中,我们学习了MySQL基础——DML语句,这篇文章学习MySQL基础——DQL语句。

DQL语句

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库中的表的记录。

接下来的代码演示使用数据表结构如下:

数据表数据如下:

基本查询

基本查询语法格式如下:

# 查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名;          #查询字段1,字段2,字段3的数据
SELECT * FROM 表名;                          #查询数据表中所有字段的数据

示例代码如下:

SELECT uname,upwd,usex FROM students;       # 查询字段为uname ,upwd,usex 的所有数据
SELECT * FROM student;                     # 查询数据表中所有字段的数据

如下图所示:

当我们需要去除重复的查询结果时,可以使用DISTINCT关键字,语法格式如下:

SELECT DISTINCT 字段列表 FROM 表名;

示例代码如下:

SELECT DISTINCT uname,upwd,usex FROM students;      # 查询字段为uname ,upwd,usex 的所有数据并去重
SELECT DISTINCT * FROM students;                   # 查询数据表中所有字段的数据并去重

如下图所示:

条件查询

条件查询语法格式如下:

SELECT 字段列表 FROM 表名 WHERE 条件列表

我们可以选择如下表的条件:

条件运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(...)在in之后的列表中的值,多选1
LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL是NULL
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者 (多个条件任意一个成立)
NOT 或 !非,不是

示例代码如下:

SELECT * FROM students WHERE usex!='男';                 # 查询数据表中usex不等于男的数据
SELECT * FROM students WHERE uname LIKE '小_';           # 查询数据表中uname有小的数据

如下图所示:

聚合函数

将一列数据作为一个整体,进行纵向计算,常见的聚合函数有:

  • count:统计数量;

  • max:最大值;

  • min:最小值;

  • avg:平均值;

  • sum:求和。

注意:所有的聚合函数都不计算NULL值。

语法格式如下:

SELECT 聚合函数(字段列表) FROM 表名;

示例代码如下:

SELECT count(*) FROM students;          # 统计数据表中数据总条数
SELECT sum(uid) FROM students;          # 求数据表中uid的和

如下图所示:

分组查询

分组查询语法格式如下:

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];  

WHERE与HAVING区别:

  • 执行时间不同:WHERE是分组之前进行过滤,不满足WHERE条件,不参与分组;而HAVING是分组之后对结果进行过滤;

  • 判断条件不同:WHERE 不能对聚合函数进行判断,而HAVING可以。

注意:

  • 执行顺序:WHERE>聚合函数>HAVING;

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

示例代码如下:

SELECT usex, count(*) FROM students GROUP BY usex;				# 以usex为分组条件查询所有数据
SELECT usex, avg(uid) FROM students WHERE uid>4 GROUP BY usex; 	  #以usex为分组条件查询uid大于4数据
SELECT usex, count(*) FROM students GROUP BY usex HAVING count(*)>4;  # 以usex为分组条件查询uid大于4且总数大于4

如下图所示:

排序查询

排序查询语法格式如下:

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

排序方式有:

  • ASC:升序(默认值);

  • DESC:降序;

注意:当多字段排序时,第一个字段值相同时,才会根据第二个字段进行排序。

示例代码如下

SELECT * FROM students ORDER BY uid ASC;	# 查询students数据表中所有数据并以uid升序排序
SELECT * FROM students ORDER BY uid DESC; # 查询students数据表中所有数据并以uid降序排序

如下图所示:

分页查询

分页查询语法格式如下:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意:

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;

  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT;

  • 当查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10。

示例代码如下:

SELECT * FROM students LIMIT 0,10;		#查询students数据表中第一页的十条数据
SELECT * FROM students LIMIT 10,10; 		#查询students数据表中第二页的十条数据

如下图所示:

由于第二页没有数据,所以输入为0。

DQL执行顺序:FROM -> WHERE ->GROUP BY -> HAVING -> SELECT ->ORDER BY ->LIMIT

好了,MySQL基础——DQL语句就学到这里了,下篇文章学习MySQL基础——DCL语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白巧克力LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值