【SQL】作为前端,应该了解的SQL知识(第四弹)

集合运算

集合运算就是对满足同一规则的记录进行的加减等四则运算。

对行数进行增减。

UNION

取并集

集合运算符会去除重复的记录

SELECT product_id, product_name
 FROM Product
**UNION**
SELECT product_id, product_name
 FROM Product2;

【SQL】作为前端,应该了解的SQL知识(第四弹)_第1张图片

注意:

  1. 作为运算对象的记录的列数必须相同
  2. 作为运算对象的记录中的列类型必须一致
  3. 可以使用任何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;

【SQL】作为前端,应该了解的SQL知识(第四弹)_第2张图片

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;

【SQL】作为前端,应该了解的SQL知识(第四弹)_第3张图片

联结

以列为单位对表进行联结,就是进行添加列的操作

  对列数进行操作

【SQL】作为前端,应该了解的SQL知识(第四弹)_第4张图片

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 子句, 这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中 的记录数通常是两张表中行数的乘积

你可能感兴趣的:(SQL,数据库,sql,postgresql)