集合演算とは?しゅうごうえんざん
集合演算とは、2つの問合せ結果を行の集合とみなして合成するSQLの演算で、和がUNION、共通部分がINTERSECT、差がEXCEPT(製品によってはMINUS)にあたる。使うには両側の列数が同じで、対応する列のデータ型が揃っていることが前提になる。結合との違いと重複行の扱いが問われる。考え方は数学の和集合・積集合・差集合と同じで、集合どうしの等式やベン図の形で問われることもある。
最終更新:2026-10-09
この語が出る過去問を解く →背景
関係データベースは表を集合として扱う理論の上に立っており、データ操作にも和・差・積という集合の演算がそのまま用意されている。条件を1本のWHERE句に押し込むと読みにくくなる場面でも、条件ごとに問合せを分けて最後に合成すれば意図が素直に表せる。列を横に足す関係演算の結合とは目的が別で、シラバスでも集合演算と関係演算は並べて挙げられている。
具体例
「今月出席した学生」UNION「先月出席した学生」なら、どちらかに出席した学生の一覧が得られる。同じ2つをINTERSECTでつなげば2か月とも出席した学生、EXCEPTでつなげば今月だけ出席した学生が返る。
試験での引っ掛け
UNIONは結果から重複行を自動的に取り除き、UNION ALLは取り除かない。行数を答えさせる問題はここで差が付く。また集合演算が合成するのは行方向であって、列を横に増やす結合とは働きが違うため、問題文が「縦につなぐ」のか「横に並べる」のかを読み分けたい。
関連用語
出た過去問
出典:平成29年度 春期 基本情報技術者試験 午前 問1(IPA)解説で登場
集合A,B,Cを使った等式のうち,集合A,B,Cの内容によらず常に成立する等式はどれか。ここで,∪は和集合,∩は積集合を示す。
正解:(A∩C)∪(B∩C) = (A∪B)∩C
要点:∩は∪に分配できる:(A∪B)∩C=(A∩C)∪(B∩C)
集合演算には「∩は∪に対して分配できる」という分配法則があり、(A∪B)∩C は (A∩C)∪(B∩C) に等しくなります。これは要素xがCに属し、かつAまたはBに属する、という条件を書き換えただけなので、A・B・Cの中身に関係なく常に成立します。他の等式は、たとえばA={1}、B={}、C={1}のような具体例を1つ当てはめるだけで両辺が食い違い、反例が作れます。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。