![]()
SQLクリニック(12) Page
1/21つのSQL文で複数の表にINSERTする
絶品テクニック
株式会社インサイトテクノロジー
岸本拓也/林 優
2006/3/1
本連載はSQLの応用力を身に付けたいエンジニア向けに、さまざまなテクニックを紹介する。SQLの基本構文は平易なものだが、実務で活用するには教科書的な記述を理解するだけでは不十分だ。本連載は、著名なメールマガジン「おら! オラ! Oracle - どっぷり検証生活」を発行するインサイトテクノロジーのコンサルタントを執筆陣に迎え、SQLのセンス向上に役立つ大技小技を紹介していく。(編集局)
| 主な内容 --Page 1--
--Page 2--
|
FOR...LOOP文を使って、いくつものSQL文でデータをINSERTしているPL/SQLプロシージャやプログラムをよく見掛けますが、実は1度にデータをINSERTする方法もあるんです。マルチテーブル・インサート(Multitable Insert)とはその名のとおり、1つのSQL文で複数の表にINSERTが可能になります。この最大のメリットは、やはりパフォーマンスです。では早速ご紹介します。
ここでは、VALUES句を使って値を指定します。
SQL> insert all |
| リスト1 VALUES句で値を指定するマルチテーブル・インサート |
上記のSQL文を実行後、sample_tableとsample_table2をSELECTしてみると……。
SQL> select * from sample_table; |
| リスト2 リスト1の結果を確認 |
一度のSQL文でsample_tableとsample_table2にデータがINSERTされました。これを使えば、Parse処理も1回で済みますし、SQL文も1つで済むので、パフォーマンスにもいい影響を与えますよね。
では、次に副問い合わせする表の内容を分割して、異なる表にINSERTする方法をご紹介します。
SQL> create table emp2 as |
| リスト3 EMP表の枠だけコピーして2つの表(EMP2、EMP3)を作成 |
リスト3のSQL文でEMP表の枠だけコピーして、EMP2とEMP3を作成します。そこへ、リスト4のSQL文を実行します。
SQL> insert all |
| リスト4 EMP表の異なる列をEMP2、EMP3にINSERT |
それぞれ、EMP2とEMP3にINSERTされたデータは以下のとおりです。
SQL> select * from emp2; |
| リスト5 リスト4の結果を確認 |
EMP表からEMPNO列、ENAME列、JOB列の12行が、それぞれの表(EMP2、EMP3)に分かれてINSERTされていますね。(次ページへ続く)
| 1/2 |
| Index | |
| 連載 SQLクリニック(12) 1つのSQL文で複数の表にINSERTする絶品テクニック |
|
| Page 1 ・マルチテーブル・インサートの基本形 ・バラバラの内容を別表にINSERTする |
|
| Page 2 ・マルチテーブル・インサートの実践サンプル ・条件に合致したらすべての表にInsertする ・バラバラの内容を別表にInsert(条件付き) |
|
| SQLクリニック |
TechTargetジャパン
Database Expert フォーラム 新着記事
- やはりSELECT文は永遠のテーマです (2012/2/7)
Database Expertフォーラムの2012年1月のアクセスランキングをお届けします。定番の記事を一気に追い抜いてあの記事が…… - SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH
