本文へスキップ
totonoe.tech

プログラミング言語を整える

中級

SQL を整える。

= ブラウザでさわって学ぶ SQL 練習場

SQL が初めての方は、先に そもそも SQL とは・どんな場面で使うか をどうぞ。

サンプル SQL(クリックでエディタに挿入)

SQL EDITOR SQLite (sql.js)

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. 1

    上のサンプルボタンを押す

    R SELECT・ C INSERT・ U UPDATE・ D DELETE の 4 動詞(= CRUD)から、お手本 SQL がエディタに入ります。JOIN や GROUP BY のサンプルもあり。

  2. 2

    エディタで自由に書き換える

    テーブル名・カラム名・条件を変えてみる。文法が違えば下にエラーが出るので、メッセージを手がかりに直す → 動く、を繰り返すのが一番早い。

  3. 3

    「▶ 実行」を押す(Ctrl/⌘ + Enter でも可)

    SELECT は結果テーブル、INSERT / UPDATE / DELETE は「何行に影響したか」が出ます。右の TABLES でテーブルの行数とカラムがリアルタイムに変化します。

  4. 4

    壊しても「リセット」で初期状態に戻す

    全部消しても、変なテーブルを作っても、ボタン 1 つで users 5 行 + orders 8 行に戻ります。安心して試行錯誤できます。

このツールについて

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®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。

運営サイト

私たちが運営するサイト