標準 情報・IT 学習時間の目安:約14分

SQL:「どの列を・どの表から・どの条件で」取り出す

🔑 一言でいうと

SQLはデータベースに指示を出すための言葉です。基本は SELECT 列 FROM 表 WHERE 条件 の3点セットで、「どの列をどの表からどの行だけ」取り出すかを書きます。表計算の「必要な行だけ絞りこむ」作業を、命令文で正確にくり返せるようにしたものだと考えるとわかりやすいです。

このページで学べること

  • SQLが何をするための言葉かわかる
  • SELECT・FROM・WHERE の役割がわかる
  • 条件で行を絞りこめる
  • 並べ替え・件数の数え方がわかる

前提知識

基本の形は3つの語だけ

💡 3点セット
  • SELECT:取り出すを指定(* はすべての列)
  • FROM:取り出すを指定
  • WHERE:残すの条件を指定(省略すると全行)

次のような「会員」表があるとします。

会員テーブル
会員ID名前年齢都道府県
1青木25東京都
2井上17大阪府
3上田34東京都

「20歳以上の会員の名前」を取り出すなら SELECT 名前 FROM 会員 WHERE 年齢 >= 20; です。結果は青木・上田の2件。条件に合う行だけ、指定した列だけが返ります。

並べ替えは ORDER BY(DESC で大きい順)、件数を数えるのは COUNT(*) を使います。文の最後には ;(セミコロン)を付けます。

⚠️ 安全に扱うために

利用者が入力した文字をそのままSQLに埋めこむと、SQLインジェクションという攻撃を受けるおそれがあります。実際のプログラムでは値を直接つなげず、専用のしくみ(プレースホルダ)を使います。くわしくは情報セキュリティを参照してください。

図でイメージする(行と列でしぼる)

会員テーブル
ID名前年齢都道府県
1青木25東京都
2井上17大阪府
3上田34東京都

WHERE 年齢 >= 20 → 青木・上田の行が残る

SELECT 名前
取り出した結果
名前
青木
上田

結果は2件

WHERE で行をしぼり、SELECT で列を選びます。順番は「どの行か」→「どの列か」です。

例題(くわしい手順)

上の会員テーブルから「東京都に住む会員の名前と年齢を、年齢の大きい順に」取り出します。

🧭 手順
  1. 列を決める:名前と年齢 → SELECT 名前, 年齢
  2. 表と条件:FROM 会員 WHERE 都道府県 = '東京都'(文字は引用符で囲む)
  3. 並べ替え:ORDER BY 年齢 DESC を最後に付ける
SELECT 名前, 年齢 FROM 会員 WHERE 都道府県 = '東京都' ORDER BY 年齢 DESC;

結果は「上田 34」「青木 25」の順。WHERE → ORDER BY の順番で書くのが決まりです(逆にすると文法エラーになります)。

SELECT * と列を指定する場合の違い

SELECT * と列指定の違い
書き方取り出す内容向いている場面
SELECT *すべての列中身を確認したいとき
SELECT 名前, 年齢指定した列だけ実際の処理(通信量が少なく、必要な情報だけ扱える

個人情報を扱うときは、必要な列だけを取り出すのが安全です(データ最小化の考え方)。

よくある間違い

⚠️ 間違い①:文字列を引用符で囲まない

WHERE 都道府県 = 東京都 のように書くとエラーになります。文字は '東京都' のように引用符で囲みます(数値は囲みません)。

⚠️ 間違い②:WHERE と ORDER BY の順番を逆にする

SQLは SELECT → FROM → WHERE → ORDER BY の順で書きます。順番を入れかえると文法エラーになります。

⚠️ 間違い③:等しくないを =! と書く

「等しくない」は <> または != です。また、空欄(NULL)かどうかは = ではなく IS NULL で調べます。

練習問題

まず自分で解いてから解説を開きましょう。

基本1

会員テーブルの全データを取り出すSQLを書きなさい。

次から選びましょう

解答・解説を見る

答え:SELECT * FROM 会員;

* はすべての列という意味です。WHERE を省略しているので全行が対象になります。

基本2

会員テーブルから、年齢が20以上の行だけを取り出す条件を書きなさい。

次から選びましょう

解答・解説を見る

答え:WHERE 年齢 >= 20

数値なので引用符は不要です。20 も含めたいので > ではなく >= を使います。

応用

上の会員テーブル(青木25・井上17・上田34)で SELECT COUNT(*) FROM 会員 WHERE 年齢 >= 20; の結果はいくつですか。

解答・解説を見る

答え:2

条件を満たすのは青木(25)と上田(34)の2件。COUNT(*) はその件数を返します。

応用2

ORDER BY 年齢 DESC はどんな並び順になりますか。

次から選びましょう

解答・解説を見る

答え:年齢の大きい順(降順)

DESC は降順、ASC(省略時)は昇順です。上の表なら上田34 → 青木25 → 井上17 の順になります。


よくある質問

Q. SQLとは何ですか?

データベースにデータの取り出しや追加を指示するための言葉です。基本は SELECT 列 FROM 表 WHERE 条件 の形で、必要な行と列だけを取り出せます。

Q. SELECT * はどんな意味ですか?

すべての列を取り出すという意味です。中身の確認には便利ですが、実際の処理では必要な列だけを指定したほうが安全で効率的です。

Q. WHERE の条件で文字を扱うときの注意は?

文字列は '東京都' のように引用符で囲みます(数値は囲みません)。また利用者の入力をそのままSQLに埋めこむとSQLインジェクションの危険があるため、プレースホルダを使います。

Q. SQLで並べ替えるにはどう書きますか?

文の最後に ORDER BY を書きます。「ORDER BY 価格」で安い順、「ORDER BY 価格 DESC」で高い順になります。

次に学ぶ内容

📚 参考・監修方針

高等学校「情報I」および基本的なIT知識の範囲を参照し、オリジナルに作成(実在試験問題の転載はありません)。正確性は編集・監修フローで確認しています(仕様書 第11章)。

最終更新日: 最終確認日: このページの誤りを報告する