Home − 実験室 − No.0073 |
No.0073(SQL)
集合演算子(UNION、MINUS、INTERSECT) |
■環境 |
□OS: Windows XP Professional SP3 □Oracle: Oracle Database 11g R2 (Standard) □OSログインユーザ: ORA_DBAグループ □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト |
■実験 | |||||||
0. 実験ユーザー「dicdic」でコネクトする。
1.【集合演算子の種類】 UNION ALL → A∪B + A∩B UNION → A∪B MINUS → A∪B−B INTERSECT → A∩B 2. 「サーフィンサークル」と「軽音楽部」に着目し、集合演算子について考えよう。
3. 【UNION ALL】 「UNION ALL」を使うと、サーフィンサークルと軽音楽部を合わせた一覧が出てくる。 この際、掛け持ちの二人(松原 雅彦、田所 昭子)が2回ずつ登場していることに気をつける。
4. 【UNION】 「UNION ALL」を「UNION」に変えると、重複を省いてくれる....はずなのだが.... 省かれていない。相変わらず79件となる。これは、部活動が併記されているためで、 「氏名と部活動の組み合わせ」という見方をすると、79件すべてがユニークなためだ。
5. 【UNION(再)】 では、Selectする列を氏名だけにしてみるとどうだろう。 結果は77件数となり、掛け持ちの二人の重複が省かれていることが分かる。
6. 【MINUS】 「MINUS」は、掛け持ちの二人をハブにしたい時に使える。 サーフィンサークルの人数から掛け持ちの二人を除いた37行が返される。
7. 【INTERSECT】 「INTERSECT」は、掛け持ちの2人をあぶりだす。
|
【PR】 Oracle実験室監修 『Oracleアーキテクチャ鳥瞰図』 PDF (Oracleのアーキテクチャを一目で俯瞰できるイラスト) |
Home − 実験室 − No.0073 |