FE EXAM

SELECT文(問合せ)

表から指定した列や行を取り出すSQLの問合せ文。

INTERACTIVE VISUALIZATION
WHERE(行を選択)
SELECT(列を射影)
SQL
SELECT 名前, 部署
FROM 社員
WHERE 部署 = '営業'
シナリオ
ステップ1 / 5
STEP 1/5元の表を確認する社員という表があり、4行のレコード(=1人分のデータのまとまり)が入っています。列は ID・名前・部署・年齢の4つです。ここから必要な部分だけを取り出すのが SELECT 文の役割です。
社員 表
ID名前部署年齢
1佐藤営業28
2鈴木開発34
3高橋営業41
4田中開発25
解説

📌
SELECT文とは

元の表SELECT結果表

SELECT 文とは、表から指定した列や行を取り出す SQL の問合せ文のことです。SQL(=データベースを操作する言語)の中でも、データを読み出すときに最もよく使う命令です。

身近な例で考えると、会員名簿から必要な人だけを書き写す作業に似ています。名簿全体(元の表)はそのまま残し、「営業部の人の名前だけ」のように欲しい部分をコピーして新しいリスト(結果表)を作ります。元データを壊さないのが特徴です。

上のツールで▶ボタンを押すと、FROM で表を決め、WHERE で行を絞り、SELECT で列を取り出して結果表ができるまでの流れを順番に確認できます。

📐
基本構文

SELECT 文の基本の形は、次の3つの部品でできています。

SELECT 列 FROM 表 WHERE 条件

それぞれの役割は次のとおりです。
SELECT 列:取り出したい列の名前を並べる(すべての列なら * と書く)
FROM 表:どの表から取り出すかを指定する
WHERE 条件:取り出す行の条件を書く(省略すると全行が対象)

書く順番は SELECT → FROM → WHERE ですが、コンピュータが内部で処理する順番は FROM → WHERE → SELECT です。先に表を決めて行を絞り、最後に列を取り出す、と覚えると上のツールの流れと一致します。

🔧
WHERE/ORDER BY等との組合せ

FROMWHEREGROUP BYORDER BY処理される順番

SELECT 文は、他のさまざまな句を組み合わせることでより細かい問合せができます。代表的なものは次のとおりです。


WHERE 句:条件に合う行だけに絞り込む(例:WHERE 年齢 >= 30
ORDER BY 句:結果を並び替える(昇順 ASC ・降順 DESC
GROUP BY 句:同じ値ごとにまとめて集計する(合計や件数を出す)
HAVING 句:GROUP BY でまとめた後のグループに条件をつける

これらは FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY の順に処理されます。たとえば「営業部の社員を年齢の高い順に並べる」なら、WHERE で営業部に絞ってから ORDER BY で並べ替える、というように組み合わせます。

📋
選択(行)と射影(列)の違い

元の表(4行 × 3列)名前部署年齢田中営業35山田開発28佐藤営業42鈴木総務31選択(WHERE)条件の行だけ残す結果(2行 × 2列)名前部署田中営業佐藤営業射影(SELECT)必要な列だけ取る

SELECT 文の操作は、大きく「選択」「射影」の2つに分けられます。
選択(行を絞り込む):WHERE 句が担当。「営業部の行だけ」のように、条件に合う行だけを取り出す操作
射影(列を取り出す):SELECT 句が担当。「名前列と部署列だけ」のように、必要な列だけを取り出す操作

なぜ「射影」という言葉を使うのか。元の表を「スクリーンに映す」とき、不要な列を映さないでおくイメージから来ています。光を当てて一部だけ通すフィルターに似ています。

上の図の例では、元の表(4行×3列)に対して「営業部」で選択し(2行に減る)、「名前・部署」だけを射影した(2列に減る)結果、2行×2列の表が得られています。両方をセットで使うことで、大きな表から本当に必要な部分だけを切り抜けます。

⚙️
SQLの実行順序:書く順と処理順は違う

書く順(SQL文)SELECTFROMWHEREORDER BY処理処理される順番FROMWHERESELECTORDER BY

SELECT 文は「書く順番」と「実際に処理される順番」が違います。文法上は SELECT → FROM → WHERE の順で書きますが、コンピュータ内部での処理は逆に近い順番で行われます。

なぜこの順番で処理するのか。まず「どの表から(FROM)」「どの行を(WHERE)」を決めてからでないと、「どの列を取り出すか(SELECT)」を計算できないからです。材料(FROM)を用意して、不要な分を切り落とし(WHERE)、最後に盛り付け(SELECT)するイメージです。
① FROM:どの表を使うか決める
② WHERE:行を絞り込む
③ SELECT:列を取り出す(別名・計算もここ)
④ ORDER BY:並び替え(最後。SELECT の結果を並べる)

この順番を知っておくと、「なぜ WHERE の中で SELECT の別名が使えないのか」(まだ列を取り出す前だから)といった疑問が自然と解けます。上のツールで▶を押すと、FROM → WHERE → SELECT の流れで表が変化していく様子を確認できます。

練習問題

🎯
基本情報技術者 練習問題

Q1.SELECT文の説明として最も適切なものはどれか。
A.表に新しいレコードを追加する命令
B.表から指定した列や行を取り出す問合せ文
C.表の既存レコードの値を書き換える命令
D.表そのものを作成する命令
Q2.「SELECT 名前 FROM 社員 WHERE 部署 = '営業'」が返す内容として正しいものはどれか。
A.全社員の全列
B.営業部の社員の全列
C.営業部の社員の名前列だけ
D.社員表を削除した結果
Q3.SELECT文で「行を絞り込む」操作と「列を取り出す」操作を担当する句の組合せとして正しいものはどれか。
A.行=SELECT、列=WHERE
B.行=WHERE、列=SELECT
C.行=FROM、列=WHERE
D.行=SELECT、列=FROM

関連コンテンツ