概念
出现在其它语句(增删改查)中的查询语句,以select为例。
分类
①按出现位置:
⑴.select后面:
仅支持标量子查询(结果集只有一行一列)。
⑵.from后面:
支持表子查询(结果集多行多列)。
⑶.where或having后面:
标量子查询、列子查询、行子查询。
⑷.exists后面:(相关子查询)
表子查询。
②按结果集行列数:
⑴.标量子查询(结果集一行一列),配合单行操作符使用:> < = >= <= <>
⑵.列子查询(结果集只有一列多行),配合多行操作符使用 in any/some all
⑶.行子查询(结果集有一行多列)。
⑷.表子查询(结果集一般多行多列)。
标量子查询示例:
例:查询谁的工资比’Abel’高?
①.查询’Abel’的工资。
SELECT salary
FROM employees
WHERE last_name = 'Abel'
②.查询满足条件的员工信息。
SELECT *
FROM employees
WHERE salary > (
SELECT salary
FROM employees
WHERE last_name = 'Abel'
);
结果
列子查询示例:
例:查询location_id是1400或1700的部门中所有员工姓名。
①.查询location_id是1400或1700的部门编号。
SELECT department_id
FROM departments
WHERE location_id in (1400,1700)
②.查询部门编号是①中的员工姓名。
SELECT last_name
FROM employees
WHERE department_id in (
SELECT department_id
FROM departments
WHERE location_id in (1400,1700)
);
分页查询及DQL
应用场景:页面中要显示的数据过多,一页显示不完,需要分页提交sql请求。
SELECT 查询列表 ⑦
FROM 表名 ①
[join type] JOIN 表2 ②
ON 连接条件 ③
WHERE 筛选条件 ④
GROPE BY 分组条件 ⑤
HAVING 分组后筛选条件 ⑥
ORDER BY 排序字段 ⑧
LIMIT [(page - 1) * size],size ⑨