查询探索Oracle数据库中的联合查询(Oracle中的联合)

在Oracle数据库中,联合查询是一种强大的工具,可以同时从两个或更多的表中检索数据,并将结果组合在一起。此外,联合查询也可以将同一表的不同行组合在一起,这对于特定的数据分析是非常有用的。

下面将介绍一些常见的联合查询类型并提供相关的代码示例。

1. UNION——查询合并

UNION连接两个查询并返回数据结果集,只返回不重复的行。

SELECT column1, column2,....columnN 
FROM table1
UNION
SELECT column1, column2,....columnN
FROM table2;

2. UNION ALL——查询合并并返回所有行

UNION ALL连接两个查询并返回所有数据结果集,包括重复的行。

SELECT column1, column2,....columnN 
FROM table1
UNION ALL
SELECT column1, column2,....columnN
FROM table2;

3. INTERSECT ——查询交集

INTERSECT返回两个查询的共同记录行。

SELECT column1, column2,....columnN 
FROM table1
INTERSECT
SELECT column1, column2,....columnN
FROM table2;

4. MINUS——查询差集

MINUS返回从查询1返回的数据中排除查询2返回的数据的结果集。

SELECT column1, column2,....columnN 
FROM table1
MINUS
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_1
2 Name_2
3 Name_3
4 Name_4
5 Name_5
6 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_1
2 Name_2
3 Name_3
4 Name_4
5 Name_5
3 Name_3
4 Name_4
5 Name_5
6 Name_6
7 Name_7

现在我们想要找到表A和表B中相同的记录。使用INTERSECT查询:

SELECT id, name FROM A
INTERSECT
SELECT id, name FROM B;

结果为:

ID NAME
3 Name_3
4 Name_4
5 Name_5

我们想要找到仅在表A中存在的记录。使用MINUS查询:

SELECT id, name FROM A
MINUS
SELECT id, name FROM B;

结果为:

ID NAME
1 Name_1
2 Name_2

这就是Oracle数据库中常见联合查询类型的简要介绍。使用这些查询可以轻松检索数据并对结果进行分析。


数据运维技术 » 查询探索Oracle数据库中的联合查询(Oracle中的联合)