DQL---子查询

一、含义

嵌套在其他语句内部的select语句称为子查询或内查询。
外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多。
外面如果为select语句,则此语句称为外查询或主查询。

二、分类

1.按出现的位置

select后面:仅仅支持标量子查询
from后面:表子查询、
where或having后面:标量子查询、列子查询、行子查询
exists后面:标量子查询、列子查询、行子查询、表子查询

2.按结果集的行列

标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为一行多列或多行多列
表子查询:结果集为多行多列

三、示例

在这里插入图片描述

where后面标量子查询使用

查询最低工资的员工姓名和工资

①查询最低工资

SELECT MIN(salary) 
FROM empoloyees;

②查询员工的姓名和工资,要求工资=①

SELECT last_name,salary
FROM employees
WHERE salary=(
	SELECT MIN(salary) 
	FROM employees
);

where后面列子查询使用

使用多行比较操作符
IN / NOT IN:等于列表中的任意一个
ANY / SOME:和子查询返回的某一个值比较
ALL:和子查询返回的所有值比较

查询 location_id是1400或1700的部门中的所有员工姓名

①查询 location_id是1400或1700的部门编号

SELECT DISTINCT department_id
FROM departments
WHERE location_id IN (1400,1700)

②查询员工姓名,要求部门号是①列表中的某一个

SELECT last_name
FROM employees 
WHERE department_id IN (

	SELECT DISTINCT department_id
	FROM departments
	WHERE location_id IN (1400,1700)

);

select后面的子查询使用

查询每个部门的员工个数

SELECT d.*,(
	SELECT COUNT(*)
	FROM employees e
	WHERE e.department_id = d.department_id
) 个数
FROM departments d;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值