基本情報暗記無料で始める

EXCEPTとは?えくせぷと

EXCEPTとは、SQLで、1つ目のSELECT文の結果から、2つ目のSELECT文の結果にもある行を取り除き、残りを返す集合演算子(差集合)。「SELECT文A EXCEPT SELECT文B」は「Aにあって、Bに無い行」を返す。左右を入れ替えると結果が変わる点が、入れ替えても結果が同じUNION(和集合)・INTERSECT(積集合)との違いである。2つのSELECT文の列の数と対応する列のデータ型をそろえる決まりと、結果の重複した行が1行にまとめられる点はUNION・INTERSECTと同じ。関係代数(表を集合として扱う演算の体系)の「差」に当たる。製品によってはMINUSという名前で同じ働きを持つ(Oracle Databaseなど)。

最終更新:2026-10-10

試験情報

基本情報技術者試験の頻出用語/テクノロジ系

別名:EXCEPT演算子、MINUS

基本情報を最短で暗記・合格する →

背景

「名簿Aには載っているが名簿Bには載っていない人」のような問いは業務でよく出てくるが、WHERE句(取り出す行の条件)だけで書くと、SELECT文の中に「名簿Bに無いこと」を確かめるもう1本のSELECT文を入れ子にする必要があり、読みにくい。関係代数の「差」の演算をそのままSQLで書けるようにしたのがEXCEPTである。

具体例

ネット通販で、カートに商品を入れたのに買わなかった会員にお知らせを送る。 SELECT 会員ID FROM カート履歴 EXCEPT SELECT 会員ID FROM 注文 1行目は「カートに入れたことのある会員ID」、3行目は「注文したことのある会員ID」を取り出す。カート側が{201, 202, 203, 204}、注文側が{202, 204, 209}なら、結果は{201, 203}。注文側にしか無い209は結果に出ない。順番を逆にして「注文 EXCEPT カート履歴」の形にすると結果は{209}になり、「カートを使わずに注文した会員」という別の意味になる。

試験での引っ掛け

差には向きがある。「A EXCEPT B」と「B EXCEPT A」は別の結果になり、UNION(和)やINTERSECT(積)のように入れ替えても同じにはならない。また、関係代数の演算とSQLの対応を問う問題では、FROM句に2つの表を並べて条件を付けない「SELECT * FROM R, S」は直積(2つの表の行の全組合せ。行数はRの行数×Sの行数)であり、差ではない。EXCEPTは差、UNIONは和、INTERSECTは積と、3つを対で覚える。

関連用語

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

基本情報を最短で暗記・合格する →

試験での特徴
  • 分野:テクノロジ系
  • 差には向きがある。