挫折しないSQL入門!SELECT文の基本

プログラミングを学び始めて、最初に触れる機会が多い「SQL」。中でも「SELECT文」は、データベースという巨大な情報の倉庫から、欲しい宝物を取り出すための最も基本的で、最も重要な呪文です。
そもそも「SELECT文」とは?
SELECT文を一言でいうと、「データベースに保存されているデータの中から、必要な情報を取ってくる(参照する)ための命令」のことです。
データベースには大量のデータが保存されていますが、それ自体はただの箱に過ぎません。私たちがWebサイトで「商品一覧を見る」ときや「自分のプロフィールを確認する」とき、その裏側ではこのSELECT文が走り、必要なデータを画面に呼び出しています。
SELECT文の最大の特徴は、「元のデータを書き換えない(読み取るだけ)」という点です。初心者が何度実行してもデータが壊れる心配はないので、安心して練習できる、まさに学習の第一歩に最適なコマンドなのです。
今回使用する「商品在庫テーブル」
解説のために、以下の「ガジェットショップの在庫表(productsテーブル)」を用意しました。日付を使った検索ができるよう、発売日の列を追加しています。
| id | name (商品名) | category (カテゴリ) | price (価格) | stock (在庫) | release_date (発売日) |
|---|---|---|---|---|---|
| 1 | MacBook Air | PC | 150000 | 5 | 2023-06-15 |
| 2 | iPad Pro | Tablet | 120000 | NULL | 2022-10-26 |
| 3 | iPhone 15 | Smartphone | 130000 | 10 | 2023-09-22 |
| 4 | Pixel 8 | Smartphone | 110000 | 2 | 2023-10-12 |
| 5 | AirPods | Audio | 30000 | 20 | 2021-10-26 |
| 6 | Surface Laptop | PC | 140000 | NULL | 2022-10-25 |
※ NULLは「データが入力されていない(空)」という状態を指します。
基本のSELECTと「AS」による別名付与
AS を使うと、結果を表示する際のカラム名に日本語の「ニックネーム」をつけることができます。実行結果がぐっと読みやすくなります。
狙い通りに絞り込む「WHERE」のテクニック
エンジニアが日常的に使う、実戦的な絞り込み方法をマスターしましょう。
あいまい検索「LIKE」の注意点
「スマホを探したい」と思って、商品名(name)に LIKE を使ってみます。
SQLは指定した「列」の中身しか見ません。Pixel 8という名前の中に "Phone" という文字はないからです。もし「スマホ全般」を取りたいなら、カテゴリ(category)に対して LIKE を使うのが正解です。
リストで指定する「IN」
「PCとTabletだけ見たい」といった複数の条件は IN でスッキリまとめましょう。OR を並べるより読みやすくなります。
期間で絞り込む「BETWEEN」
日付の範囲を指定したいときは BETWEEN の出番です。「2023年の間に発売されたもの」を探してみましょう。
注意点: 日付は ' '(シングルクォート)で囲む必要があります。
「空」を判定する「IS NULL」
NULLを「=」で探すことはできません。 専用のフレーズを使いましょう。
並び替え(ORDER BY)と件数制限(LIMIT)
「価格が高い順に3つだけ見たい」といった場合は、最後にこの2行を添えます。
なぜかエラー?初心者がやりがちなミス
もしエラーが出たら、まずはここをチェックしてみてください!
「全角」が混ざっている
SQLは、データの中身以外はすべて半角で書くルールです。全角スペースや全角カンマが1つあるだけでエラーになります。
名前(スペル)の間違い
name を names と書いてしまうようなミスです。DBによってエラーメッセージが異なります。
- MySQL:
Unknown column 'names'(そんな列知らないよ) - PostgreSQL:
column "names" does not exist(列が存在しないよ)
カンマの打ちすぎ
のように、FROM の直前にカンマを入れてしまうミスに注意しましょう。
日付のシングルクォート忘れ
のようにクォートを忘れると、SQLは「2023 引く 1 引く 1」という引き算の計算だと勘違いしてしまいます。
おわりに
SQLのSELECT文は、一度基本をマスターすれば一生モノのスキルになります。エラーが出ても、それは「ヒント」です。メッセージをよく読み、一つずつ原因を特定していくプロセスこそが、上達への最短ルートです。まずは、実際に手を動かして入力してみることから始めてみてください!

