コンテンツへスキップ
ホーム » 記事一覧 » SQLのSELECT文の使い方|基本構文から条件指定まで初心者向けに解説

SQLのSELECT文の使い方|基本構文から条件指定まで初心者向けに解説

SQLのSELECT文は、データベースから必要なデータを取り出すために使います。「商品名だけ見たい」「500円以上の商品を探したい」ときも、基本の書き方を少しずつ組み合わせれば大丈夫です。この記事では、4件の商品一覧を使って、SQLと実行結果を見比べながら学びます。

💡 このページでわかること

  • SELECTとFROMを使った基本の書き方
  • WHEREで条件を指定し、ORDER BYで並べ替える方法
  • 実行前の確認と、結果が出ないときの見直し方

SELECT文とは?データを取り出すSQL

SELECT文とは、データベースに保存された情報を検索し、結果として取り出すためのSQLです。データベースは情報を整理して保存する仕組み、SQLはその情報を操作するための言語です。

たとえば、お店の商品一覧から商品名と価格を表示するときに使います。この記事で扱う、表のデータを読むだけのSELECT文は、保存済みのデータを書き換えません。

基本の形は次のとおりです。「列名」「テーブル名」の部分を、実際の名前に置き換えて使います。

SELECT 列名
FROM テーブル名;

テーブルとは、データベースの中で情報を表の形に整理したものです。縦の項目を「列」、横に並ぶ1件分の情報を「行」と呼びます。商品一覧なら「商品名」「価格」が列で、商品1つ分が1行です。

全体の流れと、練習に使う商品一覧

最初は「何を表示するか」「どの商品を探すか」「どの順に並べるか」の3つに分けて考えましょう。

  1. SELECTとFROMで、表示する列と元のテーブルを決める。
  2. WHEREで、条件に合う行だけに絞る。
  3. ORDER BYで、結果の並び順を決める。

例では、次の4件が入った商品テーブル products を使います。id は商品を区別する番号、name は商品名、price は価格(円)、category は商品分類です。

idnamepricecategory
1ノート200文房具
2ペン100文房具
3マグカップ800日用品
4タオル500日用品

コードは、学習用データベースに接続したSQL入力画面に貼り付けて実行します。この記事では接続設定と、上の商品テーブルの準備が済んでいる前提です。表を記事で見るだけでは、データベースにテーブルは作られません。

実行環境がない場合も、下の結果例を見比べて読み進められます。職場で試すときは、学習・検証用の接続先と、使用できるテーブル名を担当者に確認してください。

STEP1:SELECTとFROMで取り出す列を選ぶ

商品名と価格だけを見たいなら、SELECTの後ろに name, price と書きます。FROMの後ろには、取り出し元のテーブル名 products を指定します。

SELECT name, price
FROM products;
nameprice
ノート200
ペン100
マグカップ800
タオル500

表示する列が複数ある場合は、半角カンマ , で区切ります。最後の列の後ろにカンマは付けません。末尾の半角セミコロン ; は、SQL文の終わりを示します。

このSQLでは行を絞っていないため、4件すべてが対象です。結果表の並び順は一例で、ORDER BYを指定するまでは保証されません。

SELECTは商品名と価格の列を選び、WHERE price >= 500はマグカップ800円とタオル500円の行を選ぶ

まずは全列を確認したいとき:SELECT *

*(アスタリスク)は「すべての列」を表します。

SELECT *
FROM products;

この例では、元の表と同じ4列・4件が対象です。「すべての列」になるのは *、「すべての行」になるのはWHEREで絞っていないためです。普段の確認では、必要な列を指定すると結果を読みやすくできます。

STEP2:WHEREで条件に合う行を絞る

WHEREは、取り出したい行の条件を書く部分です。500円以上の商品を探すなら、WHERE price >= 500 と書きます。

SELECT name, price
FROM products
WHERE price >= 500;
nameprice
マグカップ800
タオル500

>= は「以上」という意味です。500円ちょうどのタオルも含まれます。> にすると「より大きい」になり、タオルは対象から外れます。この結果も、行の順番は一例です。

記号意味条件の例
=等しいprice = 500
<>等しくないprice <> 500
>より大きいprice > 500
>=以上price >= 500
<より小さいprice < 500
<=以下price <= 500

文字を条件にするときはシングルクォートで囲む

商品分類が「文房具」の行を探す場合は、文字を半角のシングルクォート ' で囲みます。

SELECT name, price
FROM products
WHERE category = '文房具';

該当するのは「ノート:200円」と「ペン:100円」です。表示しない列でも、WHEREの条件に使えます。文字の値は '文房具'、数値の価格は 500 のように書き分けましょう。

複数の条件を組み合わせる:AND・OR

両方の条件を満たす行を探すときはANDを使います。

SELECT name, price
FROM products
WHERE category = '日用品'
  AND price >= 600;

「日用品で、かつ600円以上」なので、結果は「マグカップ:800円」の1件です。どちらか一方の条件を満たせばよい場合はORを使います。ANDとORを混ぜるときは、(条件A OR 条件B) AND 条件C のように、ひとまとまりにしたい条件を括弧で囲むと意図が伝わります。

STEP3:ORDER BYで結果を並べ替える

ORDER BYは、結果の並び順を指定する部分です。500円以上の商品を価格の安い順に見るなら、次のように書きます。

SELECT name, price
FROM products
WHERE price >= 500
ORDER BY price ASC, id ASC;
nameprice
タオル500
マグカップ800

ASCは小さい順(昇順)、DESCは大きい順(降順)です。高い順にしたい場合は、price ASC を price DESC に変えます。ASCは省略できますが、慣れるまでは書くと意図を確認しやすくなります。

id ASC は、同じ価格の商品があった場合の並び順を決めています。この記事のidは商品ごとに異なるため、価格が同じでも順番を決められます。

価格のASCはタオル500円、マグカップ800円の順。DESCはその逆の高い順になる

取得する件数を絞る:LIMIT(PostgreSQL・MySQLなど)

少ない件数だけ確認したい場合は、取得件数の上限を指定します。PostgreSQLやMySQLでは、末尾にLIMITを付けられます。

SELECT name, price
FROM products
WHERE price >= 500
ORDER BY price ASC, id ASC
LIMIT 1;

この例では、500円以上の商品のうち、最も安い「タオル:500円」だけが表示されます。LIMITの数字は上限なので、条件に合うデータがなければ結果は0件です。

件数制限の書き方はデータベース製品によって異なります。LIMITが使えない環境では、使用中の製品の書き方を確認してください。

初心者が注意するポイント

まずは、接続先・列・条件を確認してから実行しましょう。

  • 接続先が、意図した学習・検証用データベースか確認する。
  • テーブル名や列名を、実際に登録されている名前と合わせる。
  • カンマ・引用符・セミコロンなどは半角で入力する。
  • 書く順番はSELECT → FROM → WHERE → ORDER BY。LIMITを使う場合はその後ろに置く。
  • 1つのSQL文の途中にセミコロンを入れず、最後に付ける。
  • 実データが多い表では、必要な列・条件・取得件数を指定する。

SELECTで読むだけでも、大量のデータを検索すると処理に時間がかかることがあります。LIMITで表示件数を減らしても、内部で調べるデータ量が必ず少なくなるとは限りません。職場では決められた手順に沿って確認してください。

SELECT文のよくある疑問

SQLはどこに入力すればよいですか?

データベースに接続するためのツールにある、SQL入力画面で実行します。使うツールによって画面名や実行ボタンが違います。職場では、接続先と使用ツールを確認してから始めましょう。

結果が0件なのはエラーですか?

エラーメッセージが出ず、結果が0件なら、条件に合う行がない可能性があります。まず接続先とテーブル名を確かめ、条件の値・単位・文字の余分な空白を見直してください。price > 500 と price >= 500 の違いも確認します。

値が未設定・不明であることを表すNULLを探す場合は、= NULL ではなく IS NULL を使います。たとえば WHERE price IS NULL です。この記事の商品表にはNULLがないため、その条件では0件になります。NULLは0や空文字と同じ意味ではありません。

大文字・小文字や改行は関係ありますか?

SELECTやFROMなどのSQLの命令語は、小文字でも書けます。この記事では見つけやすいように大文字にしています。改行しても1つのSQL文として書けますが、単語や文字の値の途中では区切らないようにしましょう。

テーブル名・列名・検索する文字の大文字と小文字の扱いは、製品や設定によって異なります。こちらは「どちらでもよい」と決めつけず、実際の名前や値に合わせてください。

まとめ・関連記事

SELECT文は、必要な情報を表から取り出すための基本です。まずはSELECTで列、FROMで元のテーブルを指定し、WHEREで行を絞り、ORDER BYで並び順を決める形を覚えましょう。

練習するなら、STEP3の price >= 500 を price >= 200 に変えてみてください。安い順に「ノート:200円」「タオル:500円」「マグカップ:800円」が出れば、条件指定と並べ替えのつながりを確認できます。

SQLやデータベースの役割からおさらいしたい方は、次の記事も参考にしてください。

データを更新する方法や、SQL・データベースの基本を確認したい方は、次の記事も参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です