初心者のための SQL-BOOTCAMP 8

2. UPDATE文で使用するケース

2. UPDATE文で使用するケース

次は、UPDATE文の中で、別テーブルの情報で更新する場合を確認してみましょう。

確認準備のために、新たに会社テーブル(tbl_company)を作成して、データを挿入します。

【会社テーブルCREATEコマンド】
CREATE TABLE tbl_company
( comp_code TEXT, comp_name TEXT, admin_id TEXT);
【会社テーブルINSERTコマンド】
INSERT INTO tbl_company (comp_code,comp_name,admin_id)
VALUES ('1','(株)BOOTCAMP','SYSTEM');

使用例にあるように、サブクエリで部署テーブルの更新者IDを会社テーブルの管理者IDで更新して、結果を確認してみましょう。

UPDATE tbl_dept
SET update_user_id = ( SELECT admin_id FROM tbl_company );
SELECT * FROM tbl_dept;

部署テーブルの更新者IDが、会社テーブルの管理者IDに更新されていることが確認できます。UPDATE文で使用する場合も、SELECT文で使用する場合と同様にサブクエリの結果は1つであること、および、サブクエリはカッコ()で囲む必要があるので注意してください。

3. INSERT文で使用するケース

続いて、別テーブルの値でデータを挿入する場合を確認してみましょう。データを複写する場合に、よく利用されます。

確認準備のために、追加でバックアップ部署テーブル(bkup_dept)を作成します。

【バックアップ部署テーブルCREATEコマンド】
CREATE TABLE bkup_dept (dept_code INTEGER , dept_name TEXT);

では、使用例のように、部署テーブルの内容でバックアップ部署テーブルにデータを挿入して、結果を確認してみましょう。

INSERT INTO bkup_dept (dept_code , dept_name)
SELECT dept_code , dept_name FROM tbl_dept;
SELECT * FROM bkup_dept;

バックアップ部署テーブルに、部署テーブルのデータが挿入されていることが確認できます。通常のINSERT文で使用する「VALUE」は記述しないでサブクエリを記入します。抽出条件が必要な場合は、サブクエリにWHERE句を記述して条件に一致するデータのみ挿入することもできます。

おわりに

今回は、神出鬼没な「サブクエリ」について、SELECT文、UPDATE文、INSERT文での使い方を紹介しました。使い方のイメージはつかめたでしょうか。次回のPart.2では、引き続きFROM句、WHERE句での使い方を説明していきます。サブクエリに慣れるにも、やはり実践の積み重ねが必要なので、ぜひいろいろと試して、習得してください。

毎度となりますが、今までに習得したSQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST (TSC)」を紹介します。簡単な会員登録をするだけで、だれでも無料でコンテストに参加できるのでお手軽です。コンテストは不定期に開催されますが、過去のコンテスト問題も解答できるので、ぜひ、チャレンジしてみてください。

上記「TOPSIC SQL CONTEST (TSC)」サイト内にある、下記のアイコンから会員登録ができます。

それでは、また次回のSQL-BOOTCAMPでまた、お会いしましょう!

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る