MySQL数据库——数据库的查询(DQL)
Posted 叶不修233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库——数据库的查询(DQL)相关的知识,希望对你有一定的参考价值。
mysql数据库——数据库的查询(DQL)
DQL——Data Query Language,数据库查询语言
一、单表查询
1. 展示表结构(即定义的字段类型等)
- 格式:【DESC 表名;】
- 举例:DESC students;
- 结果:如图所示
2. 展示表数据
(1)展示全表数据
- 格式:【SELECT * FROM 表名;】
- 举例:SELECT * FROM students;
- 结果:如图所示
(2)展示表中指定字段数据
- 格式:【SELECT 字段1,……,字段n FROM 表名;】
- 举例:SELECT NAME FROM students;
- 结果:如图所示
(3)展示表中指定字段等于指定值数据
- 格式:【SELECT * FROM 表名 WHERE 字段=值;】
- 举例:SELECT * FROM students WHERE Id=2;
- 结果:如图所示
(4)带BETWEEN AND查询
- 格式:【SELECT * FROM 表名 WHERE 字段 BETWEEN 值1 AND 值n;】——查询结果包含值1和值n
- 举例:SELECT * FROM students WHERE Id BETWEEN 1 AND 3;
- 结果:如图所示
(5)带IN关键字的查询
- 格式:【SELECT * FROM 表名 WHERE NAME IN(‘值1’,……,‘值n’);】——查询结果包含值1和值n
- 举例:SELECT * FROM students WHERE NAME IN(‘张三’,‘李四’);
- 结果:如图所示
(6)带LIKE的字符匹配查询
(6-1)以*为匹配符(匹配结果不限长度)
- 格式:【SELECT * FROM 表名 WHERE 字段名 LIKE ‘值%’;】——以‘值’开头的模糊查询
- 举例:SELECT * FROM students WHERE NAME LIKE ‘张%’;
- 结果:如图所示
- 格式:【SELECT * FROM 表名 WHERE 字段名 LIKE ‘%值’;】——以‘值’结尾的模糊查询(举例及结果略)
- 格式:【SELECT * FROM 表名 WHERE 字段名 LIKE ‘%值%’;】——包含‘值’的模糊查询(举例及结果略)
(6-2)以_为匹配符(下划线的个数即为匹配长度)
- 格式:【SELECT * FROM 表名 WHERE 字段名 LIKE ‘值_’;】——以‘值’开头的模糊查询
- 举例:SELECT * FROM students WHERE NAME LIKE ‘张_’;
- 结果:如图所示,成功查询到字段【Name】以‘张’开头的数据
- 结果:如图所示,没有查询到字段【Name】以‘张’开头,‘张’后面有2个字符的数据
(7)用DISTINCT关键字去除结果中的重复行
- 格式:【SELECT DISTINCT 字段 FROM 表名;】
- 举例:SELECT DISTINCT Sex FROM students;
- 结果:如图所示,展示【Sex】字段的去重后结果
(8)用ORDER BY关键字对查询结果排序
(8-1)升序
- 格式:【SELECT * FROM 表名 ORDER BY 字段 ASC;】——不加ASC也会默认升序
- 举例:SELECT * FROM students ORDER BY Id ASC;
- 结果:如图所示
(8-2)降序
- 格式:【SELECT * FROM 表名 ORDER BY 字段 DESC;】
- 举例:SELECT * FROM students ORDER BY Id DESC;
- 结果:如图所示
(9)用GROUP BY关键字分组查询
(9-1)通过字段分组
- 格式:【SELECT * FROM 表名 GROUP BY 字段;】
- 举例:SELECT * FROM students GROUP BY Sex;
- 结果:如图所示,分组只会展示部分数据,所以分组一般会与汇总一起使用,即分类汇总
(9-2)通过字段分组,将分组数据汇总到括号内字段
- 格式:【SELECT *,GROUP_CONCAT(需汇总字段) FROM 表名 GROUP BY 需分组字段;】
- 举例:SELECT *,GROUP_CONCAT(NAME) FROM students GROUP BY Sex;
- 结果:如图所示,通过【Sex】字段分类,将分类结果汇总到【GROUP_CONCAT(NAME)】中
(10)用LIMIT限制查询结果的数量
(10-1)limit【n】
- 格式:【SELECT * FROM 表名 WHERE 条件 LIMIT 数字;】
- 举例:SELECT * FROM students WHERE Age=0 LIMIT 2;
- 结果:如图所示
(10-2)limit【m,n】
- 格式:【SELECT * FROM 表名 WHERE 条件 LIMIT 数字1,数字n】
- 举例:SELECT * FROM students WHERE Age=0 LIMIT 0,3
- 结果:如图所示,展示了从第0条开始的前3条数据
- 注:程序员计数规则,从0开始。即前三个数字是0,1,2而不是1,2,3
(11)带COUNT关键字的计数查询
- 格式:【SELECT COUNT(*) FROM 表名;】
- 举例:SELECT COUNT(*) FROM students;
- 结果:如图所示,表【students】中一共有3条数据
- 注:count括号内为*时,计数结果包括null行,括号内为具体字段时,计数结果不包含null行
(12)求和,最大值,最小值,平均值查询
- 格式:【sum()、max()、min()、avg()】
- 举例:SELECT SUM(Id),MAX(Id),MIN(Id),AVG(Id) FROM students;
- 结果:如图所示表【students】中【Id】字段的和,最大值,最小值,平均值被查询出来
……
待续
……
以上是关于MySQL数据库——数据库的查询(DQL)的主要内容,如果未能解决你的问题,请参考以下文章