即表与表之间的运算,如表的加减法
并集(并集
)、交集(相交
)、补集(除了
)
在之前插入数据的研究中,我们创建了一张表
customer
,它和staff
表是一样的。后来我们给它添加了一个数据。现在让我们使用 UNION。连接这两个表:
SELECT 名字, 姓氏
来自客户
联盟
SELECT 名字, 姓氏
FROM 工作人员
UNION实际上相当于集合的并集。它将返回两个表中的所有产品并删除重复项。结果不会有重复的行。但您也可以获得包含重复行的结果。只需在 UNION 之后添加关键字 ALL:
SELECT 名字, 姓氏
来自客户
UNION全部
SELECT 名字, 姓氏
FROM 工作人员
最后,我们来学习一下集合的差集运算——EXCEPT。其语法也与UNION相同。例如,查询
customer
中的数据,但未查询staff
表中的数据:
SELECT 名字, 姓氏
来自客户
除了
SELECT 名字, 姓氏
FROM工作人员
UNION
和INTERSECT
的执行与表的顺序无关,即A UNION B和B UNION A一致。
但是差集运算与顺序有关,A EXCEPT B! = B 除了 A
语法与UNION完全相同:
SELECT 名字, 姓氏
来自客户
相交
SELECT 名字, 姓氏
FROM演员
请注意,INTERSECT 在 MySQL 中暂时不可用。 UNION的所有注意事项以及ALL关键字的用法与INTERSECT完全一样
待操作的记录列数必须一致。如果两个表的列数不同或者同一位置的列的数据类型不同,就会出现错误。
作为操作数的记录中的列类型必须一致。如果两个表的列数不同或者同一位置的列的数据类型不同,就会出现错误。
您可以使用任何 SELECT 语句,但 ORDER BY 子句只能在最后使用一次。下面是一个例子,查询两个表中厨房电器的ID号和产品名称并连接起来,最后按ID升序排序。 :
SELECT 名字, 姓氏
来自客户
相交
SELECT 名字, 姓氏
FROM 演员
订单 by id