DQL英文全称是Data QueryLanguage(数据查询语言),用来查询数据库中表的记录
查询关键字:select
DQL主要包含以下操作
- 基本查询
- 条件查询
- 分组查询
一,基本查询
(一)查询指定字段
在select之后指定字段名,如果有多个则用逗号分隔,用于查询表中指定字段的数据
select 字段列表 from 表名;
在select之后使用【通配符*】,用于查询同一组数据中所有字段的数据
(说明:在实际项目开发中不建议使用【通配符*】的方式来查询所有字段
原因,一是不直观,二是效率不高
因此实际开发若需要查询所有字段时,最好手动罗列出所有字段)
select * from 表名;
(二)设置别名(as关键字)
在查询指定字段命令的基础上,在字段名后面添加【as 字段别名】,该选项用于让查询结果按照别名来显示对应的字段名
select 字段名1 as 字段1别名, 字段名2 as 字段2别名... from 表名;
且as关键字可以省略不写(即直接在字段名后面写上别名),不影响命令使用
select 字段名1 字段1别名, 字段名2 字段2别名... from 表名;
(三)去除重复记录(distinct关键字)
在查询指定字段命令的基础上,在select后面添加【distinct】关键字,该选项用于筛选查询结果,去除重复的数据
select distinct 字段列表 from 表名;
二,条件查询(where关键字)
在查询指定字段命令的基础上,在表名之后添加【where】关键字,该选项用于筛选满足条件的查询结果
select 字段列表 from 表名 where 条件;
条件归纳
其中,where条件是很多命令通用的,因此博主专门归纳了一篇,详见本篇->SQL语法-where关键字的条件解析-CSDN博客
三,分组查询(group by关键字)
聚合函数
分组查询常常配合聚合函数使用,聚合函数是什么呢?
聚合函数用于对数据进行汇总和计算,可以在SELECT语句中用于对数据进行统计和分析,帮助用户快速获取关键信息,例如总计、平均值、最小值和最大值等,常用的聚合函数包含以下几种:
(注:值为NULL的数据不参与聚合函数的运算)
- count():计算满足特定条件的行数
- sum():对指定列的总和进行计算
- avg():计算指定列的平均值
- max():返回指定列的最大值
- min():返回指定列的最小值
例如需要统计一张students表中地址为"四川"的数据的数量,可以使用命令【select count(address="四川") from students;】
分组查询语法
在查询指定字段命令的基础上,使用【group by】关键字将查询结果分组,值相同的会被分到同一组,例如按性别分组,最终结果就是男性一组、女性一组
(注:<尖括号>内的内容是可选项,<having 分组后过滤条件>用来对分组后的结果进行二次筛选
执行顺序:where > 聚合函数 > having,分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义)
select 字段列表 from 表名 <where 条件> group by 指定分组字段名 <having 分组后过滤条件>;
where与having区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
- 判断条件不同:where不能对聚合函数进行判断,而having可以
四,排序查询(order by关键字)
在查询指定字段命令的基础上,使用【order by】关键字对查询结果按照指定的字段来排序,其中排序方式的关键字分为两种:
- 升序:【asc】
select 字段列表 from 表名 limit 起始索引, 一页显示记录数;
- 降序:【desc】
select 字段列表 from 表名 order by 字段名1 排序方式1, 字段名2 排序方式2;
例如需要对年龄进行升序排序,如果年龄相同再进一步按照身高排序,可以使用命令【select * from users order by age asc, height desc;】,其中age asc会先按照年龄升序排,height desc会在年龄相同的基础上按照身高降序排
五,分页查询(limit关键字)
在查询指定字段命令的基础上,使用【limit】关键字对查询结果分页显示,可以指定一页的数据的显示数量
- 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
- 个人理解:所谓的起始索引(记作n)和查询记录数(记作m),可以看成是:从第n+1条数据开始,查询m条数据,最终显示的记录数等于或小于m(最后一页记录数可能不足m)
select 字段列表 from 表名 limit 起始索引, 查询记录数;
例如需要查询第一页的数据,每页显示10条记录,可以用命令【select * from users limit 0, 10】,因为是第一页,其中的起始索引0也可以省略不写
例如需要查询第二页的数据,每页显示10条记录,可以用命令【select * from users limit 10, 10】<-对于这个例子,可以按照公式【起始索引 = (查询页码 - 1)* 每页显示记录数】计算理解,也可以理解成从【第n+1条(第11条)数据开始,查询m条(10条)数据】,那么最终显示出来的记录的索引范围就是[10, 19](闭区间),即第11条到20条数据(如果存在的话)
六,DQL-编写顺序与执行顺序
因为DQL语句存在众多关键字,因此对编写顺序的规范以及执行顺序的逻辑要求严格
(图片来源->22. 基础-SQL-DQL-执行顺序_哔哩哔哩_bilibili视频2分10秒处)文章来源:https://www.toymoban.com/news/detail-829229.html
文章来源地址https://www.toymoban.com/news/detail-829229.html
到了这里,关于第八篇:SQL语法-DQL-数据查询语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!