SELECT文・射影と選択とは?
SELECT文・射影と選択とは、SELECT文は、SQLにおいてデータベースからデータを取り出す際に使う基本的な命令である。取得したい列を指定する操作を「射影」、取得したい行を条件で絞り込む操作を「選択」と呼び、SELECT文はこの射影(どの列を取得するか)と選択(どの行を取得するか)を組み合わせて必要なデータだけを取り出す。例えば「顧客テーブルから氏名と電話番号だけを、東京都在住の顧客に限定して取得する」といった処理は、射影で列を絞り込み、選択(WHERE句)で行を絞り込むことで実現できる。データベースからの情報活用の最も基本となる操作である。
基本情報技術者試験の過去問では7回出題されています(2016年度〜2025年度)。
セレクトぶん・しゃえいとせんたく
SELECT文・射影と選択の意味
SELECT文は、SQLにおいてデータベースからデータを取り出す際に使う基本的な命令である。取得したい列を指定する操作を「射影」、取得したい行を条件で絞り込む操作を「選択」と呼び、SELECT文はこの射影(どの列を取得するか)と選択(どの行を取得するか)を組み合わせて必要なデータだけを取り出す。例えば「顧客テーブルから氏名と電話番号だけを、東京都在住の顧客に限定して取得する」といった処理は、射影で列を絞り込み、選択(WHERE句)で行を絞り込むことで実現できる。データベースからの情報活用の最も基本となる操作である。
SELECT文・射影と選択の具体例
販売管理システムで「SELECT 商品名, 価格 FROM 商品 WHERE 在庫数 > 0」のようなSELECT文を実行し、在庫がある商品の商品名と価格だけを一覧で取得する。
SELECT文・射影と選択は試験でどう引っ掛けられる?
「射影」は列の絞り込み、「選択」は行の絞り込みという対応関係が試験で問われやすく、日常語の「選択」のイメージと逆に覚えてしまうミスが起きやすい。
SELECT文・射影と選択と関連する用語
SELECT文・射影と選択が出た過去問
関係代数の演算のうち,関係R,Sの直積(R×S)に対応するSELECT文はどれか。ここで,関係R,Sを表R,Sに対応させ,表R及びSにそれぞれ行の重複はないもの…
正解:SELECT * FROM R, S
要点:直積はFROMに表を並べた全組合せ。行数はm×n
直積は、2つの関係のすべての行の組合せを作り、列を連結した関係を得る演算である。SQLではFROM句に複数の表を結合条件なしで並べると各行の全組合せが得られるため、これが直積に対応する。行数はRとSの行数の積になる。
出典:平成28年度 秋期 基本情報技術者試験 午前 問28(IPA)“社員”表と“部門”表に対して,次のSQL文を実行したときの結果はどれか。 SELECT COUNT(*) FROM 社員, 部門 WHERE 社員.所属 = …
正解:3
要点:結合+条件のCOUNT(*)は条件を満たす行の組合せ数を数える
部門表でフロアが2なのは情報システム・経理・法務・購買である。社員表のうち所属がこれらに一致するのは、経理が1人、情報システムが2人で、法務と購買には所属する社員がいない。結合条件を満たす行は合計3行なのでCOUNT(*)は3となる。
出典:平成28年度 秋期 基本情報技術者試験 午前 問29(IPA)関係XとYを結合した後,関係Zを得る関係代数演算はどれか。
正解:射影と選択
要点:行を絞るのが選択、列を取り出すのが射影
結合後の表には学生と学部の情報が全て並ぶが、得られた関係Zでは学部名が情報学部の行だけが残り、列も学部名・学生番号・氏名の3つに絞られている。行を条件で絞り込む演算が選択、必要な列だけを取り出す演算が射影なので、この二つを組み合わせればZが得られる。和は二つの関係の行を合わせる演算であり、ここでは使われていない。
出典:平成28年度 春期 基本情報技術者試験 午前 問27(IPA)“得点”表から、学生ごとに全科目の点数の平均を算出し、平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適切な字句はどれか。ここで、実線の下線は主…
正解:学生番号 HAVING AVG(点数) >= 80
要点:集約結果での絞り込みはWHEREでなくHAVINGを使う
学生ごとの平均を出すには、集計の単位となる学生番号でGROUP BYする必要がある。さらに「平均が80点以上」という条件は集約関数の結果に対する絞り込みなので、行単位で働くWHEREではなくグループ単位で働くHAVINGを使う。よって学生番号でグループ化し、HAVINGで平均点を判定する形になる。
出典:令和1年度 秋期 基本情報技術者試験 午前 問26(IPA)"中間テスト"表からクラスごと、教科ごとの平均点を求め、クラス名、教科名の昇順に表示するSQL文中のaに入れる字句はどれか。 中間テスト(クラス名、教科名、学生…
正解:GROUP BY クラス名, 教科名 ORDER BY クラス名, 教科名
要点:GROUP BYは集計の単位、ORDER BYは並べ替えの順序
クラスと教科の組合せごとに平均を出すので、GROUP BYにはクラス名と教科名の両方を指定する。学生番号まで含めると学生1人ごとの集計になってしまい、求める粒度と合わない。並び順の指定はクラス名、教科名の昇順なので、ORDER BYにはこの2つを順に書く。
出典:令和1年度 春期 基本情報技術者試験 午前 問27(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。