DQL 数据查询语言
Data Query Language
数据查询语言,用来查询数据库中表的记录
1、基本语法
-- 语法 SELECT [ALL | DISTINCT] * | 字段1 , 字段2 , ...... FROM 表1 [as 别名] [left | right | inner join 表2] -- 联合查询 [WHERE ...] -- 指定结果需满足的条件 [GROUP BY ...] -- 指定结果按照哪几个字段来分组 [HAVING] -- 过滤分组的记录必须满足的次要条件 [ORDER BY ...] -- 指定查询记录按一个或多个条件排序 [LIMIT {[offset,]row_count | row_countOFFSET offset}]; -- 指定查询的记录从哪条至哪条
2、基本查询
-- 查看全部数据 SELECT * FROM student;
3、条件查询
-- 条件查询 SELECT * FROM student WHERE Sno = '152022001';
4、聚合函数
只能用在select、group by和having语句中,不能用在where语句中,这与几个关键字的执行顺序有关。
COUNT() -- 统计个数 MAX() -- 最大值 MIN() -- 最小值 SUM() -- 求和 AVG() -- 平均值
5、分组查询
-- 分组查询 SELECT Sdept FROM student GROUP BY Sdept HAVING count(*) >= 10;
6、连接查询
7、排序和分页
-- 排序展示 SELECT * FROM student WHERE Ssex = '男' ORDER BY Sno LIMIT 10;
8、子查询
一条select查询语句中包含另外一条select查询语句
8.1、WHERE子查询
子查询出现where条件中,跟在where语句后面充当查询条件,每执行一次where条件筛选,就会进行一次子查询,效率低下。像这种反复子查询就属于相关子查询,where语句的子查询都属于相关子查询
8.2、FROM子查询
子查询跟在from之后,通常这种子查询的结果集作为一个临时表,from子查询只会执行一次,不是相关子查询,所以查询效率高。
8.3、SELECT子查询
子查询跟在SELECT之后,SELECT子查询也是相关子查询,不推荐
9、select语句中各关键字执行顺序
- from [on , join]
- where (可以使用表的别名)
- group by (可以开始使用select中字段的别名(不是表的别名)后面的语句中都可以使用)
- having [聚合函数]
- select
- distinct
- order by
- limit
1 ~ 1 选择表
2 ~ 4 筛选条件
5 ~ 8 展示