集合运算

    所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算,通过集合运算,可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。像这样的用来进行集合运算的运算符称为集合运算符

    • 集合运算符 会 除去重复的记录
    • 作为运算对象的记录的列数必须相同,相同位置上的列 必须是 同一数据类型

    **

    UNION

    SELECT product_id, product_name
    FROM Product
    UNION
    SELECT product_id, product_name
    FROM Product 2;

    • 可以使用任何SELECT语句,但 ORDER BY 子句只能在最后使用一次

    **
    SELECT product_id, product_name
    FROM Product
    WHERE product_type = ‘厨房用具’
    UNION
    SELECT product_id, product_name
    FROM Product 2
    WHERE product_type = ‘厨房用具’
    ORDER BY product_id;


    包含重复行的 集合运算- ALL选项
    **
    SELECT product_id, product_name
    FROM Product
    UNION ALL
    SELECT product_id, product_name
    FROM Product 2;


    选取表中公共部分,结果中只包含两张表中记录的公共部分
    **
    INTERSECT应用于两张表,选取出它们当中的公共记录

    一般不重复记录,希望保留重复行时同样需要使用 INTERSECT ALL


    EXCEPT 是从一个圈中 剔除 与另一个圈的相交部分

    SELECT product_id, product_name
    FROM Product
    EXCEPT
    SELECT product_id, product_name
    FROM Product 2
    ORDER BY product_id;

    在ORACLE 中则用 MINUS 替代

    SELECT product_id, product_name
    FROM Product
    MINUS
    SELECT product_id, product_name
    FROM Product 2
    ORDER BY product_id;