プログラミング言語を整える
中級SQL を整える。
= ブラウザでさわって学ぶ SQL 練習場
SQL が初めての方は、先に そもそも SQL とは・どんな場面で使うか をどうぞ。
サンプル SQL(クリックでエディタに挿入)
RESULT
SQL を書いて「実行」を押すと、ここに結果テーブルが出ます。
そもそも SQL とは
データベースに「こういうデータをください」と頼むための言葉。
SQL(エスキューエル・シークェル)は、表(行と列)の形で整理されたデータ=リレーショナルデータベース(RDB)を、取り出す・追加する・更新する・削除するための言語です。もとになった「関係モデル」は、1970年に E. F. Codd が発表した論文で提案されました。国際的な規格にもなっています。
PostgreSQL・MySQL・SQLite など、多くの RDB が SQL を使うので、基本の書き方はどれにも通用します(細かい方言の違いはあります)。MongoDB や Redis のように SQL を使わないデータベース(NoSQL)もあります。この練習場の SQLite は、サーバーを立てずにアプリの中へ組み込んで使うタイプです。Excel のように手で探すのではなく、「条件」を書いて大量の行から必要な分だけを取り出せるのが強みです。
どこで・どんな場面で使うか
-
Web サービスの裏側
会員・商品・注文といった情報を保存し、画面に出すたびに SQL で取り出します。
-
業務システム
販売管理・在庫管理・勤怠管理など、会社の記録を扱うシステムの多くが、RDB と SQL で動いています。
-
データ分析・集計
売上を月別・商品別に集計するなど、GROUP BY を使った集計は分析の基本です。BI ツールの裏でも SQL が使われます。
-
アプリの中のデータ保存
スマートフォンのアプリやデスクトップのソフトが、手元の記録を入れておく場所として SQLite を使うことがあります。
-
求人での位置づけ
エンジニア職の応募条件に「SQL の経験」が書かれることが多くあります。営業・企画・マーケティングなどの職種でも、データを自分で取り出せる人が重宝されます。
なぜ覚えておくと得か
- システムの中身が見えるようになる。画面に出ているデータがどこから来ているかを、SQL で自分で確かめられます。
- 一度覚えれば、データベースが変わっても通用する。SELECT・INSERT・UPDATE・DELETE と JOIN・GROUP BY の基本は、PostgreSQL でも MySQL でも同じ形で使えます。
- エンジニア以外にも役に立つ。データを抽出して集計する場面は、事務・営業・企画の仕事にもあります。依頼して待つ代わりに、自分で取り出せます。
上の練習場でサンプルのボタンを押し、SELECT の結果や、INSERT・UPDATE のあとにテーブルがどう変わるかを確かめてみてください。壊しても Reset でやり直せます。
使い方
4 ステップで SQL を体得する。
- 1
上のサンプルボタンを押す
R SELECT・ C INSERT・ U UPDATE・ D DELETE の 4 動詞(= CRUD)から、お手本 SQL がエディタに入ります。JOIN や GROUP BY のサンプルもあり。
- 2
エディタで自由に書き換える
テーブル名・カラム名・条件を変えてみる。文法が違えば下にエラーが出るので、メッセージを手がかりに直す → 動く、を繰り返すのが一番早い。
- 3
「▶ 実行」を押す(Ctrl/⌘ + Enter でも可)
SELECT は結果テーブル、INSERT / UPDATE / DELETE は「何行に影響したか」が出ます。右の TABLES でテーブルの行数とカラムがリアルタイムに変化します。
- 4
壊しても「リセット」で初期状態に戻す
全部消しても、変なテーブルを作っても、ボタン 1 つで
users5 行 +orders8 行に戻ります。安心して試行錯誤できます。
このツールについて
SQL は『CREATE / READ(SELECT) / UPDATE / DELETE』の 4 つでだいたい動きます。ブラウザの中だけで SQLite が動くので、書いて → 実行 → テーブルがどう変わるかを安全に何度でも試せます。
ブラウザ内 SQLite で SELECT / INSERT / UPDATE / DELETE / JOIN を試せる Playground。サンプル `users` / `orders` テーブル付き、何度壊しても Reset で復旧。
🔰 かんたんに言うと
データベースを操作する言語「SQL」を、インストールなしでブラウザで練習できます。
主な機能
- CRUD 4 動詞のサンプルボタン
- JOIN / GROUP BY のサンプル付き
- CodeMirror 6 シンタックスハイライト
- 実行時間とテーブル状態をリアルタイム表示
- Ctrl/⌘ + Enter で実行
よくある質問
Q. 入力した SQL はサーバーに送られますか?
A. いいえ。SQLite (sql.js) が WebAssembly でブラウザ内に丸ごと載っており、SQL の実行・結果生成・テーブル状態の更新まですべてあなたのブラウザの中で完結します。書いた SQL もテーブルの中身もサーバーには一切送信されません。社内データのコピーを貼って練習しても安全です。
Q. CRUD ってなんですか?
A. データを扱うときの基本動作 4 つの頭文字 — Create(作る)/Read(読む)/Update(更新)/Delete(消す)。SQL では `INSERT` / `SELECT` / `UPDATE` / `DELETE` がそれぞれに対応します。ほぼすべての業務システムの「データ操作」はこの 4 つの組み合わせでできており、SQL を覚える=この 4 動詞の使い方を覚える、と考えて差し支えありません。本 Playground のサンプルボタンも CRUD の 4 動詞を前面に置いています。
Q. SQL のコーディングルール(書き方の慣例)は?
A. 業界で広く使われている慣例は以下。①予約語は大文字(`SELECT`・`FROM`・`WHERE`)、テーブル名・カラム名は小文字でスネークケース(`user_id`)。②句ごとに改行+字下げ(`SELECT` の次に改行、カラムを縦に並べる)。③テーブルにはエイリアスを付ける(`FROM users u`、`u.id` のように使う)。④`SELECT *` は本番コードでは避け、必要なカラムを明示する(パフォーマンス・スキーマ変更耐性のため)。⑤コメントは `--` で行末まで、`/* */` で複数行。本 Playground のサンプルもこの慣例に従っています。
Q. SQLite と MySQL / PostgreSQL の違いは?
A. 本 Playground は SQLite の方言で動作します。SQL の基本(`SELECT` / `JOIN` / `GROUP BY` / `WHERE` / 集約関数など)はほぼ共通なので、学習用途には十分です。ただし、①日付関数(`DATE_FORMAT` 等)、②`AUTO_INCREMENT` vs `AUTOINCREMENT`、③`LIMIT` / `OFFSET` の書き方、④文字列連結(`||` vs `CONCAT`)など細部は方言ごとに違います。実務でいきなり MySQL / PostgreSQL に触れる前に、公式ドキュメントで「SQLite だけの構文かどうか」を一度確認するのがおすすめです。
Q. NULL を扱うときの注意点は?
A. NULL は「値が無い」ことを表す特殊な値で、比較演算子 `=` / `!=` では判定できません。`WHERE col = NULL` は常に偽になり、何もヒットしません。正しくは `WHERE col IS NULL` / `IS NOT NULL`。また NULL を含む列の集計(`SUM` / `AVG` 等)は NULL を無視し、`COUNT(*)` は NULL を含む行も数えるが `COUNT(col)` は NULL を除外する、といった挙動の違いがあるので注意。
Q. JOIN の種類はどう使い分けますか?
A. ①`INNER JOIN`(= `JOIN`):両方のテーブルに対応する行があるものだけ返す。②`LEFT JOIN`:左のテーブルは全行残し、右で対応が無ければ NULL。③`RIGHT JOIN`:その逆(SQLite では非対応、左右入れ替えで代用)。④`FULL OUTER JOIN`:両方の全行を残す(同じく SQLite では `LEFT JOIN ... UNION ... LEFT JOIN` で代用)。「全ユーザーの注文を出したい、注文ゼロでもユーザー名は出す」なら `LEFT JOIN`、「注文があるユーザーだけ集計」なら `INNER JOIN`、のように決めます。
Q. トランザクション(BEGIN / COMMIT)は使えますか?
A. はい、SQLite なので `BEGIN; ... COMMIT;` / `ROLLBACK;` がそのまま使えます。複数の UPDATE / DELETE を「ひとまとめに成功、失敗時は全部巻き戻し」する練習に活用してください。ただし本 Playground は インメモリ DB なので、`COMMIT` してもページをリロードすれば初期状態に戻ります(永続化は行いません)。
Q. 「リセット」したら自分が書いたテーブルや行は消えますか?
A. はい、すべて初期状態(`users` 5 行・`orders` 8 行のみ)に戻ります。`CREATE TABLE` で追加したテーブルや `INSERT` で足した行も消えるので、壊しても安全に元に戻せます。逆に言えば「保存」もないので、残したい SQL はエディタの内容を別途コピーしておいてください。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。