数据库表的加法--UNION

 

       介绍一下进行记录加法运算的 UNION(并集)。

1、创建两个表

--商品表1
CREATE TABLE Product1 (product_id     CHAR(4) NOT NULL, product_name   VARCHAR(100) NOT NULL, product_type   VARCHAR(32) NOT NULL, sale_price     INTEGER , purchase_price INTEGER , regist_date    DATE , PRIMARY KEY (product_id));
--商品表2
CREATE TABLE Product2 (product_id     CHAR(4) NOT NULL, product_name   VARCHAR(100) NOT NULL, product_type   VARCHAR(32) NOT NULL, sale_price     INTEGER , purchase_price INTEGER , regist_date    DATE , PRIMARY KEY (product_id));

2、插入数据

--商品表1
BEGIN TRANSACTION; 
INSERT INTO Product1 VALUES ('0001', 'T恤衫' ,'衣服', 1000, 500, '2008-09-20'); 
INSERT INTO Product1 VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'); 
COMMIT;

--商品表2
BEGIN TRANSACTION; 
INSERT INTO Product2 VALUES ('0003', '运动T恤', '衣服', 4000,  2800, NULL); 
INSERT INTO Product2 VALUES ('0009', '手套', '衣服', 800, 500, NULL); 
INSERT INTO Product2 VALUES ('0010', '水壶', '厨房用具', 2000, 1700, '2009-09-20'); 
COMMIT;

注:

       不同的DBMS的事务处理的语法也不尽相同。上面的DML语句在 MySQL中执行时,需要将“BEGIN TRANSACTION; ”更改为“START TRANSACTION;”。在 Oracle和 DB2中执行时,无需用到“BEGIN TRANSACTION; ”部分(请删除)。

3、使用UNION对表进行加法运算 

SELECT product_id, product_name  FROM Product1 UNION SELECT product_id, product_name  FROM Product2;

执行结果:

4、注意事项

1、UNION 等集合运算符通常都会除去重复的记录。假如有重复的记录也只显示一条。

2、想在 UNION 的结果中保留重复行的话,只需要在 UNION 后面添加 ALL 关键字就可以了。例如:

SELECT product_id, product_name  FROM Product1 UNION ALL SELECT product_id, product_name  FROM Product2;

3、作为运算对象的记录的列数必须相同。不能使用一个表的两个字段和另一个表的三个字段来运算,字段数要保持一致。

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

SELECT product_id, product_name  FROM Product1 WHERE product_type = '厨房用具' UNION SELECT product_id, product_name  FROM Product2 WHERE product_type = '厨房用具' ORDER BY product_id;

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值