#子查询
#一、含义:
嵌套在其他语句内部的 SELECT 语句称为查询或内查询,
外面的语句可以是 INSERT、DELETE、SELECT等,一般 SELECT 语句作为外部语句较多
外面如果为 SELECT 语句,则此语句称为外查询或主查询
#二、分类
#1.按出现的位置
SELECT 后面:
仅仅支持标量子查询
FROM 后面
表子查询
WHERE 或 HAVING 后面
标量子查询
行子查询
列子查询
EXISTS 后面
标量子查询
行子查询
列子查询
表子查询
#2.按结果集的行列
标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列
#三、实例
WHERE 或 HAVING 后面
#1.标量子查询
#案例:查询最低工资的员工姓名和工资
# ① 最低工资
SELECT MIN(salary) FROM employees
# ② 查询员工的姓名和工作,要求工资 = ①
SELECT last_name,salary
FROM employees
WHERE salary =(
SELECT MIN(salary) FROM employees
);
#2.列子查询
#案例:查询所有是领导的员工姓名
# ① 查询所有员工的 manager_id
SELECT manager_id
FROM employees
# ② 查询姓名,employees_id 属于 ① 列表中的一个
SELECT last_name
FROM employees
WHERE employees_id IN (
SELECT manager_id
FROM employees
);
#分页查询
#一、应用场景
当要查询的条目数太多,一页显示不全
#二、语法
SELECT 查询列表
FROM 表
LIMIT【OFFSET,】size;
#注意:
OFFSET 代表的是起始的条目索引,默认从 0 卡死
size 代表要显示的条目数
#公式:
假如要显示的页数为 page,每一页的条目数为 size
SELECT 查询列表
FROM 表
LIMIT (page-1)*size,size;
#例题1:查询工资最低的员工信息:last_name,salary
# ① 查询最低工资
SELECT MIN(salary)
FROM employees
# ② 查询 last_name,salary,要求 salary = ①
SELECT la