关于通过单个查询多次插入行。(oracle)

时间:2011-02-24 04:09:33

标签: database oracle10g

通过单个查询在表中多次插入行使用的机制是否与使用单个查询插入单行的机制相同。如果不是确切的机制是什么?

2 个答案:

答案 0 :(得分:2)

如果要从现有表中提取数据,可以使用INSERT INTO TABLE3 ( SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2 ....)一次性获取和插入数据。


SQL> SELECT * FROM SCOTT.EMP WHERE JOB = 'ANALYST1';

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO GENDER
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- --------
      8909 LUTHAR     ANALYST1        7698 22-JUL-99       1232        788         50 F
      8999 AMAN       ANALYST1        7698 22-JUL-99       8569        788         50 M
      7788 SCOTT      ANALYST1        7566 19-APR-87       3000        150            M
      7902 2          ANALYST1        7566 03-DEC-81       3000                       M


SQL> SELECT * FROM SCOTT.EMP WHERE JOB = 'MANAGER';

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO GENDER
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- ---------
      7566 5          MANAGER         7839 02-APR-81       2975        150            F
      7698 10000      MANAGER         7839 01-MAY-81       2850        150            F
      7782 CLARK      MANAGER         7839 09-JUN-81       2450        150            F

SQL> CREATE TABLE EMP1 AS ( SELECT * FROM SCOTT.EMP WHERE 1=2);

Table created.

SQL> SELECT * FROM EMP1;

no rows selected

SQL> INSERT INTO EMP1 ( SELECT * FROM SCOTT.EMP WHERE JOB = 'ANALYST1'
  2  UNION
  3  SELECT * FROM SCOTT.EMP WHERE JOB = 'MANAGER');

7 rows created.

SQL> SELECT * FROM EMP1;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO GENDER
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- --------
      7566 5          MANAGER         7839 02-APR-81       2975        150            F
      7698 10000      MANAGER         7839 01-MAY-81       2850        150            F
      7782 CLARK      MANAGER         7839 09-JUN-81       2450        150            F
      7788 SCOTT      ANALYST1        7566 19-APR-87       3000        150            M
      7902 2          ANALYST1        7566 03-DEC-81       3000                       M
      8909 LUTHAR     ANALYST1        7698 22-JUL-99       1232        788         50 F
      8999 AMAN       ANALYST1        7698 22-JUL-99       8569        788         50 M

7 rows selected.

答案 1 :(得分:0)

通过用分号分隔每个SQL命令,可以在单个Oracle查询中链接许多SQL语句。例如: 插入表值(1,2); INSERT INTO表VALUES(3,4);