3.欲しいデータだけを選ぶ「WHERE」句
SELECT でデータを取り出せるようになりましたが、実世界のデータは何万件、何億件とあります。全部見せられても困ってしまいますよね。
そこで使うのが WHERE(ウェア)句です。
WHERE を使うと、「条件に合うものだけを表示させる」ことができ、データを絞り込むことができます。
3-1. 価格で絞り込む(数値の条件)
例えば、「価格が1,000円より安い商品だけ見たい」場合は次のように書きます。
SELECT * FROM products WHERE price < 1000;
この命令は「price(価格)が 1000 より小さい条件で、products というテーブルから(FROM products)、すべての列からデータを表示(SELECT *)」という意味になります。
先程のテーブル例でいえば、これを実行すると、条件に合う2つの商品だけが表示されます。
product_id | product_name | category | price | release_date |
1001 | 魔法のノート | 文房具 | 500 | 2023-04-01 |
1002 | 走るボールペン | 文房具 | 300 | 2023-09-15 |
※ >(より大きい)、=(等しい)、>=(以上)、<=(以下)なども使えます。
3-2. カテゴリで絞り込む(文字の条件)
文字列を使った条件も指定することができます。
例えば、「カテゴリが『文房具』の商品だけ見たい」場合は次のように書きます。
SELECT * FROM products WHERE category = '文房具';
この命令は「category が '文房具' と等しい条件で、products というテーブルから(FROM products)、すべての列からデータを表示(SELECT *)」という意味になります。
3-3. 発売日で絞り込む(日付の条件)
「日付」を使った絞り込みも見てみましょう。
例えば、「2024年以降に発売された商品だけ見たい」場合は次のように書きます。
SELECT * FROM products WHERE release_date >= '2024-01-01';
この命令は「release_date(発売日)が '2024-01-01' 以降という条件で、products というテーブルから(FROM products)、すべての列からデータを表示(SELECT *)」という意味になります。
これを実行すると、「虹色Tシャツ」だけが表示されます。
4.データを並び替える「ORDER BY」句
データを取り出せましたが、順番がバラバラだと見にくいですね。
そこで使うのが ORDER BY(オーダーバイ)句です。これは、データを特定のルールで「並び替えて」とお願いする命令です。
4-1. 価格が安い/高い順に並び替える (ASC/DESC)
例えば、「商品を、価格が安い順に並び替えて表示させる」場合は次のように書きます。
SELECT * FROM products ORDER BY price ASC;
ORDER BY price は、「price(価格)を基準に並び替える」という意味です。
ASC はAscending(アセンディング)の略で、「昇順(小さい順・古い順)」を意味します。ASC は省略してもOKです。
一方で、「降順(大きい順・新しい順)」の場合は DESC を使います。こちらの場合はASCとは違い省略NGなので、必ず指定するようにしましょう。
以下は DESC の例です。
SELECT * FROM products ORDER BY price DESC;
4-2. 発売日が新しい順に並び替える(日付のソート)
先程は価格でソートする例を紹介しましたが、日付での並び替えももちろんできます。
例えば「発売日が新しい順に並び替えたい」場合は次のように書きます。
SELECT * FROM products ORDER BY release_date DESC;
5.組み合わせてみよう (WHERE と ORDER BY)
WHERE と ORDER BY は、一緒に使うことができます。これがSQLの便利なところです。
例えば、「『文房具』カテゴリの商品を、価格が高い順に並び替えて表示」する場合は次のように書きます。
SELECT product_name, price FROM products WHERE category = '文房具' ORDER BY price DESC
これを実行すると、products テーブルから、
- まず WHERE で「文房具」だけが絞り込まれ、
- 次に ORDER BY で「価格が高い順」に並び替えられます。
結果はこうなります。
product_name (商品名) | price (価格) |
魔法のノート | 500 |
走るボールペン | 300 |
6.つまづきやすいポイント (Q&A)
SQLを書き始めると、いくつか「あれ?」と思う小さな疑問が出てきます。
そこでよくある質問をまとめました。
6-1. シングルクォート('')を使うべき? ダブルクォート ("") は?
A. 「文字」や「日付」は、原則としてシングルクォート (') で囲みましょう。
この記事の例でも WHERE category = '文房具' のように使いましたね。 ダブルクォート (") は、データベースの種類によっては(例: PostgreSQL, MySQLなど)テーブル名や列名を囲む特別な記号として使われることがあり、文字列として認識されない場合があります。 迷ったら「データ(文字や日付)は '(シングルクォート)」と覚えておくと安全です。
6-2. SELECT と select、大文字と小文字の区別はある?
A. SELECT, FROM, WHERE といったSQLの「命令文(予約語)」は、大文字・小文字を区別しないデータベースがほとんどです。
つまり、select * from products; と書いても、SELECT * FROM products; と書いても、同じように動くことが多いです。
ただし、テーブル名 (products) や列名 (product_name) は、データベースの設定によって大文字・小文字を区別する場合があります。
読みやすさの観点から、
- 命令文(
SELECT, WHERE など)は 大文字 - テーブル名、列名(
products, price など)は 小文字 のように、自分でルールを決めて書くことを強くおすすめします。
6-3. SQLを気軽に試してみたいけど、環境を作るのが大変…
A. スプレッドシートで、SQLに似た体験ができます。
本格的なデータベースを自分のPCに準備するのは少し大変です。
もし Googleスプレッドシート をお使いなら、QUERY(クエリ)関数を使ってみてください。 これは、スプレッドシートのデータに対して、SQLによく似た命令文でデータ抽出や並び替えができる関数です。
(例: =QUERY(A1:E6, "SELECT A, B, D WHERE C = '文房具' ORDER BY D DESC") )
※ExcelでQUERY関数を使うことはできないので注意。
おわりに
今回は、SQLの本当に基本的な「き」の字である、
- SELECT : データを見る
- WHERE : データを選ぶ(絞り込む)
- ORDER BY : データを並び替える
の3つを中心にご紹介しました。
「データベースに命令する」と聞くと難しそうですが、やっていることは「(どのテーブル)から、(どの条件)で、(どの項目)を、(どう並び替えて)見せて」という、意外とシンプルな「お願い」なのです。
SQLが使えるようになると、膨大なデータの中から自分が見たい情報を、まるでExcelのフィルターや並び替え機能を使うように、自由自在に取り出せるようになります。
まずはこの3つの命令文を、ぜひ覚えてみてください!
最後までお読みいただき、ありがとうございました。
SELECT・WHERE・ORDER BYの先には、テーブルの結合や集計といった実務で使う範囲が続きます。どこまでをどの順で学ぶか迷う方に向けて、私が代表を務めるSiiDの概要を以下にまとめます。
AIプログラミングスクール「SiiD」について
AIプログラミングスクール「SiiD」は、未経験からITエンジニア転職を目指す方向けのオンラインスクールです。
SiiDの特徴
- 現役エンジニアでYouTube登録者約13万人の「セイト先生」が代表兼主任講師
- 採用側の実務知見(2,000人以上の選考・150名以上のエンジニア採用)にもとづく指導
- 生成AIを取り入れた学習設計と、実務レベルのフルスタックWeb開発スキル
- Workship CAREER(株式会社GIG)と連携した無料の転職伴走支援
- 経済産業省認定のReスキル講座で、給付金の条件を満たせば実質105,600円〜
- 学割あり(35%オフ)
こんな方におすすめ
- 未経験・文系・社会人からITエンジニア転職を本気で目指したい方
- 独学に限界を感じている方
- 費用を抑えながら実務スキルと転職サポートを両立したい方
「未経験だから」とあきらめる必要はありません。採用する側を知り尽くしたプロが、給付金で負担を抑えながら内定まで伴走します。