select查询(交、并、差、联表查询、子查询)

select-3

交、并、差运算

集合——一个表、或select后的结果等均可以看作是一个集合

并——粉色区域

a union b:
在这里插入图片描述

a union all b:

在这里插入图片描述

交——白色区域(‘‘两个人之间没有交集’’)

a intersect b:

在这里插入图片描述

差——白色区域

a minus b:

b minus a:

综合示例

--用交运算求emp表中工资大于2000的员工信息(不删除重复元素)
SELECT * from emp WHERE sal>3000
UNION ALL
SELECT * from emp WHERE sal>2000;
--用交运算求emp表中10部门和20部门的员工信息(删除重复元素)
SELECT * from emp WHERE sal>3000
UNION 
SELECT * from emp WHERE sal>2000;
--用并运算求emp表中工资大于800小于2000的数据
SELECT * from emp WHERE sal>800
intersect
SELECT * from emp WHERE sal<2000;
--求10部门员工信息差20部门员工信息
select * from emp where deptno=10
minus
select * from emp where deptno=20;
--求20部门员工信息差10部门员工信息
select * from emp where deptno=20
minus
select * from emp where deptno=10;

运行效果如下:

交:

在这里插入图片描述

并:

差:

注:

  • 交、并、差必须保证结果集的一致性,例如列的一致性等

联表查询

笛卡尔积(交叉连接)——行、列扩充

select 列名,... ,列名 from 表名1 CROSS JOIN 表名2;

注:

  • 笛卡尔积结果集的行数为表1行数*表2行数
  • 笛卡尔积结果集的列数为表1列数+表2列数

示例如下:

内连接——不显示不符合连接条件的数据

select 列名,... ,列名 from 表名1 inner JOIN 表名2 on 连接条件;

示例如下:

自连接——同一表连接同一表

select 列名,... ,列名 from1 别名 1 inner JOIN1  别名2 on 连接条件;

示例如下:


注:自连接格外注意两个表之间逻辑联系

不等连接——连接条件为不等条件(比较运算符)

示例如下:

全连接——查询出两个表数据,若连接条件对应不上则显示null

select 列名,列名,列名,....
from 表A full outer join 表B on 连接条件;

示例如下:

在这里插入图片描述

左外连接——显示左表全数据

select 列名,列名,...
from 表A left outer join 表B on 连接条件;

注:左外连接左边表数据中不符合规则也会显示出来

右外连接——显示右表全数据

select 列名,列名,列名,...
from 左表 right outer join 右表 on 连接条件

注:右外连接右边表数据中不符合规则也会显示出来

自然连接——自动连接数据类型和列名都相同的字段,然后返回符合条件的结果

select 列名,列名,...
from1 natural join2;

示例如下:

子查询

from后接select语句

select 列名 from (select语句);

where后接select语句

select 列名 from 表名 where 列名 比较运算符(><=)、in (select语句);

注:=与in的区别

  • =要求后接的select语句返回的结果集只能为一行,in可以有多行

在这里插入图片描述

having后接select语句

select 列名 from 表名 group by 列名 having 列名 比较运算符 (select语句);

select与from之间的select语句

select 列名,(select语句) from 表名;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值