本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;
1、集合运算
集合定义:记录的集合,如表、视图、查询的执行结果
元素:表或者查询结果中的每一行
集合运算符:union,intersect,except---将检索结果进行并、交和差运算
2、表的加法—unIon(并集)
UNION 等集合运算符通常都会除去重复的记录
具体用法:sql语句 union sql语句
union 与or谓词区别:union能将两个不同的表中的结果合并在一起
保留重复行的集合运算union all
UNION 会对两个查询的结果集进行合并和去重
去重-----去掉两个结果集相互重复的 和 去掉一个结果集中的重复行
bag模型与set模型:类似的一种数学结构,不一样的地方:bag里面允许存在重复元素,
bag并运算规则:
1.该元素是否至少在一个 bag 里出现过,
2.该元素在两个 bag 中的最大出现次数
bag 的交运算规则:
1.该元素是否同时属于两个 bag,
2.该元素在两个 bag 中的最小出现次数
隐式类型转换(类型不完全相同时)
注意:mysql8.0不支持交运算intersect
intersect的运算语法:sql语句 intersect sql语句
3、差集、补集与表的减法
注意:mysql8.0还不支持except运算
except与not 谓词:
使用 NOT IN 谓词, 基本上可以实现和SQL标准语法中的EXCEPT运算相同的效果
except all 与bag 的差
类似于UNION ALL, EXCEPT ALL 也是按出现次数进行减法, 也是使用bag模型进行运算.
对于两个 bag, 他们的差运算会按照:
1.该元素