ITを整える
中級SQL を整える。
= ブラウザでさわって学ぶ SQL 練習場
SQL は『CREATE / READ(SELECT) / UPDATE / DELETE』の 4 つでだいたい動きます。ブラウザの中だけで SQLite が動くので、書いて → 実行 → テーブルがどう変わるかを安全に何度でも試せます。
TLDR — 30秒で分かる
ブラウザ内 SQLite で SELECT / INSERT / UPDATE / DELETE / JOIN を試せる Playground。サンプル `users` / `orders` テーブル付き、何度壊しても Reset で復旧。
主な機能を見る
- CRUD 4 動詞のサンプルボタン
- JOIN / GROUP BY のサンプル付き
- CodeMirror 6 シンタックスハイライト
- 実行時間とテーブル状態をリアルタイム表示
- Ctrl/⌘ + Enter で実行
サンプル SQL(クリックでエディタに挿入)
RESULT
SQL を書いて「実行」を押すと、ここに結果テーブルが出ます。
使い方
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 行に戻ります。安心して試行錯誤できます。
よくある質問
- Q. 入力した SQL はサーバーに送られますか?
- A. いいえ。SQLite (sql.js) が WebAssembly でブラウザ内に丸ごと載っており、SQL の実行・結果生成・テーブル状態の更新まですべてあなたのブラウザの中で完結します。書いた SQL もテーブルの中身もサーバーには一切送信されません。社内データのコピーを貼って練習しても安全です。
- Q. CRUD ってなんですか?
- A. データを扱うときの基本動作 4 つの頭文字 — **C**reate(作る)/**R**ead(読む)/**U**pdate(更新)/**D**elete(消す)。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 はエディタの内容を別途コピーしておいてください。
RELATED TOOLS
続けて整える