9.1 集合演算子の種類と使用方法
集合演算子を使用すると,複数の問合せの結果を一つにまとめることができる。集合演算子を含む問合せのことを「複合問合せ」と呼ぶ。
集合演算子
UNION
2つの問合せ結果を連結し,重複した行を排除して戻す
UNION ALL
2つの問合せ結果を連結し,重複した行も含めて戻す
INTERSECT
2つの問合せ結果のうち,共通する行だけを戻す
MINUS
1つ目の問合せ結果のうち,2つ目の問合せ結果にない行を戻す
複合問合せの基本構文
SELECT文1
{ UNION | UNION ALL | INTERSECT | MINUS }
SELECT文2
UNION演算子
2つの問合せ結果を連結し,重複した行を排除して戻す。2つの問合せに同一の行がある場合,その行は1度しか表示されない。
内部的にデータをソートした上で重複した行を排除するため,実行結果もSELECT句の先頭に指定されている列の値で昇順にソートされる。
UNION ALL演算子
2つの問合せ結果を連結し,重複した行も含めて戻す。2つの問合せに同一の行がある場合,その行は2度表示される。
データのソート処理を行わないため,ORDER BY句を指定した場合をのぞいて,1つめの問合せの結果の後ろに2つめの問合せの結果を追加したものが表示される。
INTERSECT演算子
2つの問合せ結果のうち,共通する行だけを戻す。2つの問合せに同一の行がある場合,その行は1度しか表示されない。内部的にデータをソートした上で重複した行を排除するため,実行結果もSELECT句の先頭に指定されている列の値で昇順にソートされる。
MINUS演算子
1つ目の問合せ結果のうち,2つ目の問合せ結果にない行を戻す。
重複したデータは排除されて1度だけ表示される。内部的にデータをソートした上で重複した行を排除するため,実行結果もSELECT句の先頭に指定されている列の値で昇順にソートされる。
MINUS演算子は他の集合演算子とちがい,問合せの順番を入れ替えると表示されるデータが変わってしまうので注意。
9.2 集合演算子の使用に関するガイドライン
SELECT句に指定する列の個数とデータ型
複合問合せでは,1つ目の問合せと2つ目の問合せでSELECT句に指定する列(または式)の個数を同数にする。
2つめの問合せのSELECT句に指定する列のデータ型は,1つ目の問合せのSELECT句に指定されているデータ型と同じ,かまたは同じデータ型グループにする。
列の名前は異なっていても問題ないが,問合せ結果の列の見出しは1つめの問合せに指定されている列名が使用される。
複合問合せでのORDER BY句の使用
使用時の注意
・ORDER BY句は,複合問合せの最後の問合せに指定する
→最初に指定するとエラーになる。
・ORDER BY句には,最初の問合せのSELECT句に指定されている列または列別名を指定する
→それ以外を指定するとエラーになる。
・複合問合せが3つ以上あるときもORDER BY句は必ず最後の問合せに指定する。
複合問合せとNULL値
複合問合せではNULL値は無視されない。
UNION ALL演算子以外の集合演算子を使用した場合,重複したNULL値は排除される。
集合演算子の優先順位
集合演算子の優先順位は全て同じ,1つのSQL文に複数の集合演算子がある場合は,前に指定されたものから順番に実行される。ただし「()」を使用して優先順位を明示的に指定することは可能。
【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)
- 作者: エディフィストラーニング株式会社,西昭彦,飯室美紀,鈴木佐和,岡野友紀,矢島祐子
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/03/21
- メディア: 単行本
- この商品を含むブログ (2件) を見る