WebアプリやECサイトを開発する際、データを効率よく管理するためにMySQLは欠かせません。本記事では、開発者目線でMySQLの基礎から実務で役立つポイントまでをまとめました。
MySQLとは?
MySQLは世界中で使われているオープンソースのリレーショナルデータベース管理システム(RDBMS)です。
- SQL(Structured Query Language)でデータ操作
- WebアプリやECサイトなど、幅広く利用
- 高速で軽量、Windows・Linux・macOSで利用可能
MySQLの特徴
- 無料で使えるコミュニティ版あり(商用版も存在)
- 読み書きが高速
- レプリケーション・クラスタリングに対応し、大規模運用も可能
- AWS RDSやAzure Databaseなどクラウドサービスでも簡単に利用可能
基本概念
| 用語 | 説明 |
| データベース | データの集合 |
| テーブル | データを行列で格納する単位 |
| レコード | テーブルの1行(1つのデータ) |
| カラム | テーブルの列(属性) |
| 主キー | レコードを一意に識別するカラム |
| 外部キー | 他テーブルの主キーを参照するカラム |
基本操作(SQL)
データベース操作
// データベース作成
CREATE DATABASE sample_db;
// 使用するデータベース選択
USE sample_db;
// データベース一覧表示
SHOW DATABASES;
// -- データベース削除
DROP DATABASE sample_db;テーブル操作
// テーブル作成
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
// テーブル一覧表示
SHOW TABLES;
// テーブル定義の確認
DESCRIBE users;
// テーブル削除
DROP TABLE users;
// 列追加
ALTER TABLE USERS ADD COLUMN AGE VARCHAR(255) NOT NULL AFTER NAME;
// 列削除
ALTER TABLE users DROP COLUMN name;データ操作
-- データ挿入
INSERT INTO users (name, email) VALUES ('Taro', 'taro@example.com');
-- データ取得
SELECT * FROM users;
SELECT name, email FROM users WHERE id = 1;
-- データ更新
UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- データ削除
DELETE FROM users WHERE id = 1;インデックス
インデックスは検索を高速化する仕組みです。
- 主キー・ユニークキーは自動で作成
- 必要に応じて追加可能
CREATE INDEX idx_name ON users(name);JOINと関係データ
複数テーブルを結合してデータを取得できます。
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.total > 1000;- INNER JOIN:両方に存在するデータ
- LEFT JOIN:左側のテーブルをすべて、右側は一致するデータのみ
トランザクション
ECサイトなどでは在庫管理などで不可欠です。トランザクションを使うことで、処理途中で問題があってもデータが不整合にならず、安全に操作できます。
START TRANSACTION;
UPDATE products SET stock = stock - 1 WHERE id = 10;
INSERT INTO orders (user_id, product_id) VALUES (1, 10);
COMMIT; -- 成功時
ROLLBACK; -- 失敗時ストアドプロシージャ・トリガー
- ストアドプロシージャ:データベース側でまとめて処理
- トリガー:INSERT/UPDATE/DELETE時に自動処理
例:ユーザー登録時にログを残す
CREATE TRIGGER user_after_insert
AFTER INSERT ON users
FOR EACH ROW
INSERT INTO user_logs(user_id, action) VALUES (NEW.id, 'created');MySQL接続・管理ツール
- MySQL Workbench:GUIで設計・管理
- phpMyAdmin:ブラウザで操作可能
- コマンドライン:
mysql -u user -pで接続
開発中はWorkbenchやphpMyAdminでスキーマ確認、運用中はCLIで効率よく操作するのが一般的です。
開発者向けTips
- 文字コードはUTF-8に統一(日本語対応)
- 日付型は
DATETIMEやTIMESTAMPを使う - WHERE句でNULL値を扱う場合は
IS NULLを使用 - 大量データには適切にインデックスを設定
- ECサイトではユーザー認証・カート管理・注文履歴を正しくJOINして設計
まとめ
MySQLはWeb開発において非常に重要なRDBMSです。
基本操作だけでなく、JOINやトランザクション、ストアドプロシージャを理解すると、効率的で安全なデータ管理が可能になります。
