第一部分:表的加法
- 合并去重后的表:union
- 合并保留重复行的表:union all
文氏图:加法 union
第二部分:表的联结
- 交叉联结-cross join on :笛卡尔积-表1 n行n列,表2 m行m列- 表1和表2 联结成n+m行n*m列
- 内联结-inner join on :查找出同时存在两张表中的数据。先取出符合条件的行,然后交叉联结。
- 外联结:左联结-left join 和右联结- right join
- 左联结:以左边的表为主表,先把左表全部取出,再取出右边符合条件的行,最后交叉联结。
- 右联结:以右边的表为主表,先把右表全部取出,再取出左边符合条件的行,最后交叉联结。
- 全联结:full join: 返回左表和右表中的所有行,若某行和另一个表有匹配的行,则此行会合并,其他不匹配的则返回对应的行。
内联结-inner join
左联结-left join
左联结不包含公共部分
第三部分:联结应用案例
左联结应用
第四部分:case表达式
case when <>ther<>---------------------1
when <>ther<>---------------------2
when <>ther<>
.................
else<>
end
满足1 执行end, 若1 不满足,会执行2,2满足,执行end,2若不满足,则以此类推,运行.......
总结:
- 以行为单位对表进行联结-union(并集)intersect(交集)except(差集)
-
- union -并集 union all--保留重复行--------------------------------增加记录行数
- intersect-交集-应用于两张表,选取出它们当中的公共记录-----------减少记录行数
- except-差集-A-B:选取A中除去AB交集部分------------------------------减少记录行数
-
集合运算就是对满足同一规则的记录进行加减等四则运算,通过集合运算可以得到两个表中记录的集合或者公共记录的集合,又或者其中某个表的记录的集合。
集合运算注意事项:
-
- 集合运算符会除去重复的记录
- 作为运算对象的记录的列数必须相同
- 作为运算对象的记录中列的类型必须一致
- 可以使用任何select语句,但是order by子句只能 在最后使用一次
- 以列为单位对表进行联结-inner join(内联结),outer join(外联结),cross join(交叉联结)
- inner join(内联结)----选取同时存在两张表中的数据
- outer join(外联结)----只要数据存在某一张表中就能读取出来,------可以得到固定行数的结果。分为左连接和右连接-区分主表
- cross join(交叉联结)----笛卡尔积,两张表中行数的乘积。
进行联结时需要在FROM子句中使用多张表;进行内连接时必须使用ON子句,并且书写在from和where之间;使用联结时select子句中的列需要按照<表的列名>.<别名>的格式进行书写。
复习sql的运行顺序:
from- where- group by- having- select- order by- limit