暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL-第七章

EGG IXD 2021-06-22
223


7.1 表的加减法



表的加法-UNION(并集):

SELECT <列名>,……

FROM <表名>

UNION

SELECT <列名>,……

FROM <表名>

注:

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

作为运算对象的记录的列数必须相同。

作为运算对象的记录中列的类型必须一致(可用CAST转换类型)。

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


包含重复行的集合运算-All选项:

SELECT <列名>,……

FROM <表名>

UNION ALL

SELECT <列名>,……

FROM <表名>

注:在集合运算符中使用ALL选项,可保留重复行。


选取表中公用部分-INTERSECT(交集):

注:MySQL尚不支持INTERSECT,所以无法使用。


记录的减法——EXCEPT

注:MySQL还不支持EXCEPT,因此也无法使用



7.2 联结(以列为单位对表进行联结)



内联结——INNER JOIN:

SELECT < 别名 >.< 列名 >, < 别名>.< 列名 >, ...

FROM < 表名 > AS < 别名 > INNER JOIN  < 表的别名 > AS < 别名 >

ON < 别名 >.< 列名 > = < 别名>.< 列名 >

注:

进行联结时需要在FROM子句中使用多张表。

进行内联结时必须使用ON子句,并且要书写在FROM和WHERE之间。

使用联结时SELECT子句中的列需要按照“<表的别名>.<列名>”的格式进行书写。


外联结——OUTER JOIN:

SELECT < 别名 >.< 列名 >, < 别名>.< 列名 >, ...

FROM < 表名 > AS < 别名 > OUTER JOIN  < 表的别名 > AS < 别名 >

ON < 别名 >.< 列名 > = < 别名>.< 列名 >

注:

外联结选取出单张表中全部的信息。

外联结中使用LEFT、 RIGHT来指定主表。使用二者所得到的结果完全相同。使用 LEFT 时 FROM 子句中写在左侧的表是主表,使用 RIGHT时右侧的表是主表。


3张以上的表的联结:

SELECT < 别名 >.< 列名 >, < 别名>.< 列名 >, ...

FROM < 表名 > AS < 别名 > INNER JOIN  < 表的别名 > AS < 别名 >

ON < 别名 >.< 列名 > = < 别名>.< 列名 >

INNER JOIN  < 表的别名 > AS < 别名 >

ON < 别名 >.< 列名 > = < 别名>.< 列名 >;

注:想要把联结的表增加到 4 张、 5 张……使用 INNER JOIN 进行添加的方式也是完全相同的。


交叉联结——CROSS JOIN(笛卡儿积):

SELECT < 别名 >.< 列名 >, < 别名>.< 列名 >, ...

FROM < 表名 > AS < 别名 > CROSS JOIN   < 表的别名 > AS < 别名 >;

注:

交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积。

交叉联结时无法使用内联结和外联结中所使用的 ON 子句。

交叉联结结果没有价值,结果行多,需要大量运算时间和高性能设备支持。




end




文章转载自EGG IXD,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论