連載 [第8回] :
  初心者のための SQL-BOOTCAMP

神出鬼没! サブクエリについて(Part.1)

2023年5月30日(火)
久保 司
第8回となる今回からは、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。

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でまた、お会いしましょう!

株式会社システムインテグレータ
長年にわたり、基幹システム構築プロジェクトにおいて全工程を経験。その際、OracleやSQLServer等のDBMSでSQLを使用したプログラム開発を実施。現在は、製品企画室でスキル判定サービス「TOPSIC-SQL」のコンテンツ作成を主に担当。

連載バックナンバー

データベース技術解説
第10回

実践! 「TOPSIC SQL CONTEST」の練習問題にチャレンジしよう

2023/7/25
最終回となる今回は、これまでの訓練の成果を計るために、SQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST(TSC)」の練習問題にチャレンジしてみましょう。
データベース技術解説
第9回

神出鬼没!サブクエリについて(Part.2)

2023/6/29
第9回となる今回は、前回に引き続き、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。
データベース技術解説
第8回

神出鬼没! サブクエリについて(Part.1)

2023/5/30
第8回となる今回からは、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています