結論:SQLでデータを取り出す基本は「SELECT 列名 FROM テーブル名」で列を選び、「WHERE 条件」で行を絞り込む、この2つの組み合わせだけです。 まずはこの型を実際に動かして、結果がどう変わるかを目で確認するのが一番の近道です。
SELECT文の基本の書き方
SQL(Structured Query Language)は、データベースに「こういうデータが欲しい」と問い合わせるための言語です。データを取り出すときにまず覚えるのが SELECT 文で、基本の形はこうなります。
SELECT 列名 FROM テーブル名;
たとえば users というテーブルからすべての列を取り出したいときは SELECT * FROM users;(* は「すべての列」という意味)、名前と年齢だけ欲しいときは SELECT name, age FROM users; のように書きます。
Become-Coderの SQL文法コース(データを取り出す) では、この SELECT ― 列を取り出す というレッスンがそのままの名前で用意されています。sql-dml-01: SELECT ― 列を取り出す を開くと、実際のデータが入ったテーブルに対してブラウザ上でそのままSQLを実行でき、書いたSQLの結果がすぐに表で返ってきます。インストールも会員登録も不要なので、まずここでSELECT文を何度か書き換えて動かしてみてください。
WHEREで条件を絞り込む使い方
SELECT だけだとテーブルの中身が全部返ってきてしまいます。実際に欲しいのは「東京に住んでいる人だけ」「価格が1000円以上の商品だけ」のように、条件に合う行だけです。ここで使うのが WHERE 句です。
SELECT name, age, city FROM users WHERE city = '東京';
SELECT で「どの列を出すか」を決め、WHERE で「どの行を出すか」を決める、という役割分担を意識すると迷いにくくなります。この考え方は sql-dml-02: WHERE ― 条件で絞り込む で、実際のデータに対して条件を書き換えながら確認できます。= で等しいものを探すだけでなく、> や < で数値を比較したり、AND / OR で条件を組み合わせたりする使い方もこのレッスンで練習できます。
条件の書き方をさらに広げたい場合は、次のレッスンも役立ちます。
- sql-dml-03: ORDER BY・LIMIT ― 並べ替えと件数制限 — 「価格が安い順」「上位5件だけ」のような並べ替え・件数指定
- sql-dml-04: DISTINCT・LIKE・IN・BETWEEN ― 絞り込みを広げる — 「名前に“田”が含まれる人」「東京か大阪の人」のような、
=だけでは書けない条件 - sql-dml-05: NULL ― 「値が無い」を正しく扱う — 「値が入っていない」行を正しく絞り込む・除外する方法
いずれも mode: browser のレッスンで、書いたSQLをその場で実行して結果を確認しながら進められます。
なぜ「読むだけ」より「実際に動かす」方が身につくのか
SQLは、文法を目で読んで理解したつもりでも、実際にテーブルに対して実行してみると想像と違う結果が返ってくることがよくあります。たとえば WHERE の条件を1つ変えただけで行数が0件になったり、逆に想定より多く返ってきたりします。この「思っていたのと違う」を早めに体験しておくことが、SQLを実務で使えるようになる一番の近道です。
Become-Coderでは、レッスンごとに実際のデータ(会員・商品・注文などのテーブル)が最初から用意されており、書いたSQLをブラウザ内のSQLiteエンジンでその場で実行できます。壊すことを恐れる必要もありません。sql-dml-00-6: 壊しても大丈夫 ― このサイトの遊び方 にあるとおり、データを書き換えても元に戻せる仕組みになっているので、SELECTだけでなく気になった条件は遠慮なく試してみてください。
つまずきやすいところ
SELECT文とWHERE句を書き始めたばかりの頃によく出会うエラーがいくつかあります。
- テーブルに存在しない列名を書いてしまう → err-sql-01: no such column ― 列が見つからない
- テーブル名を打ち間違える・存在しないテーブルを指定する → err-sql-02: no such table ― テーブルが見つからない
- カンマの付け忘れや引用符の閉じ忘れなど、構文が崩れる → err-sql-03: syntax error ― 構文の崩れ
これらはSQLを書き始めた人がほぼ必ず一度は通る道で、恥ずかしいことではありません。エラーメッセージが出たら、まず「どの単語が間違っているか」を1つずつ確認する癖をつけると、この先GROUP BYやJOINのような複雑な文を書くときにも役立ちます。他によくあるエラーは SQLのエラー逆引き に12種類まとまっているので、詰まったときに辞書として使ってください。
SELECTに慣れたら次に学ぶこと
SELECT と WHERE の基本が書けるようになったら、次に押さえておきたいのが「集計」と「テーブルの結合」です。
- sql-dml-06: 集計関数 ― たくさんの行を1つの答えに —
COUNTAVGMAXなどで合計・平均・件数を求める - sql-dml-07: GROUP BY ― グループごとに集計する — 「カテゴリごとの商品数」のようにグループ単位で集計する
- sql-dml-10: JOIN ― 2つの表を結びつける — 「この注文は誰のものか」のように、複数のテーブルを結びつけて取り出す
これらもすべてブラウザで実際にSQLを実行しながら学べるレッスンで、SQL文法コース(データを取り出す) の中に順番に並んでいます。
一方で、「そもそもテーブルはどうやって作るのか」「なぜテーブルを分けて設計するのか」が気になった人は、SQL設計コース(テーブル設計) がその疑問に答えます。sql-ddl-1: なぜ表を「分けて」設計するのか から、CREATE TABLE でテーブルを実際に作りながら学べます。
次に読む
- SQL文法コース(データを取り出す) — SELECT・WHERE・集計・JOINまでブラウザで実行しながら学べる
- sql-dml-01: SELECT ― 列を取り出す — まずはここから
- sql-dml-02: WHERE ― 条件で絞り込む — 検索の基本
- sql-dml-10: JOIN ― 2つの表を結びつける — 複数テーブルを扱う一歩先
- SQL設計コース(テーブル設計) — CREATE TABLEでテーブル設計の考え方を学ぶ
- SQLのエラー逆引き — つまずいたときの辞書代わりに