Oracle中两表取并集的操作示例(oracle 两表取并集)
Oracle中两表取并集的操作示例
在处理数据库中的数据时,我们经常需要对多张表进行操作,其中一个比较常见的操作就是取两个表的并集。在Oracle中,我们可以通过使用UNION操作符实现。
UNION操作符可以将两个或多个SELECT语句的结果集合并起来,且每个SELECT语句的列数、列名以及数据类型必须相同,否则会出现语法错误。
下面我们通过一个实例来演示如何在Oracle中取两个表的并集。
假设我们有两张表,一张是存储员工信息的EMP表,另一张是存储实习生信息的INTERN表。这两张表的结构如下:
— EMP表结构
CREATE TABLE EMP(
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
— INTERN表结构
CREATE TABLE INTERN(
ID NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(10),
STARTDATE DATE,
SALARY NUMBER(7,2),
PROJECT VARCHAR2(10)
);
接下来我们向这两张表中插入一些示例数据:
— 向EMP表中插入数据
INSERT INTO EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (7369, ‘SMITH’, ‘CLERK’, 7902, TO_DATE(’17-12-1980′, ‘DD-MM-YYYY’), 800, NULL, 20);
INSERT INTO EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (7499, ‘ALLEN’, ‘SALESMAN’, 7698, TO_DATE(’20-2-1981′, ‘DD-MM-YYYY’), 1600, 300, 30);
INSERT INTO EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (7521, ‘WARD’, ‘SALESMAN’, 7698, TO_DATE(’22-2-1981′, ‘DD-MM-YYYY’), 1250, 500, 30);
— 向INTERN表中插入数据
INSERT INTO INTERN(ID, NAME, STARTDATE, SALARY, PROJECT)
VALUES (1001, ‘LUCY’, TO_DATE(’01-07-2021′, ‘DD-MM-YYYY’), 3000, ‘P1’);
INSERT INTO INTERN(ID, NAME, STARTDATE, SALARY, PROJECT)
VALUES (1002, ‘JOHN’, TO_DATE(’01-08-2021′, ‘DD-MM-YYYY’), 3500, ‘P2’);
INSERT INTO INTERN(ID, NAME, STARTDATE, SALARY, PROJECT)
VALUES (1003, ‘JACK’, TO_DATE(’01-09-2021′, ‘DD-MM-YYYY’), 4000, ‘P3’);
现在我们可以尝试使用UNION操作符取这两张表的并集。实现该功能的SQL语句如下:
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL AS STARTDATE, NULL AS SALARY, NULL AS PROJECT
FROM EMP
UNION
SELECT ID AS EMPNO, NAME AS ENAME, NULL AS JOB, NULL AS MGR, STARTDATE AS HIREDATE, SALARY AS SAL, NULL AS COMM, NULL AS DEPTNO, PROJECT
FROM INTERN;
该SQL语句中,我们首先从EMP表中选取需要的字段,然后使用UNION操作符将结果集与从INTERN表中选取的结果集进行合并。由于两张表的字段不完全一致,因此我们需要自行指定一些字段的名称和值。
运行该SQL语句,我们可以得到以下结果:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO STARTDATE SALARY PROJECT
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
1001 LUCY P1 01-JUL-21 3000
1002 JOHN P2 01-AUG-21 3500
1003 JACK P3 01-SEP-21 4000
可以看到,我们成功地将EMP表和INTERN表的数据取了并集。这样,我们就可以通过一条SQL语句从多张表中获取所需的数据,便于我们在实际的开发工作中进行数据处理操作。
总结
本文介绍了在Oracle中取两个表的并集的操作方法。使用UNION操作符可以将两个表的结果集合并,从而实现多表数据处理的功能。在实际的开发工作中,我们可以根据不同的需求使用相关的SQL语句进行多表数据处理,提高开发效率。