本文へスキップ
BecomeCoder
ブログ一覧コース一覧

SQL SELECTの書き方|WHEREで条件を絞る使い方を初心者向けに解説

#SQL#SELECT#WHERE#初心者

結論: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 で条件を組み合わせたりする使い方もこのレッスンで練習できます。

条件の書き方をさらに広げたい場合は、次のレッスンも役立ちます。

いずれも mode: browser のレッスンで、書いたSQLをその場で実行して結果を確認しながら進められます。

なぜ「読むだけ」より「実際に動かす」方が身につくのか

SQLは、文法を目で読んで理解したつもりでも、実際にテーブルに対して実行してみると想像と違う結果が返ってくることがよくあります。たとえば WHERE の条件を1つ変えただけで行数が0件になったり、逆に想定より多く返ってきたりします。この「思っていたのと違う」を早めに体験しておくことが、SQLを実務で使えるようになる一番の近道です。

Become-Coderでは、レッスンごとに実際のデータ(会員・商品・注文などのテーブル)が最初から用意されており、書いたSQLをブラウザ内のSQLiteエンジンでその場で実行できます。壊すことを恐れる必要もありません。sql-dml-00-6: 壊しても大丈夫 ― このサイトの遊び方 にあるとおり、データを書き換えても元に戻せる仕組みになっているので、SELECTだけでなく気になった条件は遠慮なく試してみてください。

つまずきやすいところ

SELECT文とWHERE句を書き始めたばかりの頃によく出会うエラーがいくつかあります。

これらはSQLを書き始めた人がほぼ必ず一度は通る道で、恥ずかしいことではありません。エラーメッセージが出たら、まず「どの単語が間違っているか」を1つずつ確認する癖をつけると、この先GROUP BYやJOINのような複雑な文を書くときにも役立ちます。他によくあるエラーは SQLのエラー逆引き に12種類まとまっているので、詰まったときに辞書として使ってください。

SELECTに慣れたら次に学ぶこと

SELECTWHERE の基本が書けるようになったら、次に押さえておきたいのが「集計」と「テーブルの結合」です。

これらもすべてブラウザで実際にSQLを実行しながら学べるレッスンで、SQL文法コース(データを取り出す) の中に順番に並んでいます。

一方で、「そもそもテーブルはどうやって作るのか」「なぜテーブルを分けて設計するのか」が気になった人は、SQL設計コース(テーブル設計) がその疑問に答えます。sql-ddl-1: なぜ表を「分けて」設計するのか から、CREATE TABLE でテーブルを実際に作りながら学べます。

次に読む

← ブログ一覧に戻る