Oracleの基礎知識--高度なinsert文
2125 ワード
scottユーザの下のemp,deptなどの数枚のテーブルを例に,sqlplusで実証した.
まず、空のe 1、e 2を2枚作成します.
oracleが表にデータを挿入するには多くの方法があります
1. insert into xxx values(xxx);
2. insert into xxx select xxx from xxx;
3.拡張inert文:クエリー文の結果を複数のテーブルに挿入します.
1). insert all
クエリー結果の各ローをe 1,e 2テーブルに挿入します.select*from empは全部で14行のデータなので、28行挿入します.
2). insert first
クエリ結果の1行は、2つのテーブルの条件が一致していても1つのテーブルにのみ挿入できます.前に書いた条件を優先して挿入...テストを続行できます.
e 2テーブルにはローが挿入されていません.2番目の条件を満たすローはすべて第1の条件を満たすため、e 1に挿入されています.だから条件を書くときに注意しなければなりません...
OK~終了~
まず、空のe 1、e 2を2枚作成します.
SQL> create table e1 as select ename, sal, hiredate from emp where 1=2;
。
SQL> create table e2 as select ename, deptno, mgr from emp where 1=2;
。
oracleが表にデータを挿入するには多くの方法があります
1. insert into xxx values(xxx);
SQL> insert into e1 values('test', 2000, to_date('20111111','yyyyMMdd'));
1 。
2. insert into xxx select xxx from xxx;
SQL> insert into e1 select ename, sal, hiredate from emp;
14 。
3.拡張inert文:クエリー文の結果を複数のテーブルに挿入します.
1). insert all
SQL> insert all
2 into e1 values(ename, sal, hiredate)
3 into e2 values(ename, deptno, mgr)
4 select * from emp;
28 。
クエリー結果の各ローをe 1,e 2テーブルに挿入します.select*from empは全部で14行のデータなので、28行挿入します.
2). insert first
SQL> insert first
2 when sal > 2500 then
3 into e1 values(ename, sal, hiredate)
4 when sal >1000 then
5 into e2 values(ename, deptno, mgr)
6 select * from emp;
12 。
クエリ結果の1行は、2つのテーブルの条件が一致していても1つのテーブルにのみ挿入できます.前に書いた条件を優先して挿入...テストを続行できます.
SQL> delete from e1;
5 。
SQL> delete from e2;
7 。
SQL> insert first
2 when sal > 1000 then
3 into e1 values(ename, sal, hiredate)
4 when sal > 2000 then
5 into e2 values(ename, deptno, mgr)
6 select * from emp;
12 。
SQL> select count(1) from e1;
COUNT(1)
----------
12
SQL> select count(1) from e2;
COUNT(1)
----------
0
e 2テーブルにはローが挿入されていません.2番目の条件を満たすローはすべて第1の条件を満たすため、e 1に挿入されています.だから条件を書くときに注意しなければなりません...
OK~終了~