多表插入
来源:互联网 发布:网络打印机显示错误 编辑:程序博客网 时间:2024/06/05 02:05
INSERT ALL insert_into_clause [value_clause] subquery;
INSERT conditional_insert_clause subquery;
如上所述,insert_into_clause用于指定INSERT字句:value_clause用于指定值字句;subquery用于指定提供数据的子查询;conditional_insert_clause用于指定INSERT条件字句。下面通过示例说明使用INSERT 语句执行多表插入的方法。
一、使用ALL操作符执行多表插入
当使用ALL操作符执行多表插入时,在每个条件字句上都要执行INTO字句后的子查询。示例如下(前提是自己先建好DEPT10,DEPT20,DEPT30,CLERK,OTHER这几个表):
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
4- oracle select表插入,多行插入
- oracle多表插入
- 多表插入数据
- Oracle多表插入
- 多表插入
- oracle 多表插入
- 多表插入
- hive多表插入
- oracle 多表插入
- 多表插入
- oracle多表插入
- Oracle多表插入
- 多表插入数据
- oracle多表插入
- 插入排序:表插入
- oracle的多表插入
- MySQL多表同时插入
- oralce的多表插入
- VC取得环境变量内容
- 分文件夹进行存储上传资源
- Opencv中的HSV取值范围
- android休眠唤醒死机
- doing
- 多表插入
- 『精品素材』35套免费的 Web & Mobile 界面设计套件《下集》
- OSX: 实用脚本程序(bash scripts)系列-19
- 数学之路(3)-数据分析(1)
- python格式化dict输出
- DirectX 性能优化
- Block编程值得注意的那些事儿
- ExtJs学习笔记 根据数据库生成动态多级树
- 不可见索引