こんにちは、「ぷろぐらの森」です🌱
前回の記事では、ゲームのセーブデータを保存するための「箱(データベース)」と「テーブル」を設計しました。
でも今のところ、中身はまだ空っぽです。
この記事では、テーブルにデータを出し入れする命令「SQL」を学びます。SQLを使えば、セーブデータの保存・ロード・スコア更新・データ削除まで——ゲームに必要な操作が全部できるようになります!
この記事でわかること
- SQLの4つの基本命令(CRUD)が全てわかる
- INSERT文でデータを追加する方法
- SELECT文でデータを取り出す方法(ORDER BY・LIMITも)
- UPDATE文でデータを書き換える方法
- DELETE文でデータを削除する方法
- 現場エンジニアが知る「WHERE忘れの恐怖」
SQLってなに?
SQLはデータベース専用の言語です。
「データベースにお願い事をする」ために使います。
英語に近い書き方で、シンプルかつ強力です。
ゲーム開発で使う主な命令は「CRUD(クラッド)」と呼ばれる4つの操作です。
| 命令 | 役割 | ゲームでの例 |
|---|---|---|
| INSERT | 作成 | セーブデータを新規作成する |
| SELECT | 読み取り | ロードする・ランキングを表示する |
| UPDATE | 更新 | レベルが上がったのでHPを書き換える |
| DELETE | 削除 | セーブデータを消す |
この記事では4つ全部をマスターします!
① データを追加しよう:INSERT文
前回作った users テーブルにデータを入れていきましょう。
INSERT文の書き方
INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES (値1, 値2, ...);
「INSERT INTO(〜の中に挿入せよ)」と読みます。
ゲームで試してみよう
「勇者A」のデータを追加する場合:
INSERT INTO users (id, name, hp, mp, gold)
VALUES (1, '勇者A', 100, 20, 500);
ゲーム画面で「冒険の書を作りました」と表示される裏側では、このSQLが高速で動いています!
② データを取り出そう:SELECT文
保存したデータを画面に表示するのが SELECT文です。「つづきから」ボタンを押したとき、裏でこれが動いています。
全員のデータを見る
SELECT * FROM users;
*(アスタリスク)は「全カラム」を意味します。
実行結果:
| id | name | hp | mp | gold |
|---|---|---|---|---|
| 1 | 勇者A | 100 | 20 | 500 |
条件で絞る(WHERE句)
「HPが満タンの人だけ探したい」場合:
SELECT * FROM users WHERE hp = 100;
スコアが1000以上のプレイヤーを探す場合:
-- スコアが1000以上の人を探す
SELECT * FROM ranking WHERE score >= 1000;
ランキング上位を表示する(ORDER BY・LIMIT)
スコア上位3名を表示する場合:
SELECT * FROM ranking ORDER BY score DESC LIMIT 3;
- ORDER BY score DESC:スコアを大きい順(降順)に並べる
- LIMIT 3:先頭3件だけ取得する
| id | name | score |
|---|---|---|
| 1 | 勇者A | 9800 |
| 2 | 剣士B | 7500 |
| 3 | 魔法使いC | 6200 |
ゲームのランキング画面はこのSQLで作れます!
③ データを更新しよう:UPDATE文
レベルアップでHPが増えたとき、スコアが更新されたとき——既存のデータを書き換えるのが UPDATE文です。
UPDATE文の書き方
UPDATE テーブル名 SET カラム名 = 新しい値 WHERE 条件;
ゲームで試してみよう
戦闘後、勇者AのHPが減った場合:
UPDATE users SET hp = 75 WHERE id = 1;
複数カラムを同時に更新することもできます:
UPDATE users SET hp = 150, mp = 50 WHERE id = 1;
🔧 現役エンジニアのひとこと
UPDATE文の「WHERE忘れ」は現場最大の事故のひとつ
入社して間もない頃、「WHERE id = 1」を書き忘れたまま UPDATE を実行してしまい、テーブルの全ユーザーのHPが同じ値に上書きされた、という事故は現場ではよくある話です(私の周りでも複数人が経験済み)。
-- ❌ 絶対にやってはいけないUPDATE(全行が上書きされる!)
UPDATE users SET hp = 0;
-- ✅ 正しいUPDATE(WHEREで対象を絞る)
UPDATE users SET hp = 0 WHERE id = 1;
本番環境でこれが起きると、ゲームのユーザーデータが全滅します。UPDATE・DELETE を書く前は必ず WHERE を確認するクセをつけてください。事故です。
④ データを削除しよう:DELETE文
セーブデータを消したいとき、ランキングをリセットしたいとき——データを削除するのが DELETE文です。
DELETE文の書き方
DELETE FROM テーブル名 WHERE 条件;
ゲームで試してみよう
「勇者A」のセーブデータを削除する場合:
DELETE FROM users WHERE id = 1;
⚠️ 注意
WHERE を付けない DELETE はテーブルの全データが消えます。
UPDATE と同様、DELETE も WHERE を忘れないようにしましょう。
まとめ:CRUDを完全制覇!
| 命令 | SQL例 | ゲームでの用途 |
|---|---|---|
| INSERT | INSERT INTO users (...) VALUES (...) | セーブデータの新規作成 |
| SELECT | SELECT * FROM users WHERE id = 1 | データのロード |
| SELECT + 並び替え | SELECT * FROM ranking ORDER BY score DESC LIMIT 3 | ランキング表示 |
| UPDATE | UPDATE users SET hp = 75 WHERE id = 1 | HP・スコアの更新 |
| DELETE | DELETE FROM users WHERE id = 1 | セーブデータ削除 |
これでデータベースの基本操作を全て習得しました!次のステップは、PHPからSQLを自動で実行する「PDO接続」です。ゲームのボタンを押したら裏でSQLが走る——本格的なAPI開発に進みましょう!
関連記事




コメント