MYSQL-第七章
Posted EGG IXD
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL-第七章相关的知识,希望对你有一定的参考价值。
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
以上是关于MYSQL-第七章的主要内容,如果未能解决你的问题,请参考以下文章