SQL4

Task04: 集合运算

4.1 表的加法——UNION
1.UNION对表求并集时会除去重复数据,如果想要不去重合并两表,则使用UNION ALL
2. 隐式类型转换:
通常来说, 我们会把类型完全⼀致, 并且代表相同属性的列使⽤ UNION 合并到⼀起显示, 但有时候, 即使数据类型不完全相同, 也会通过隐式类型转换来将两个类型不同的列放在⼀列⾥显示,。

4.2 表的减法
目前MySQL8.0不支持表的减法EXCEPT,不过我们可以使用NOT IN实现减法。

4.3 表的连结JOIN
连结( JOIN)就是使⽤某种关联条件(⼀般是使⽤相等判断谓词"="), 将其他表中的列添加过来,进⾏“添加列”的集合运算.

  1. 内连结(INNER JOIN)
    – 内连结
    FROM <tb_1> INNER JOIN <tb_2> ON <condition(s)>
    要点⼀: 进⾏连结时需要在 FROM ⼦句中使⽤多张表.
    要点⼆:必须使⽤ ON ⼦句来指定连结条件.
    要点三: SELECT ⼦句中的列最好按照 表名.列名 的格式来使⽤.

  2. 结合 WHERE ⼦句使⽤内连结
    如果需要在使⽤内连结的时候同时使⽤ WHERE ⼦句对检索结果进⾏筛选, 则需要把 WHERE⼦句写在 ON ⼦句的后边.

  3. 结合 GROUP BY ⼦句使⽤内连结
    结合 GROUP BY ⼦句使⽤内连结, 需要根据分组列位于哪个表区别对待.最简单的情形, 是在内连结之前就使⽤ GROUP BY ⼦句.但是如果分组列和被聚合的列不在同⼀张表, 且⼆者都未被⽤于连结两张表, 则只能先连结, 再聚合.

  4. ⾃连结(SELF JOIN)
    之前的内连结, 连结的都是不⼀样的两个表. 但实际上⼀张表也可以与⾃身作连结, 这种连接称之为⾃连结. 需要注意, ⾃连结并不是区分于内连结和外连结的第三种连结, ⾃连结可以是外连结也可以是内连结, 它是不同于内连结外连结的另⼀个连结的分类⽅法.

  5. ⾃然连结(NATURAL JOIN)
    ⾃然连结并不是区别于内连结和外连结的第三种连结, 它其实是内连结的⼀种特例–当两个表进⾏⾃然连结时, 会按照两个表中都包含的列名来进⾏等值内连结, 此时⽆需使⽤ ON 来指定连接条件.

  6. 外连结(OUTER JOIN)
    内连结会丢弃两张表中不满⾜ ON 条件的⾏, 和内连结相对的就是外连结. 外连结会根据外连结的种类有选择地保留⽆法匹配到的⾏.按照保留的⾏位于哪张表, 外连结有三种形式: 左连结, 右连结和全外连结.
    1)左连结会保存左表中⽆法按照 ON ⼦句匹配到的⾏, 此时对应右表的⾏均为缺失值;
    2)右连结会保存右表中⽆法按照 ON ⼦句匹配到的⾏, 此时对应左表的⾏均为缺失值;
    3)全外连结会同时保存两个表中⽆法按照 ON ⼦句匹配到的⾏, 相应的另⼀张表中的⾏⽤缺失值填充.
    三种外连结的对应语法分别为:
    – 左连结
    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)>

●外连结要点 1: 选取出单张表中全部的信息
●外连结要点 2:使⽤ LEFT、RIGHT 来指定主表.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值