「大人の教養・知識・気付き」を伸ばすブログ

※今月(8月)は一部コンテンツを隔週更新にします(夏休みです…)。 一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

データベースとSQL(16/20)

はじめに

 データ分析を行う場合、データの管理運用、蓄積も重要な論点となる。そのためにはSQLやデータベースの知識が求められる。そこでまずは

を基にSQLの勉強をしていく。

13. テーブルの足し算と引き算

  • 集合演算はレコードに対する四則演算である。
  • 集合演算を行うには\mathrm{UNION}\mathrm{INTERSECT}などの集合演算子を用いる。
  • 集合演算子は重複業を排除する。
  • 集合演算子で重複業を残すには\mathrm{ALL}オプションを付ける。

13.1 集合演算とは

 データベースでは集合とはレコードの集合(テーブルやビュー、クエリの実行結果)を指す。
 集合演算を行うことで2つのテーブルにあるレコードを集めた結果や共通するレコードを集めた結果、片方のテーブルにのみあるレコードを集めた結果などを得ることができる。これらをおこなえる演算子集合演算子という。

13.2 テーブルの和集合 UNION

 レコードの加算を行うには\mathrm{UNION}を用いる。すなわちレコードの和集合を求める。集合演算子はデフォルトで重複行を削除する

SELECT A.a, A.b
FROM ABC AS A
UNION
SELECT B.a, B,b
FROM ABC2 AS B

13.2 集合演算子の注意

 集合演算子には注意事項が存在する。\mathrm{DBMS}によっては以下を自動的に解消するものも存在するが、互換性が無いのとどのような解消をするのかが不明瞭になりやすいため、依存しないことが望ましい。

レコードの列数 加算を行う一方ともう一方の列数は一致させなければならない。
レコードのデータ型 対応する列はデータ型が一致していなければならない。
SELECT文での指定事項 \mathrm{UNION}で加算する\mathrm{SELECT}文は任意で問題ない。ただし\mathrm{ORDER\ BY}句のみは全体で1つのみしか許容されない。

13.3 重複行を残す演算子

 集合演算子はデフォルトで重複行を削除するため、意図的に重複行を残したいのであれば、\mathrm{UNION}の後に\mathrm{ALL}を追加する。

SELECT A.a, A.b
FROM ABC AS A
UNION ALL
SELECT B.a, B,b
FROM ABC2 AS B

13.4 テーブルの共通部分 INTERSECT

 2つのレコードの共通部分を選択するには\mathrm{INTERSECT}を用いる。

SELECT A.a, A.b
FROM ABC AS A
INTERSECT
SELECT B.a, B,b
FROM ABC2 AS B

 \mathrm{AND}は1つのテーブルに対して複数の条件の共通部分を選択する一方で、\mathrm{INTERSECT}は必ず2つのテーブルを使用し、その共通するレコードを選択する。

13.5 レコードの減算 EXCEPT

 2つのレコードの差分を取るには\mathrm{EXCEPT}*1を用いる。

SELECT A.a, A.b
FROM ABC AS A
EXCEPT
SELECT B.a, B,b
FROM ABC2 AS B

*1:\mathrm{Oracle}では\mathrm{MINUS}

プライバシーポリシー お問い合わせ