查询探索Oracle数据库中的联合查询(Oracle中的联合)
在Oracle数据库中,联合查询是一种强大的工具,可以同时从两个或更多的表中检索数据,并将结果组合在一起。此外,联合查询也可以将同一表的不同行组合在一起,这对于特定的数据分析是非常有用的。
下面将介绍一些常见的联合查询类型并提供相关的代码示例。
1. UNION——查询合并
UNION连接两个查询并返回数据结果集,只返回不重复的行。
SELECT column1, column2,....columnN
FROM table1UNION
SELECT column1, column2,....columnN FROM table2;
2. UNION ALL——查询合并并返回所有行
UNION ALL连接两个查询并返回所有数据结果集,包括重复的行。
SELECT column1, column2,....columnN
FROM table1UNION ALL
SELECT column1, column2,....columnN FROM table2;
3. INTERSECT ——查询交集
INTERSECT返回两个查询的共同记录行。
SELECT column1, column2,....columnN
FROM table1INTERSECT
SELECT column1, column2,....columnN FROM table2;
4. MINUS——查询差集
MINUS返回从查询1返回的数据中排除查询2返回的数据的结果集。
SELECT column1, column2,....columnN
FROM table1MINUS
SELECT column1, column2,....columnN FROM table2;
示例代码:
首先创建两个表A和B,各自包含两列(id和name)。
CREATE TABLE A (
id INT PRIMARY KEY, name VARCHAR2(50)
);
CREATE TABLE B ( id INT PRIMARY KEY,
name VARCHAR2(50));
接着插入数据:
BEGIN
FOR i IN 1..5 LOOP INSERT INTO A VALUES (i, 'Name_' || i);
END LOOP;
FOR i IN 3..7 LOOP INSERT INTO B VALUES (i, 'Name_' || i);
END LOOP; COMMIT;
END;
现在我们可以使用联合查询从表A和表B中检索数据。使用以下示例代码:
SELECT id, name FROM A
UNION SELECT id, name FROM B;
结果为:
ID NAME
1 Name_12 Name_2
3 Name_34 Name_4
5 Name_56 Name_6
7 Name_7
可以看到,返回的结果中有重复的行,因为表A和表B中都包含3-5个记录。
使用UNION ALL 查询返回所有记录:
SELECT id, name FROM A
UNION ALL SELECT id, name FROM B;
结果为:
ID NAME
1 Name_12 Name_2
3 Name_34 Name_4
5 Name_53 Name_3
4 Name_45 Name_5
6 Name_67 Name_7
现在我们想要找到表A和表B中相同的记录。使用INTERSECT查询:
SELECT id, name FROM A
INTERSECTSELECT id, name FROM B;
结果为:
ID NAME
3 Name_34 Name_4
5 Name_5
我们想要找到仅在表A中存在的记录。使用MINUS查询:
SELECT id, name FROM A
MINUSSELECT id, name FROM B;
结果为:
ID NAME
1 Name_12 Name_2
这就是Oracle数据库中常见联合查询类型的简要介绍。使用这些查询可以轻松检索数据并对结果进行分析。