表中表 Oracle两相同表的集合操作(oracle两相同表集合)
表中表: Oracle两相同表的集合操作
在Oracle数据库中,集合操作是非常常见的操作之一,这些集合操作包括取并集、交集和差集。当需要对两个相同的表进行集合操作时,在Oracle中也有相应的操作方式。
假设有两个相同的表A和B,它们都有id和name两个字段。我们可以先创建这两个表:
“`sql
CREATE TABLE A (
id NUMBER,
name VARCHAR2(50)
);
CREATE TABLE B (
id NUMBER,
name VARCHAR2(50)
);
接下来,我们先向表A和表B中分别插入一些数据,以便于后面的操作:
```sqlINSERT INTO A
VALUES (1, 'Amy');
INSERT INTO A VALUES (2, 'Bob');
INSERT INTO A VALUES (3, 'Cat');
INSERT INTO A VALUES (4, 'David');
INSERT INTO B VALUES (3, 'Cat');
INSERT INTO B VALUES (4, 'David');
INSERT INTO B VALUES (5, 'Emily');
INSERT INTO B VALUES (6, 'Frank');
现在,我们来看一下如何对表A和表B进行集合操作:
1. 取并集
我们可以使用UNION操作符来取表A和表B的并集,语法如下:
“`sql
SELECT * FROM A
UNION
SELECT * FROM B;
执行上述语句后,我们将得到下面的结果:
ID NAME
1 Amy
2 Bob
3 Cat
4 David
5 Emily
6 Frank
可以看到,这个结果是将表A和表B所有的行进行去重后得到的。如果不需要去重,可以使用UNION ALL操作符,语法如下:
```sqlSELECT * FROM A
UNION ALLSELECT * FROM B;
2. 取交集
我们可以使用INTERSECT操作符来取表A和表B的交集,语法如下:
“`sql
SELECT * FROM A
INTERSECT
SELECT * FROM B;
执行上述语句后,我们将得到下面的结果:
ID NAME
3 Cat
4 David
可以看到,这个结果是将表A和表B中共有的行获取出来得到的。
3. 取差集
我们可以使用MINUS操作符来取表A和表B的差集,语法如下:
```sqlSELECT * FROM A
MINUSSELECT * FROM B;
执行上述语句后,我们将得到下面的结果:
ID NAME
1 Amy2 Bob
可以看到,这个结果是将在表A中存在,但在表B中不存在的行获取出来得到的。
综上所述,当需要对两个相同的表进行集合操作时,在Oracle中可以很方便地使用UNION、INTERSECT和MINUS操作符来实现。