SQL训练营--Task04:集合运算-表的加减法和join

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

关系数据库中使用集合运算,可以对表进行上下拼接和join拼接,使用不同的SQL语言能够达到不同的拼接效果,从而满足实际业务中对于数据的需要。

1 上下拼接--表的加减法

1.1 加运算

--表的上下拼接
SELECT <列名1>, <列名2>,...
FROM <表名>
WHERE <条件1>
UNION
SELECT <列名1>, <列名2>,...
FROM <表名>
WHERE <条件2>;

--等价语句
SELECT <列名1>, <列名2>,...
FROM <表名>
WHERE <条件1> OR <条件2>;

 UNION 等集合运算符通常都会除去重复的记录,如同图7-1所示的两个集合求并集。

UNION查询可以对不同的两张表进行求并集运算. 对于同一张表, 实际上也是可以进行求并集的.

对于同一个表的两个不同的筛选结果集, 使用 UNION 对两个结果集取并集, 和把两个子查询的筛选条件用 OR 谓词连接, 会得到相同的结果, 但倘若要将两个不同的表中的结果合并在一起, 就不得不使用 UNION 了.

而且, 即便是对于同一张表, 有时也会出于查询效率方面的因素来使用 UNION.

enter image description here

1.2 差运算

--同一个表的差运算,使用NOT IN和嵌套子查询
SELECT * 
  FROM product
 WHERE sale_price > 2000 
   AND product_id NOT IN (SELECT product_id 
                            FROM product 
                           WHERE sale_price<1.3*purchase_price)

å¾ç

1.3 对称差

两个集合A,B的对称差是指那些仅属于A或仅属于B的元素构成的集合。

-- 使用 NOT IN 实现两个表的差集
SELECT * 
  FROM product
 WHERE product_id NOT IN (SELECT product_id FROM product2)
UNION
SELECT * 
  FROM product2
 WHERE product_id NOT IN (SELECT product_id FROM product)

 2 JOIN 连接

å¾ç

-- 内连结两表
SELECT <列名>
FROM <tb_1> 
INNER JOIN <tb_2>
ON <condition(s)>;

--内连接三表
SELECT <列名>
FROM <tb_1> 
INNER JOIN <tb_2>
ON <condition(s)>
INNER JOIN <tb_2>
ON <condition(s)>;


-- 左连结     
FROM <tb_1> LEFT  OUTER JOIN <tb_2> ON <condition(s)>
-- 右连结     
FROM <tb_1> RIGHT OUTER JOIN <tb_2> ON <condition(s)>
-- 全外连结
FROM <tb_1> FULL  OUTER JOIN <tb_2> ON <condition(s)>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值