東京都で開催する「初心者向けデータベース設計入門」講座です。

7.1 サブクエリの基本

サブクエリの基本

7.1 サブクエリとは

 まずはサブクエリの考え方と基本的な使用方法を説明します。

7.1.1 サブクエリとは

 データベースに対する処理の命令要求(DML文の実行)をクエリといいます。 SQLでは、あるクエリ(サブクエリ)の実行結果を基に、別のクエリ(メインクエリ)を制御することができます。
 下図を見てください。

 この例では、サブクエリのSELECT文の検索結果を、メインクエリの検索条件としています。
 このように、クエリを入れ子にしてサブクエリの実行結果を基にメインクエリを処理することができるのです。
 サブクエリには様々な使い方がありますので、次項以降で具体的な例で説明していきます。

7.1.2 サブクエリの具体例

 まずサブクエリの中では最も基本となる、SELECT文の「WHERE」句で使う方法を、具体的な例を見ていきながら説明します。
 基本的な構文は下記のようになります。

    SELECT 列名 FROM テーブル名 WHERE 列名 演算子 サブクエリ

 「bookinfo」を例にして説明します。
 ISBN番号「00001」の「SQL入門テキスト」と同じ価格の書籍を検索したい場合を考えます。
 まず「SQL入門テキスト」の価格を検索する必要があります。
 DML文は下記のようになりますね。

   SELECT price FROM bookinfo WHERE isbn = '00001';

 これで「SQL入門テキスト」の価格が抽出できます。

 さらに同一価格の書籍を抽出するには、

   SELECT * FROM bookinfo WHERE price = 1050;

となります。

 この2つのDML文

   SELECT price FROM bookinfo WHERE isbn = '00001';→SQL①
   SELECT * FROM bookinfo WHERE price = 1050;→SQL②

 を、「SQL①」をサブクエリ、「SQL②」をメインクエリとしてひとつにまとめると、下記のようなDML文になります。

   SELECT * FROM bookinfo WHERE price = (SELECT price FROM bookinfo WHERE isbn = '00001');

 ではISBN番号「00002」の「Java Struts基礎テキスト」より価格の高い書籍を抽出したい場合はどうなるでしょうか?
 DML文は下記のようになります。

   SELECT * FROM bookinfo WHERE price > (SELECT price FROM bookinfo WHERE isbn = '00002');

NEXT>> 7.2 サブクエリの発展

ご不明点はお問い合わせフォームからご連絡ください。

セミナー一覧

法人向けプログラミング研修

Java、PHPの社員研修|新人研修
セミナー講師紹介

主席インストラクター
早稲田大学大学院 理工学部卒業
SanJose 州立大学、コンピューター工学部卒業
アメリカのシリコンバレーでは、プログラマー・SEとして活躍
講師の詳細はこちら

PAGETOP
Copyright © 2016 FusionOne Co.,Ltd. All rights reserved.