SQL基础学习_06_集合运算和联结

时间:2021-07-31 21:02:40

集合运算

1. 并集:UNION

    例:

    SELECT shohin_id, shohin_mei
    FROM Shohin
    UNION
    SELECT shohin_id, shohin_mei
    FROM Shohin2;

    将Shohin和Shohin2两张表的shohin_id和shohin_mei两列取并集;

    注意,UNION操作时,列数必须相等,且每列的数据类型应该相同

    保留重复行: UNION ALL

2. 交集:INTERSECT

    语法和UNION完全相同,但是取的是交集部分

3. 差集:EXCEPT

    语法和UNION完全相同,取第一张表中有,第二张表中没有的记录

表的联结

集合运算会改变记录数(行数),联结就是对两张表的列进行联结,改变的是列数

1. 内联结: INNER JOIN

    例:

    SELECT TS.tenpo_id, TS.tenpo_mei, TS.shohin_id, S.shohin_mei, S.hanbai_tanka
    FROM TenpoShohin AS TS INNER JOIN Shohin AS S
    ON TS.shohin_id = S.shohin_id

    SELECT子句指定需要连接的列,注意由于SELECT操作时间在FROM之后,所以FROM的别名在SELECT中有效;

    FROM子句指定两个表的名字,并且用INNER JOIN连接;

    ON 子句指定一个表达式,作为联结的桥梁,满足该表达式的记录会联结两个表中的相应列;

    内联结可以使用WHERE子句等SELECT语句进行删选;

2. 外联结: OUTER JOIN

    外联结相比内联结会显示只在主表中出现的记录;

    例:

    SELECT TS.tenpo_id, TS.tenpo_mei, S.shohin_id, S.shohin_mei, S.hanbai_tanka
    FROM TenpoShohin AS TS RIGHT OUTER JOIN Shohin AS S
    ON TS.shohin_id = S.shohin_id;

    外联结的语法和内联结基本相同,不同的是,外联结使用LEFT、RIGHT来指定主表,

    使用LEFT时,写在左侧的表为主表,使用RIGHT时,写在右侧的表为主表;

3. 联结三张表以上

    先联结其中的两张表为一张,依次操作直到最后做两张表的联结;

4. 交叉联结:CROSS JOIN

    交叉联结时,对左侧表和右侧表的每一个记录进行联结,生成一张比较长的表;(笛卡尔积)