1つのSQL文で複数の表にINSERTが可能
VALUES句で値を指定するマルチテーブル・インサート
SQL> insert all
2 into sample_table (id, name, value) values (1, 'TKISHIMO', 0)
3 into sample_table2 (id, name, value) values (2, 'MHAYASHI', 0)
4 select * from dual;
2行が作成されました。
EMP表の異なる列をEMP2、EMP3にINSERT
SQL> insert all
2 into emp2(empno, ename) values (empno, ename)
3 into emp3(empno, job) values (empno, job)
4 select * from emp;
24行が作成されました。
科目別の集計テーブルを作成
SQL> insert all
2 into score_eigo values( no, eigo )
3 into score_kokugo values( no, kokugo )
4 into score_sugaku values( no, sugaku )
5 into score_rika values( no, rika )
6 into score_syakai values( no, syakai )
7 select
8 no,eigo,kokugo,sugaku,rika,syakai
9 from
10 score;
25行が作成されました。
SQL> select * from score_eigo;
NO SCORE
---------- ----------
1 98
2 90
3 30
4 64
5 87
条件式を付けたマルチテーブル・インサート
SQL> insert all
2 when eigo <= 60 then
3 into score_eigo values( no, eigo )
4 when kokugo <= 60 then
5 into score_kokugo values( no, kokugo )
6 when sugaku <= 60 then
7 into score_sugaku values( no, sugaku )
8 when rika <= 60 then
9 into score_rika values( no, rika )
10 when syakai <= 60 then
11 into score_syakai values( no, syakai )
12 select
13 no,eigo,kokugo,sugaku,rika,syakai
14 from
15 score;
6行が作成されました。
SCORE表から60点以下のデータを別表にINSERT
SQL> insert first
2 when eigo <= 60 then
3 into tsuishi_student values (no, '英語', eigo )
4 when kokugo <= 60 then
5 into tsuishi_student values (no, '国語', kokugo )
6 when sugaku <= 60 then
7 into tsuishi_student values (no, '数学', sugaku )
8 when rika <= 60 then
9 into tsuishi_student values (no, '理科', rika )
10 when syakai <= 60 then
11 into tsuishi_student values (no, '社会', syakai )
12 select
13 no,eigo,kokugo,sugaku,rika,syakai
14 from
15 score;
4行が作成されました。
SQL> select * from tsuishi_student;
NO SUBJECT POINT
---------- ---------- ----------
3 英語 30
4 国語 57
5 国語 56
2 理科 40