戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2017年 秋期 午前228


問題文

関係R (ID, A, B, C)の A,Cへの射影の結果と SQL文で求めた結果が同じになるように、a に入れるべき字句はどれか。ここで、関係Rを表Tで実現し、表Tに各行を格納したものを次に示す。
応用情報技術者 2017年 秋期 午前2 問28の問題画像

選択肢

ALL
ORDER BY(正解)
DISTINCT
REFERENCES

関係RのA,Cへの射影とSQL文の結果一致問題【午前2 解説】

正解の理由

選択肢イのORDER BYは結果の並び順を指定する句であり、重複排除とは無関係です。
正解はウのDISTINCTで、これを指定することでSQLの結果から重複行が除かれ、関係の射影結果と一致します。
したがって、SELECT DISTINCT A, C FROM Tが正しいSQL文です。

解法ステップ

  1. 射影とは関係の特定の属性だけを抽出し、重複を除く操作であることを確認する。
  2. SQLのSELECT文で重複を除くキーワードが何かを思い出す。
  3. 選択肢の意味を整理し、重複排除に該当するのはDISTINCTであると判断する。
  4. SELECT DISTINCT A, C FROM Tが射影結果と一致するSQL文であると結論づける。

選択肢別の誤答解説

  • ア: ALLは重複を許すため、射影結果と異なる。
  • イ: ORDER BYは並び替え句であり、重複排除には関係ない。
  • ウ: DISTINCTは重複を排除し、射影の結果と一致するため正解。
  • エ: REFERENCESは外部キー制約の指定であり、SQL文の選択句として不適切。

よくある誤解

  • ORDER BYを重複排除と勘違いしやすいですが、並び替えのみで重複は除きません。
  • ALLはデフォルトで重複を許すため、射影結果とは異なります。

補足コラム

関係代数の射影は、指定した属性だけを抽出し、重複を除いた集合を返します。SQLのSELECT文はデフォルトで重複を許すため、射影と同じ結果を得るにはDISTINCTを使う必要があります。ORDER BYは結果の並び順を制御する句であり、結果の内容には影響しません。

FAQ

Q: SQLのSELECT文で重複を除くにはどうすればよいですか?
A: SELECT DISTINCTを使うことで、重複行を除いた結果を取得できます。
Q: ORDER BY句は射影の結果に影響しますか?
A: いいえ。ORDER BYは結果の並び順を変えるだけで、重複の有無には影響しません。

関連キーワード: 射影、DISTINCT, SQL, 重複排除、関係代数
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について