第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