MySQL基础——DQL语句

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

DQL语句

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

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

MySQL基础——DQL语句

数据表数据如下:

MySQL基础——DQL语句

基本查询

基本查询语法格式如下:

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

示例代码如下:

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

如下图所示:

MySQL基础——DQL语句

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

SELECT DISTINCT 字段列表 FROM 表名;

示例代码如下:

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

如下图所示:

MySQL基础——DQL语句

条件查询

条件查询语法格式如下:

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有小的数据

如下图所示:

MySQL基础——DQL语句

聚合函数

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

  • count:统计数量;
  • max:最大值;
  • min:最小值;
  • avg:平均值;
  • sum:求和。

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

语法格式如下:

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

示例代码如下:

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

如下图所示:

MySQL基础——DQL语句

分组查询

分组查询语法格式如下:

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

如下图所示:

MySQL基础——DQL语句

排序查询

排序查询语法格式如下:

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降序排序

如下图所示:

MySQL基础——DQL语句

分页查询

分页查询语法格式如下:

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

注意:

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT;
  • 当查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10。

示例代码如下:

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

如下图所示:

MySQL基础——DQL语句

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

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

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

– END –


原文始发于微信公众号(白巧克力LIN):MySQL基础——DQL语句

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/222747.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!