前回の勉強内容
勉強のきっかけになった過去問
関係R,Sに次の演算を行うとき,RとSが和両立である必要のないものはどれか。
- 共通集合
- 差集合
- (正解)直積
- 和集合
出典 : データベーススペシャリスト試験 令和3年秋期 午前Ⅱ 問11

和両立は、列数と型が一緒のこと
テーブルの構成がおんなじだけど内容が違うのが「和両立」です。
和両立である表R(ID,NAME)、S(NO,NAMAE)がある。差集合R-Sを求めるSELECT文とするために、aに入れるべき適切な字句はどれか。ここで、下線部は主キーを表す。また、NAMEとNAMAEはNULL不可とする。
SELECT * FROM R WHERE [ a ] (SELECT * FROM S WHERE S.NO=R.NO AND S.NAME=R.NAME)
- EXISTS
- (正解)NOT EXISTS
- NOT IN
- R.ID NOT IN
出典 : 情報セキュリティスペシャリスト試験 平成22年秋期 午前Ⅱ 問21
例えば、
表Rには2列で[数値][文字]の列があって、
| ID(数値) | NAME(文字) |
|---|---|
| 1 | すずき |
| 2 | たぬき |
| 3 | きつね |
表Sにも2列で[数値][文字]の列があると
| NO(数値) | NAMAE(文字) |
|---|---|
| 1 | たなか |
| 2 | たぬき |
| 3 | ねこ |
表Rと表Sは「和両立」になります。
「差集合R-S」ということで「表Rから表Sのデータを除いたデータ」と考えて
SELECT * FROM R WHERE NOT EXISTS (SELECT * FROM S WHERE S.NO=R.NO AND S.NAME=R.NAME)
となり以下を取得できる。
| ID(数値) | NAME(文字) |
|---|---|
| 1 | すずき |
| 3 | きつね |
和両立は、同じような構成とも考えられる。
同じような構成なので、「合わせる」「差をとる」「同じデータをとる」ことができます。
| 集合の名前 | SQLの結合 | ざっくり言うと |
|---|---|---|
| 和集合 | UNION | データを縦に合わせる |
| 差集合 | EXCEPT NOT EXISTS |
差分 |
| 共通集合 | INTERSECT | 共通のデータで「∩」で書かれるやつ |
| 直積 | CROSS JOIN | データを横に合わせる |
でも「直積」だけは横にくっつけるので、同じような構成にする必要はないのです。
ponsuke-tarou.hatenablog.com
和両立である関係RとSがある。R∩Sと等しいものはどれか。ここで,-は差演算,∩は共通集合演算を表す。
- (正解)R-(R-S)
- R-(S-R)
- (R-S)-(S-R)
- S-(R-S)
出典 : データベーススペシャリスト試験 平成21年春期 午前Ⅱ 問8

