SELECT文・射影と選択とは?
SELECT文・射影と選択とは、SELECT文は、SQLにおいてデータベースからデータを取り出す際に使う基本的な命令である。取得したい列を指定する操作を「射影」、取得したい行を条件で絞り込む操作を「選択」と呼び、SELECT文はこの射影(どの列を取得するか)と選択(どの行を取得するか)を組み合わせて必要なデータだけを取り出す。例えば「顧客テーブルから氏名と電話番号だけを、東京都在住の顧客に限定して取得する」といった処理は、射影で列を絞り込み、選択(WHERE句)で行を絞り込むことで実現できる。データベースからの情報活用の最も基本となる操作である。
応用情報技術者試験の過去問では12回出題されています(2016年度〜2024年度)。
セレクトぶん・しゃえいとせんたく
SELECT文・射影と選択の意味
SELECT文は、SQLにおいてデータベースからデータを取り出す際に使う基本的な命令である。取得したい列を指定する操作を「射影」、取得したい行を条件で絞り込む操作を「選択」と呼び、SELECT文はこの射影(どの列を取得するか)と選択(どの行を取得するか)を組み合わせて必要なデータだけを取り出す。例えば「顧客テーブルから氏名と電話番号だけを、東京都在住の顧客に限定して取得する」といった処理は、射影で列を絞り込み、選択(WHERE句)で行を絞り込むことで実現できる。データベースからの情報活用の最も基本となる操作である。
SELECT文・射影と選択の具体例
販売管理システムで「SELECT 商品名, 価格 FROM 商品 WHERE 在庫数 > 0」のようなSELECT文を実行し、在庫がある商品の商品名と価格だけを一覧で取得する。
SELECT文・射影と選択は試験でどう引っ掛けられる?
「射影」は列の絞り込み、「選択」は行の絞り込みという対応関係が試験で問われやすく、日常語の「選択」のイメージと逆に覚えてしまうミスが起きやすい。
SELECT文・射影と選択と関連する用語
SELECT文・射影と選択が出た過去問
"サッカーチーム"表と"審判"表から、条件を満たす対戦を導出するSQL文のaに入れる字句はどれか。 〔条件〕 ・出場チーム1のチーム名は出場チーム2のチーム名よ…
正解:C.所属チーム名 NOT IN (A.チーム名, B.チーム名)
要点:複数値との不一致はNOT INで表す
審判は自分の所属チームが出場する対戦を担当できないので、審判の所属チーム名が出場チーム1と出場チーム2のどちらとも一致しないという条件が必要です。これは所属チーム名が2つのチーム名の集合に含まれないこと、すなわち NOT IN で簡潔に表せます。OR で結ぶと片方さえ違えば真になってしまい、自分のチームの対戦を担当する行が残ってしまいます。
出典:平成28年度 秋期 応用情報技術者試験 午前 問29(IPA)関係R(ID, A, B, C)のA, Cへの射影の結果とSQL文で求めた結果が同じになるように、aに入れるべき字句はどれか。ここで、関係Rを表Tで実現し、表T…
正解:DISTINCT
要点:関係代数の射影は重複を除くのでSQLではDISTINCTが要る
関係代数の射影は集合演算なので、結果に重複する行は現れない。一方SQLのSELECTは既定で重複行をそのまま返すため、A列とC列だけを取り出すと同じ値の組が複数出てしまう。重複を取り除くDISTINCTを指定することで、射影の結果と一致させられる。
出典:平成29年度 秋期 応用情報技術者試験 午前 問28(IPA)RDBMSにおいて、特定の利用者だけに表を更新する権限を与える方法として、適切なものはどれか。
正解:GRANT文で許可する。
要点:表への権限付与はGRANT文、取消しはREVOKE文で行う
SQLのデータ制御言語(DCL)であるGRANT文は、指定した利用者やロールに対して表への SELECT・INSERT・UPDATE・DELETE などの権限を個別に与える。特定の利用者だけに更新権限を与えるにはGRANT文でUPDATE権限をその利用者に付与すればよく、取り消すときはREVOKE文を使う。
出典:令和1年度 春期 応用情報技術者試験 午前 問27(IPA)過去3年分の記録を保存している“試験結果”表から、2018年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧を取得するSQL文はどれか。ここで…
正解:SELECT クラス名, AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2018-04-01' AND '2019-03-31' GROUP BY クラス名 HAVING AVG(点数) >= 600
要点:行の絞り込みはWHERE、集約結果の絞り込みはHAVINGに書く
2018年度に限定するには受験年月日を2018年4月1日から2019年3月31日の範囲でWHERE句により行単位で絞り込む。そのうえでクラス名でGROUP BYし、グループ全体の集計値に対する条件はHAVING句に書く必要があるため、HAVING AVG(点数) >= 600 とする。
出典:令和1年度 春期 応用情報技術者試験 午前 問28(IPA)表に対するSQLのGRANT文の説明として、適切なものはどれか。
正解:表の利用者に対し、表への問合せ、更新、追加、削除などの操作権限を付与する。
要点:GRANTは表への操作権限を利用者に付与するDCL
GRANTは、表やビューなどのオブジェクトに対する操作権限(SELECT、UPDATE、INSERT、DELETEなど)を利用者やロールに与えるSQLのデータ制御文である。取り消すときはREVOKEを使う。接続の認証や暗号化とは別の機能である。
出典:令和2年度 10月 応用情報技術者試験 午前 問26(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。