一、表的加法
union
将表按照行加起来,如无特殊要求会自动删除重复数据
union all 保留全部的行
二、表的联结
表之间通过列产生关系,并联结在一起 jion联结
1.交叉联结 又称笛卡尔积 cross jion
表中的每一行分别与另一个表中的每一行联结起来
表1 m行 表2 n行 则交叉联结表有m*n行
2.内联结 inner jion
以查找出同时存在于两张表中的数据为准
3. 左联结 left join
以左表为主表,以左表的数据为主
4.右联结 right join
以右表为主,全部取出右表对应的数据
5.全联结 full join
返回左右两个表中所有行
能匹配的合并,不能匹配的用null填充
MySQL不支持全联结
若要求某张表的数据,即以某张表的数据为准,采用左联结/右联结;
要求以两张表的公共部分为准时,采用内联结
三、联结的业务问题
比如3张表联结 多个join两两联结
四、case表达式
条件判断函数
case when then
...
else
end
每次运行只返回一个结果
注意:
else子句可省略,但是养成好习惯
case表达式可用于任意位置
end不能省略
需要条件判断时,使用case 表达式
典型例子:自定义分组
group by用多个列来分组时,这几个列的值全部相同才算一组
因此,只有一一对应的列名才能多个列分组而没有额外影响
在需要分组时,select 里的列名只能是group by子句里的列名
五、总结