集合
https://www.yuque.com/qinsjs/do88wm/ypgrouyo3e7o1ce4
LeanUser1 张三 王五 LeanUser2 李四 王五
UNION / 并集
sql
SELECT id,name FROM LeanUser1
UNION
SELECT id,name FROM LeanUser2;两个表的数据都会出现
INTERSECT / 交集
sql
SELECT id,name FROM LeanUser1
INTERSECT
SELECT id,name FROM LeanUser2;都有的数据才会出现
EXCEPT / 差值
sql
SELECT id,name FROM LeanUser1
EXCEPT
SELECT id,name FROM LeanUser2;LeanUser1 有 张三、王五 LeanUser2 有 李四、王五
LeanUser1 - LeanUser2 = 张三
差集将去除与对方相同的数据。
联结
别名不是必须,但是一个好习惯。
ON 为 联结键
INNER JOIN / 内联结
sql
select g.id,g.brand,g.model,info.storage,info.power,info.architecture
from GPU as g
INNER JOIN GPUInfo as info
ON g.id = info.gpu_id;内联结只会输出 满足条件 的结果。
比如 g 有,而 info 没有,就不会出现在 result 中。
OUTER JOIN / 外联结
sql
select g.id,g.brand,g.model,
info.storage,info.power,info.architecture
from GPU as g
LEFT OUTER JOIN GPUInfo as info
ON g.id = info.gpu_id;外联结需要指定 LEFT 或 RIGHT,为指定的表进行扩张。
CROSS JOIN / 交叉联结
sql
select g.id,g.brand,g.model,
info.storage,info.power,info.architecture
from GPU as g
CROSS JOIN GPUInfo as info;没有 ON !
结果非常多