情報処理試験を勉強していると、「選択と射影って何が違うの?どっちが行でどっちが列?」と混乱しがちです。
この記事では、関係演算の「選択(Selection)」に絞って、意味・仕組み・射影や結合との違いを図解で整理します。
対象試験と出題頻度
選択は、ITパスポート・基本情報技術者・応用情報技術者で出題されるテーマです。
関係データベースの操作を問う問題で、「射影」「結合」との区別が繰り返し問われます。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
選択(Selection)とは、一言で言うと
「表(テーブル)から、指定した条件に合致する行(タプル)だけを取り出す関係演算」
のことです。
イメージとしては、「名簿から『営業部の社員だけ』を横一列ごと抜き出す操作」です。
名簿には社員全員の情報が並んでいますが、「部署=営業部」という条件で絞ると、該当する行だけが手元に残ります。列(氏名・年齢・入社年など)は全部そのまま残るのがポイントです。
📊 選択の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Selection |
| 関係代数の記号 | σ(シグマ) |
| 操作対象 | 行(タプル/レコード) |
| SQLでの対応 | WHERE句による行の絞り込み |
| 分類 | 関係演算(関係代数の基本操作) |
解説
関係データベースでは、表に蓄積された大量のデータから必要な部分だけを取り出す操作が不可欠です。この操作を理論的に定義したのが「関係代数」であり、選択はその中の基本操作の一つです。
図解:選択の動作イメージ
社員テーブルから「部署=営業部」の行だけを取り出す場面を図にします。
選択(Selection)の動作イメージ
▼ 元の社員テーブル
| 社員ID | 氏名 | 部署 | 年齢 |
|---|---|---|---|
| 001 | 田中 | 営業部 | 28 |
| 002 | 鈴木 | 開発部 | 32 |
| 003 | 佐藤 | 営業部 | 25 |
| 004 | 高橋 | 総務部 | 30 |
▼ 選択演算「条件:部署=営業部」を実行
▼ 選択結果(条件に合う行だけ残る)
| 社員ID | 氏名 | 部署 | 年齢 |
|---|---|---|---|
| 001 | 田中 | 営業部 | 28 |
| 003 | 佐藤 | 営業部 | 25 |
▲ 列(社員ID・氏名・部署・年齢)はすべてそのまま残り、行だけが絞られる
SQLとの対応
前述の選択演算は、SQLではSELECT文のWHERE句で実現します。
— 選択演算に対応するSQL
SELECT * FROM 社員 WHERE 部署 = ‘営業部’;
SELECT * は「すべての列を取り出す」の意味です。WHERE句の条件で行を絞り込むため、結果は関係代数の選択と同じになります。
射影・結合との違い
選択と混同しやすいのが「射影」と「結合」です。3つの違いを「何を取り出すか」の軸で整理します。ここだけは確実に押さえてください。
| 演算名 | 記号 | 操作内容 | SQLでの対応 |
|---|---|---|---|
| 選択 | σ | 条件に合う行を取り出す | WHERE句 |
| 射影 | π | 指定した列を取り出す | SELECT句の列指定 |
| 結合 | ⋈ | 共通属性で複数の表をつなげる | JOIN句 |
選択と射影の視覚的な違い
選択 = 行を絞る
列はそのまま全部残る
射影 = 列を絞る
行2
行3
行4
行はそのまま全部残る
覚え方は「選択=行(横一列をまるごと選ぶ)」「射影=列(縦一列を映し出す)」です。「射影」には「影を映す」という意味があり、特定の列だけをスクリーンに映すイメージで覚えると混同しにくくなります。
何となく覚えたい人向け:選択のポイント(折りたたみ)
選択 = 行を取り出す。条件に合う行だけを抜き出し、列はすべてそのまま残る。SQLではWHERE句が対応する。
射影 = 列を取り出す。指定した列だけを抜き出し、行はすべてそのまま残る。SQLではSELECT句の列指定が対応する。
結合 = 表をつなげる。共通の列値を基準に2つの表を1つにまとめる。SQLではJOIN句が対応する。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 選択の核心を3行で
・表から条件に合う「行」を取り出す関係演算
・SQLではWHERE句が選択演算に対応する
・射影(列を取り出す)・結合(表をつなげる)と操作対象が異なる
試験ではこう出る!
選択は、IP・FE・APの午前問題で関係演算の区別問題として繰り返し出題されています。出題パターンは大きく2つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H28春 午前 問27 |
関係XとYを結合した後、関係Zを得る関係代数演算を選ぶ問題 | ・正解は「射影と選択」 ・条件に合う行の抽出=選択、指定した列の抽出=射影を組み合わせて判断 |
| FE H30秋 午前 問28 |
上記H28春 問27と同一問題(流用) | ・FEでは同一問題が繰り返し出題される典型例 |
| AP H23特別 午前 問29 |
表から特定の列を取り出す操作を選ぶ問題 | ・正解は「射影」 ・選択は行の抽出であることを区別できるかがポイント |
| IP R5 問100 |
関係データベースの結合操作の説明として正しいものを選ぶ問題 | ・選択肢に「条件に合致したレコードを抜き出す」=選択の説明が登場 ・選択・射影・結合の説明文を正確に区別する |
📝 IPA試験での出題パターン
パターン1:「この操作は何という演算か?」
「条件に合致した行を取り出す操作」「特定の列を取り出す操作」など説明文を提示し、選択・射影・結合・和のいずれかを選ばせる形式。「行=選択」「列=射影」の対応を覚えていれば即答できる。
パターン2:「関係Zを得るには何の演算が必要か?」
FE H28春 問27のように、結合後の表から特定の行と列を取り出す手順を問う形式。選択と射影の両方を組み合わせる応用問題だが、それぞれの定義を理解していれば確実に正解できる。
試験ではここまででOKです。記号の書き方や形式的な数式表現まで問われることはないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 関係データベースにおいて、表から条件に合致した行(タプル)を取り出す関係演算はどれでしょうか?
- A. 射影(Projection):表から指定した列(属性)だけを取り出す操作。
- B. 選択(Selection):表から指定した条件を満たす行(タプル)だけを取り出す操作。
- C. 結合(Join):複数の表を共通する属性で結び付け、1つの表にまとめる操作。
正解と解説を見る
正解:B
解説:
選択(Selection)は、表から条件に合致する行(タプル)を取り出す関係演算です。SQLのWHERE句がこの演算に対応します。
選択肢Aの射影(Projection)は、表から指定した列(属性)を取り出す操作で、行の絞り込みは行いません。SQLではSELECT句の列指定がこれに当たります。選択肢Cの結合(Join)は、2つの表を共通の属性値で横に結び付けて1つの表にする操作であり、1つの表の中から行や列を取り出す操作とは性質が異なります。
よくある質問(FAQ)
Q. 「選択」と「SELECT文」は同じ意味ですか?
異なります。「選択(Selection)」は関係代数の演算名で、条件に合う行を取り出す操作を指します。一方、SQLの「SELECT文」はデータを検索する命令全体を指し、行の絞り込み(=選択)だけでなく列の取り出し(=射影)やグループ化なども含みます。名前が紛らわしいため、試験の選択肢でひっかけに使われることがあります。
Q. 選択と射影を同時に使うことはありますか?
あります。FE H28春 午前問27がまさにこのパターンです。結合後の表から「部署=営業部」の行を抽出(選択)し、さらに「氏名・部署名」の列だけを取り出す(射影)という2つの演算を組み合わせています。SQLでは SELECT 氏名, 部署名 FROM ... WHERE 部署 = '営業部' のように1文で表現できます。
Q. 関係演算と集合演算は何が違いますか?
関係演算は関係データベース固有の操作(選択・射影・結合・商)を指します。集合演算は数学の集合論に基づく操作(和・差・積・直積)です。IPA試験では両方まとめて「関係代数の演算」として出題されますが、選択・射影・結合は関係演算側に分類される点を意識しておくと整理しやすくなります。
Q. 実務で「選択演算」という言葉を使う機会はありますか?
日常的に「選択演算」と口にする場面はほとんどありません。実務ではSQLの WHERE 部署 = '営業部' のようにSQL文で直接記述するため、わざわざ関係代数の用語で呼ぶことは稀です。ただし、データベースの性能チューニングやクエリ最適化の議論では、内部的にどの演算が行われているかを理解する基礎知識として役立ちます。