神出鬼没! サブクエリについて(Part.1)
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でまた、お会いしましょう!