⚔️ はじめに:データベースと会話する魔法「SQL」

前回の記事では、ゲームのセーブデータを保存するための
「箱(データベース)」と「仕切り(テーブル)」を作りました。
しかし、まだ設計図を書いただけで、中身は空っぽの状態です。
これでは、せっかくのハイスコアも保存できません。
そこで今回は、データベースに対して「データを保存して!」「データを見せて!」と命令するための言語、
SQL(エスキューエル)を学びます。
「プログラミング言語がまた増えるの…?」と不安になる必要はありません。
SQLは非常に英語に近く、シンプルで強力なツールです。
これが使いこなせれば、ランキング機能も、アイテム検索も自由自在になりますよ!
1. SQLってなに?
SQL(Structured Query Language)は、データベース専用の言語です。
プログラミング言語(JavaScriptやPHP)とは少し役割が違い、
「データベースにお願い事をする」ために使います。
ゲーム開発でよく使う「お願い(命令)」は、主にこの4つだけ!
これをCRUD(クラッド)と呼びます。
| SQLの命令 | 役割 | ゲームでの例 |
| INSERT (インサート) | 作成 | セーブデータを新規作成する、アイテムを入手する |
| SELECT (セレクト) | 読み取り | ロードする、ランキングを表示する、所持金を確認する |
| UPDATE (アップデート) | 更新 | レベルが上がったのでHPを書き換える |
| DELETE (デリート) | 削除 | セーブデータを消す、アイテムを捨てる |
今回は、最も基本となる「INSERT(追加)」と「SELECT(検索)」をマスターしましょう。
2. データを追加しよう:INSERT文
まずは、空っぽのテーブルに勇者のデータを追加します。
前回の記事で作った users テーブルを思い出してください。
usersテーブルの設計図
- id (INT)
- name (VARCHAR)
- hp (INT)
- mp (INT)
- gold (INT)
📝 INSERT文の書き方
##SQL##
INSERT INTO テーブル名 (カラム1, カラム2...) VALUES (値1, 値2...);
「INSERT INTO(~の中に挿入せよ)」と読みます。
実際に「勇者A」のデータを入れるSQLはこうなります。
##SQL##
INSERT INTO users (id, name, hp, mp, gold)
VALUES (1, '勇者A', 100, 20, 500);
これを実行すると、データベースの中に1行データが生まれます。
ゲームで「冒険の書を作りました」と表示された裏側では、まさにこのSQLが高速で動いているのです。
3. データを取り出そう:SELECT文
データが入ったら、次はそれを取り出してみましょう。
「つづきから」を選んだ時に、保存されたステータスを画面に表示するイメージです。
🔍 SELECT文の書き方
##SQL##
SELECT カラム名 FROM テーブル名;
「SELECT(選べ)… FROM(~から)」と読みます。
非常に直感的ですね。
全員のデータを見る
テーブルに入っている全てのデータを見たい時は、ワイルドカード *(アスタリスク)を使います。
##SQL##
SELECT * FROM users;
実行結果:
| id | name | hp | mp | gold |
| 1 | 勇者A | 100 | 20 | 500 |
条件を絞り込む:WHERE句
ここからがSQLの真骨頂です。
「全員じゃなくて、HPが満タンの人だけ探したい」という時は、WHERE(ホウェア)を使います。
##SQL##
SELECT * FROM users WHERE hp = 100;
ランキング機能などで「スコアが1000点以上のプレイヤー」を探す時も、この WHERE を使います。
##SQL##
-- スコア(score)が1000以上の人を探す例
SELECT * FROM ranking WHERE score >= 1000;
4. まとめ:データの出し入れはこれで完璧!
今回は、データベース操作の基本である2つのSQLを学びました。
- INSERT: データを追加する(セーブ作成)
- SELECT: データを検索する(ロード、ランキング)
この2つが使えれば、とりあえずゲームのデータを保存して、画面に表示することができます。
次回は、いよいよ「プログラム(PHP/Laravel)からSQLを自動で実行する仕組み」を作ります。
「ゲーム画面のボタンを押したら、裏でSQLが走ってセーブされる」……
そんな本格的なAPI開発への第一歩を踏み出しましょう!

コメント