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

基本情報技術者 2013年 春期 午前(科目A)27


問題文

列A1~A5から成るR表に対する次のSQL文は、関係代数のどの演算に対応するか。
SELECT A1, A2, A3 FROM R  WHERE A4 = 'a'

選択肢

結合と射影
差と選択
選択と射影(正解)
和と射影

🔒 解説は解答すると表示されます

選択と射影【午前解説】

正解の理由

SQL文は「A4 = 'a' を満たす行だけを取り出す」処理と「A1,A2,A3 の列だけを出力する」処理を組み合わせています。関係代数では行の絞り込みを選択(selection, σ)といい、列の抽出を射影(projection, π)と呼びます。従ってこのSQLは選択と射影に対応し、正解は です。論理式で書くと次のようになります。

解法ステップ

  1. SQL文を分解する:SELECT句(列指定)と WHERE句(条件)に分ける。
  2. WHERE句を確認し、行を条件で絞る操作は関係代数の選択(σ)であると判定する。
  3. SELECT句を確認し、特定の列だけを取り出す操作は関係代数の射影(π)であると判定する。
  4. 組合せとして射影と選択の組合せ(選択→射影の順で表現)を答える。

選択肢別の誤答解説

  • ア: 結合と射影
    誤り。結合(JOIN)は複数の関係を結びつける操作で、単一の表Rに対するこのSQL文では該当しません。射影は正しいが結合は不要です。
  • イ: 差と選択
    誤り。差(集合差、−)は二つの関係の差集合を取る演算で、WHERE句とSELECT句だけの文では差を使っていません。選択は当てはまりますが、差は誤りです。
  • ウ: 選択と射影
    正解。WHEREによる行の絞込み=選択(σ)、SELECTによる列抽出=射影(π)に対応します。したがって が正解です。
  • エ: 和と射影
    誤り。和(UNION)は二つ以上の関係を合併する演算で、このSQL文は単一の関係から抽出しているため該当しません。射影は正しいが和は不要です。

よくある誤解

  • SELECT句を「検索(選択)」だと誤解して、SELECTを選択(σ)だと考えてしまう点。実際はSELECTは射影(π)に対応します。
  • 単語の混同(結合・和・差など):結合(JOIN)や和(UNION)、差(EXCEPT)は複数の関係の結合や集合演算であり、単一のテーブルに対するWHERE+SELECTとは別物です。
  • SQLの実行順序と関係代数の表記を混同すること:SQL文の見た目の順序(SELECTが先に見える)で関係代数の演算順を誤る受験者がいます。

補足コラム

  • 関係代数の記法では典型的に (選択)と (射影)を用い、今回のSQLは と表現します。
  • SQLの論理的評価順序は FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY です。見た目のSELECTが文頭にあっても、WHERE(選択)が先に適用される点を混同しないでください。
  • 射影は属性(列)を削る操作で、行の順序や重複削除の有無(DISTINCTの有無)にも注意が必要です。関係代数は集合として扱うため、重複は通常排除されます。

FAQ

Q: WHERE と HAVING の違いは何ですか?
A: WHEREはグループ化前の個々の行をフィルタし、HAVINGはGROUP BYで作ったグループに対して条件を課すため、両者は目的が異なります。
Q: ORDER BY は関係代数に対応しますか?
A: 関係代数は集合を扱う理論であり順序を持たないため、ORDER BY(並び替え)は純粋な関係代数の基本演算には含まれません。実務的には追加操作と考えます。
Q: SELECT * の場合、このSQLは何に対応しますか?
A: SELECT * では射影が全属性を選ぶだけなので、実質的には射影は空操作に近く、WHERE のみが選択(σ)として働きます。
Q: SQLで複数の条件や列がある場合の関係代数表現は?
A: 複数条件は選択の論理結合(例:)、複数列は射影のリスト(例:)として表現します。

関連キーワード: SQL、SELECT句、WHERE句、選択(σ)、射影(π)、リレーショナル代数、関係代数、演算の対応、射影と選択、SELECT WHERE
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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