アットウィキロゴ

Oracle Bronze10g SQL基礎I講座(Ⅶ)

第7章 副問い合せについて


7.1 副問い合せとは

副問い合せとは、SQL文内に、組み込まれた問い合わせのこと(サブクエリーともいう)

(表)副問合せ一覧
副問合せ 説明 条件 備考
単一行副問合せ 副問合せが1行のみ戻す 単純比較条件(=,>,<,<>等を使用)
複数行問合せ 副問合せが複数行を戻す グループ比較条件(IN,ALL,ANYを使用)

※副問合せには、GROUP BY句、ORDER BY句を指定することができる。
※単一行副問合せで、単純比較条件を使用している場合に、複数行が戻されるとエラーになる。

(表)複数行問合せの条件
条件 説明 備考
IN いずれかと等しい =ANYと同じ意味です
NOT IN いずれとも等しくない !=ALLまたは<>ALLと同じ意味
ALL すべての値と比較 副問合せから行が戻されない場合、FALSEとなる
ANY 各値と比較 副問合せから行が戻されない場合、TRUEとなり、ANYと同じ意味で、SOMEを使用する場合あり。



7.2 SELECT文の副問い合せ


○SELECT文(副問合せ)○
構文:SELECT ... FROM 表名 WHERE 列名 比較条件 (副問合せ);
    SELECT ... FROM 表名 [GROUP BY 列名] HAVING {列名 | グループ関数} 比較条件 (副問合せ);

※注意・・・SELECT句、GROUP BY句、ORDER BY句では使用不可。



7.3 INSERT文の副問い合せ


○INSERT文(副問合せ)○
構文:INSERT INTO (副問合せ values(列名,...)) [where 検索条件];
説明:
・副問合せの列数とvalues句の列数の数は同じ。

構文:INSERT INTO 表名 [ (列名,...) ] (副問合せ);
説明:
・副問合せは、TABLE句、VALUES句、WHERE句で指定できる。



7.4 UPDATE文の副問い合せ


○UPDATE文(副問合せ)
構文:UPDATE TABLE (副問合せ) SET 列名 = 値 [WHERE 検索条件];
    UPDATE TABLE 表名 SET 列名 = (副問合せ) [WHERE 検索条件];

説明:
・副問合せは、TABLE句、SET句とWHERE句で指定。



7.5 DELETE文の副問い合せ


○DELETE文(副問合せ)
構文:DELETE TABLE( 副問合せ ) [WHERE 検索条件];
説明
・副問合せは、TABLE句、WHERE句で指定できる。



7.6 CREATE TABLE文の副問い合せ


○CREATE TABLE文(副問合せ)
構文:CREATE TABLE 表名[(列名,...)] AS (副問合せ);
説明
・副問合せの両端のカッコは、省略可能。
・作成元の制約は、NOT NULL制約のみが、新規の表にコピーされる(主キー制約もコピーされない)
・作成元表の権限は、作成した表に継承されない。



7.7 複数列副問い合せ

~実践のみ~(説明なし)



7.8 副問合せのNULL値

(表)
条件 説明 備考
IN NULL値を除いた値が戻ります
NOT IN 戻るデータにNULL値があるとデータは戻らない
ALL 戻るデータにNULL値があるとデータは戻らない
ANY NULL値を除いた値が戻ります
EXISTS NULL値を除いた値が戻ります
NOT EXISTS 戻るデータにNULL値があるとデータは戻らない NULL値だけのときは真です


最終更新:2008年08月06日 10:40