こんにちは!セイトです。
今回はエンジニアならぜひとも習得しておきたい言語「SQL」について解説します。
この記事では、SQLが全く初めての方でも「なるほど!」と思っていただけるよう、一番基本的な部分をゆっくり丁寧に解説します。
1.SQLって、そもそも何?
SQL(エスキューエル)は、「データベース言語」と呼ばれるものの1つで、「データベース」から、必要な情報を取り出したり、新しく情報を追加したりするときに使う専用の言語です。
例えば、皆さんがAmazonなどECサイトでネットショッピングをするとき、たくさんの「商品データ」がデータベースに保存されています。
「スニーカー」と検索すればスニーカーの一覧が、「価格が安い順」で並び替えればその通りに表示されますよね。
あの裏側では、私たちが操作するたびに「スニーカーのデータを見せて!」「安い順に並び替えて!」というSQLの命令がデータベースに送られているのです。

2.基本の「SELECT」文
SQLで最もよく使うのが、データを「見せてください(検索してください)」とお願いする SELECT(セレクト)文です。/
ここでは、ECサイトの「商品(products)」テーブルを例に見てみましょう。
このようなデータが入っていると想像してください。
▼ products(商品)テーブル
product_id (商品ID) | product_name (商品名) | category (カテゴリ) | price (価格) | release_date (発売日) |
1001 | 魔法のノート | 文房具 | 500 | 2023-04-01 |
1002 | 走るボールペン | 文房具 | 300 | 2023-09-15 |
1003 | よく飛ぶスニーカー | ファッション | 8000 | 2023-05-20 |
1004 | 虹色Tシャツ | ファッション | 3500 | 2024-01-10 |
1005 | はじめてのSQL | 書籍 | 2800 | 2023-11-01 |
2-1. 全データを表示させたいとき (SELECT *)
SELECT * FROM products;この命令は「products というテーブルから(FROM products)、すべての列からデータを表示(SELECT *)」という意味になります。
これを実行すると、上の表がそのまま全部表示されます。
※ちなみにSQLに限らず、他の言語においてもプログラミングにおいてしばしば「*(アスタリスク)」は「全データ」の意味で扱われます。
2-2. 特定の列だけ見たいとき (SELECT カラム名)
SELECT product_name FROM products;この命令は「products というテーブルから(FROM products)、商品名のみを表示(SELECT product_name, price )」という意味になります。
次の例のように、複数の列を指定することも可能です。
SELECT product_name, price FROM products;この命令は「products というテーブルから(FROM products)、商品名と価格のみを表示(SELECT product_name, price )」という意味になります。
複数の列を指定する場合は列名の間に「, (コンマ)」をつける必要があるので注意です。
これを実行すると、以下のようになります。
product_name (商品名) | price (価格) |
魔法のノート | 500 |
走るボールペン | 300 |
よく飛ぶスニーカー | 8000 |
虹色Tシャツ | 3500 |
はじめてのSQL | 2800 |
category (カテゴリ)やrelease_date (発売日)といったデータは不要、必要な列データだけ抽出したい、という場合に使います。
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つの命令文を、ぜひ覚えてみてください!
最後までお読みいただき、ありがとうございました。
もし、
「プログラミングを体系的に学びたい」
「エンジニア転職を頑張りたい」
「独学に限界を感じてきた...」
「コミュニティで仲間と共に学びたい」
などと感じられたら、ぜひ検討してみてください。
まずは様子見...という方は、公式LINEにぜひご登録下さい。
学習や転職ノウハウに関する豪華特典11個を無料配布しています!
LINE紹介ページで特典を確認する


