MySQL完全まとめ【開発者向け】

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に統一(日本語対応)
  • 日付型は DATETIMETIMESTAMP を使う
  • WHERE句でNULL値を扱う場合は IS NULL を使用
  • 大量データには適切にインデックスを設定
  • ECサイトではユーザー認証・カート管理・注文履歴を正しくJOINして設計

まとめ

MySQLはWeb開発において非常に重要なRDBMSです。
基本操作だけでなく、JOINやトランザクション、ストアドプロシージャを理解すると、効率的で安全なデータ管理が可能になります。