ハイスコアを記録せよ!SQLでCRUDをゲームで完全攻略

こんにちは、「ぷろぐらの森」です🌱

前回の記事では、ゲームのセーブデータを保存するための「箱(データベース)」と「テーブル」を設計しました。
でも今のところ、中身はまだ空っぽです。

この記事では、テーブルにデータを出し入れする命令「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;

*(アスタリスク)は「全カラム」を意味します。
実行結果:

idnamehpmpgold
1勇者A10020500

条件で絞る(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件だけ取得する
idnamescore
1勇者A9800
2剣士B7500
3魔法使いC6200

ゲームのランキング画面はこの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例ゲームでの用途
INSERTINSERT INTO users (...) VALUES (...)セーブデータの新規作成
SELECTSELECT * FROM users WHERE id = 1データのロード
SELECT + 並び替えSELECT * FROM ranking ORDER BY score DESC LIMIT 3ランキング表示
UPDATEUPDATE users SET hp = 75 WHERE id = 1HP・スコアの更新
DELETEDELETE FROM users WHERE id = 1セーブデータ削除

これでデータベースの基本操作を全て習得しました!次のステップは、PHPからSQLを自動で実行する「PDO接続」です。ゲームのボタンを押したら裏でSQLが走る——本格的なAPI開発に進みましょう!

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

神奈川県出身
どこにでもいる現役ゲーム会社サーバーエンジニア。大学ではひたすらゲーム!ゲーム!という人生を送ってました。

このブログは「ゲームを作ってみたい!」「プログラミングに関する知識をつけたい!」そんな皆さんの少しでもお役になれば嬉しいなと思い開設しました。

趣味
YouTube鑑賞、ストリートな格闘ゲーム、キャンプ

最近の出来事
・痔主になってしまいました....
・Google Cloud Professional Cloud Architect取得しました。

コメント

コメントする

目次