Oracle多表插入

    一、使用ALL操作符执行多表插入

      当使用ALL操作符执行多表插入时,就会执行无条件的多表插入。也就意味着每一个WHEN子句按照查询所返回的每一行来确定值,而不管前一个条件的输出结果是什么。因此,你需要注意如何来确定每个条件。

      示例如下:

 

      SQL>insert all
          2        when deptno=10   then into dept10
          3        when deptno=20   then into dept20
          4        when deptno=30   then into dept30
          5        when job='CLERK'  then into clerk
          6        else                                into other
          7    select * from emp;

        已创建19行。

 

        在执行了以上INSERT语句之后,会将部门10的雇员信息插入到dept10表,将部门20的雇员信息插入到dept20表,将部门30的雇员信息插入到dept30,将岗位CLERK的所有雇员插入到clerk,将其他行插入到other表。各表的数据显示如下:

 

       emp表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7782 CLARK      MANAGER    7839  1981-6-9       2450.00                       10
 7839 KING        PRESIDENT            1981-11-17   5000.00                       10
 7934 MILLER     CLERK         7782  1982-1-23     1300.00                       10
 7566 JONES      MANAGER    7839  1981-4-2       2975.00                       20
 7902 FORD        ANALYST     7566  1981-12-3     3000.00                       20
 7876 ADAMS      CLERK        7788  1987-5-23     1100.00                       20
 7369 SMITH       CLERK        7902  1980-12-17   800.00                         20
 7788 SCOTT       ANALYST    7566  1987-4-19     3000.00                       20
 7521 WARD        SALESMAN 7698  1981-2-22     1250.00    500.00        30
 7844 TURNER     SALESMAN 7698  1981-9-8       1500.00     0.00           30
 7499 ALLEN        SALESMAN 7698  1981-2-20     1600.00    300.00       30
 7900 JAMES        CLERK        7698  1981-12-3     950.00                        30
 7698 BLAKE        MANAGER   7839  1981-5-1       2850.00                      30
 7654 MARTIN      SALESMAN  7698  1981-9-28    1250.00   1400.00       30

 7998 MARRP       SALESMAN  7699  1983-8-20    1350.00   1200.00       40

 
15 rows selected

 

dept10表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7782 CLARK      MANAGER    7839  1981-6-9       2450.00                       10
 7839 KING        PRESIDENT            1981-11-17   5000.00                       10
 7934 MILLER     CLERK         7782  1982-1-23     1300.00                       10

 

dept20表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7566 JONES      MANAGER    7839  1981-4-2       2975.00                       20
 7902 FORD        ANALYST     7566  1981-12-3     3000.00                       20
 7876 ADAMS      CLERK        7788  1987-5-23     1100.00                       20
 7369 SMITH       CLERK        7902  1980-12-17   800.00                         20
 7788 SCOTT       ANALYST    7566  1987-4-19     3000.00                       20

 

        dept30表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7521 WARD        SALESMAN 7698  1981-2-22     1250.00    500.00        30
 7844 TURNER     SALESMAN 7698  1981-9-8       1500.00     0.00           30
 7499 ALLEN        SALESMAN 7698  1981-2-20     1600.00    300.00       30
 7900 JAMES        CLERK        7698  1981-12-3     950.00                        30
 7698 BLAKE        MANAGER   7839  1981-5-1       2850.00                      30
 7654 MARTIN      SALESMAN  7698  1981-9-28    1250.00   1400.00       30

 

6 rows selected

clerk表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------

7934 MILLER     CLERK         7782  1982-1-23     1300.00                       10
7876 ADAMS      CLERK        7788  1987-5-23     1100.00                       20
7369 SMITH       CLERK        7902  1980-12-17   800.00                         20
7900 JAMES        CLERK        7698  1981-12-3     950.00                        30

       other表:

      

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------

7998 MARRP       SALESMAN  7699  1983-8-20    1350.00   1200.00       40
 

 

 

二、使用FIRST操作符执行多表插入

       当使用FIRST操作符执行多表插入时,如果数据已经满足了先前条件,并且已经被插入到某表,那么该行数据在后续插入中将不会被再

次使用。示例如下:

 

      SQL>insert first
          2        when deptno=10   then into dept10
          3        when deptno=20   then into dept20
          4        when deptno=30   then into dept30
          5        when job='CLERK'  then into clerk
          6        else                                into other
          7    select * from emp;

       

        已创建15行。

        各表显示数据如下,emp表不变。

 

 

dept10表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7782 CLARK      MANAGER    7839  1981-6-9       2450.00                       10
 7839 KING        PRESIDENT            1981-11-17   5000.00                       10
 7934 MILLER     CLERK         7782  1982-1-23     1300.00                       10

 

dept20表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7566 JONES      MANAGER    7839  1981-4-2       2975.00                       20
 7902 FORD        ANALYST     7566  1981-12-3     3000.00                       20
 7876 ADAMS      CLERK        7788  1987-5-23     1100.00                       20
 7369 SMITH       CLERK        7902  1980-12-17   800.00                         20
 7788 SCOTT       ANALYST    7566  1987-4-19     3000.00                       20

 

        dept30表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------
 7521 WARD        SALESMAN 7698  1981-2-22     1250.00    500.00        30
 7844 TURNER     SALESMAN 7698  1981-9-8       1500.00     0.00           30
 7499 ALLEN        SALESMAN 7698  1981-2-20     1600.00    300.00       30
 7900 JAMES        CLERK        7698  1981-12-3     950.00                        30
 7698 BLAKE        MANAGER   7839  1981-5-1       2850.00                      30
 7654 MARTIN      SALESMAN  7698  1981-9-28    1250.00   1400.00       30

 

6 rows selected

 

clerk表:

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------

 

       other表:

      

EMPNO ENAME      JOB           MGR    HIREDATE       SAL      COMM        DEPTNO
----- ---------- --------- -----    ----------- ---------       ---------      ------

7998 MARRP       SALESMAN  7699  1983-8-20    1350.00   1200.00       40


--本篇文章转自:http://blog.csdn.net/fage87295970/article/details/4782829,并做了些许改动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值