9. 集合演算子の使用方法

9.1 集合演算子の種類と使用方法

集合演算子を使用すると,複数の問合せの結果を一つにまとめることができる。集合演算子を含む問合せのことを「複合問合せ」と呼ぶ。

 

集合演算子

UNION

2つの問合せ結果を連結し,重複した行を排除して戻す

UNION ALL

2つの問合せ結果を連結し,重複した行も含めて戻す

INTERSECT

2つの問合せ結果のうち,共通する行だけを戻す

MINUS

1つ目の問合せ結果のうち,2つ目の問合せ結果にない行を戻す

f:id:ci_melon:20190414122537j:image

複合問合せの基本構文

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)完全詳解+精選問題集(オラクルマスタースタディガイド)

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)