平成29年度 秋期 応用情報技術者試験 午前 問28
関係 R(ID,A,B,C)の A,C への射影の結果と SQL 文で求めた結果が同じになるように,a に入れるべき字句はどれか。ここで,関係 R を表 T で実現し,表 T に各行を格納したものを次に示す。
T
| ID | A | B | C |
|---|---|---|---|
| 001 | a1 | b1 | c1 |
| 002 | a1 | b1 | c2 |
| 003 | a1 | b2 | c1 |
| 004 | a2 | b1 | c2 |
| 005 | a2 | b2 | c2 |
〔SQL 文〕
SELECT [ a ] A, C FROM T
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:イ
関係演算の射影では、結果は関係(集合)なので重複する行は 1 つにまとめられます。表 T の A、C を取り出すと次のようになります。
- 001: (a1, c1)
- 002: (a1, c2)
- 003: (a1, c1) ← 001 と重複
- 004: (a2, c2)
- 005: (a2, c2) ← 004 と重複
射影の結果は (a1, c1)、(a1, c2)、(a2, c2) の 3 行です。SQL では重複行を除くために DISTINCT を指定します。
選択肢の検討
-
ア: ALL
誤り。ALL を指定すると重複行も全て出力されるため、(a1, c1) が 2 行出力され、射影の結果と一致しません。 -
イ: DISTINCT
正しい。DISTINCT を指定すると重複行が 1 行にまとめられ、(a1, c1)、(a1, c2)、(a2, c2) の 3 行となり、射影の結果と一致します。 -
ウ: ORDER BY
誤り。ORDER BY は結果の並べ替えを指定する句であり、SELECT の直後に書くことはできません。 -
エ: REFERENCES
誤り。REFERENCES は、表定義で外部キーの参照先を指定するときに使う字句です。
答え
イ: DISTINCT
出典:平成29年度 秋期 応用情報技術者試験 午前 問28