📑集合运算
集合运算就是对满足同一规则的记录进行的加减等四则运算。
👉 对行数进行增减。
📃UNION
取并集
集合运算符会去除重复的记录
SELECT product_id, product_name
FROM Product
**UNION**
SELECT product_id, product_name
FROM Product2;
注意:
- 作为运算对象的记录的列数必须相同
- 作为运算对象的记录中的列类型必须一致
- 可以使用任何SELECT语句,但是ORDER BY子句只能在最后使用一次
🌼UNION ALL
保留重复行
📃INTERSECT
取交集
SELECT product_id, product_name
FROM Product
**INTERSECT**
SELECT product_id, product_name
FROM Product2
ORDER BY product_id;
📃EXCEPT(MINUS)
注:ORACLE
中是 MINUS
取差集
注意被减数和减数的位置。
-- 从Product中减去Product2的内容
SELECT product_id, product_name
FROM Product
**EXCEPT**
SELECT product_id, product_name
FROM Product2
ORDER BY product_id;
📑联结
以列为单位对表进行联结,就是进行添加列的操作
👉 对列数进行操作
📃INNER JOIN
SELECT < 表1的别名 >.< 列名1 >,< 表2的别名 >.< 列名2 >
FROM <表1>
INNER JOIN <表2>
ON <条件1> = <条件2> -- ON后面的是联结键
📃LEFT JOIN
即使右表中没有匹配,也从左表返回所有的行 如果右表中没有匹配的行,则用null填补。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.id_P = Orders.id_P
ORDER BY Persons.LastName
📃RIGHT JOIN
即使左表中没有匹配,也从右表返回所有的行
SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
📃CROSS JOIN(不经常使用)
交叉联结
也就是笛卡尔积
进行交叉联结时无法使用内联结和外联结中所使用的 ON 子句, 这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中 的记录数通常是两张表中行数的乘积。