「MySQLって何?どうやって使うの?」
「データベースって難しそう…」
「Webサイトにデータベースを使いたいけど、何から始めればいい?」
そんなあなたのために、MySQLの基本的な使い方をゼロからわかりやすく説明します。
MySQLは、世界中で使われている人気のデータベースソフトです。
Webサイトやアプリのデータ保存に欠かせないツールで、無料で使えるのが大きな魅力です。
MySQLって何?

データベースとは?
データベースは、データを整理して保存する仕組みです。
例:住所録をイメージしてみましょう
名前 | メール | 電話番号
---------|------------------|----------
山田太郎 | yamada@xxx.com | 090-1234-5678
田中花子 | tanaka@yyy.com | 080-9876-5432
この表のような形でデータを管理するのがデータベースです。
MySQLの特徴
メリット:
- 無料で使える(オープンソース)
- 高速でたくさんのデータを処理できる
- 安定性が高く、大きなサイトでも使われている
- 学習しやすい(情報がたくさんある)
使われている場所:
- WordPress(ブログシステム)
- Facebook、Twitter(昔)
- ネットショップ
- 会社の業務システム
RDBMSとSQL
RDBMS(リレーショナル・データベース管理システム)
データを「表」の形で管理するシステムです。MySQLはRDBMSの一種です。
SQL(エスキューエル)
データベースを操作するための言語です。英語に近い文法で書けます。
SELECT name FROM users WHERE age > 20;
(訳:usersテーブルから、年齢が20歳以上の人の名前を取得)
MySQLをインストールしよう
2-1. Windows の場合
手順:
- MySQL公式サイトにアクセス
- 「MySQL Installer for Windows」をダウンロード
- ダウンロードしたファイルを実行
インストール時の選択項目:
- Server: MySQLデータベース本体(必須)
- Workbench: グラフィカルな管理ツール(推奨)
- Shell: コマンドライン接続ツール(推奨)
重要な設定:
- Root Password: 管理者パスワード(忘れないようにメモ!)
- Port: 3306(デフォルトのまま)
- Windows Service: 自動起動にチェック
Mac の場合
Homebrewを使う方法(推奨):
# Homebrewがない場合はインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# MySQLをインストール
brew install mysql
# MySQLを起動
brew services start mysql
# 初期設定
mysql_secure_installation
公式インストーラーを使う方法:
- MySQL公式サイトからmacOS版をダウンロード
- .dmgファイルを開いてインストール
- システム環境設定でMySQLを起動
Linux(Ubuntu)の場合
# パッケージ情報を更新
sudo apt update
# MySQLをインストール
sudo apt install mysql-server
# MySQLを起動
sudo systemctl start mysql
# 自動起動を設定
sudo systemctl enable mysql
# 初期設定
sudo mysql_secure_installation
インストール確認
MySQLに接続してみましょう:
mysql -u root -p
パスワードを入力後、以下の画面が表示されれば成功です:
Welcome to the MySQL monitor.
mysql>
接続を終了:
exit;
最初のデータベースを作ろう

MySQLに接続
mysql -u root -p
プロンプトの意味:
mysql>
: MySQLにログインしている状態- ここでSQLコマンドを入力します
データベース一覧を確認
SHOW DATABASES;
実行結果例:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
これらは、MySQLが最初から持っているデータベースです。
新しいデータベースを作成
CREATE DATABASE my_shop;
成功メッセージ:
Query OK, 1 row affected (0.01 sec)
データベースを選択
USE my_shop;
確認メッセージ:
Database changed
これで、my_shop
データベースの中で作業できます。
現在のデータベースを確認
SELECT DATABASE();
結果:
+------------+
| DATABASE() |
+------------+
| my_shop |
+------------+
テーブルを作ってデータを管理しよう
テーブルとは?
テーブルは、データを保存する「表」のことです。
例:商品テーブル
商品ID | 商品名 | 価格 | 在庫数
-------|----------|-------|-------
1 | りんご | 100 | 50
2 | みかん | 80 | 30
4-2. テーブルを作成
商品テーブルの作成:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price INT NOT NULL,
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
各部分の説明:
id
: 商品ID(自動で番号が振られる)VARCHAR(100)
: 100文字までの文字列INT
: 整数NOT NULL
: 空の値は入れられないDEFAULT 0
: デフォルト値は0PRIMARY KEY
: 主キー(各行を識別する)
ユーザーテーブルの作成例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
テーブル構造を確認
DESCRIBE products;
結果:
+------------+--------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+------------+--------------+------+-----+-------------------+
| id | int | NO | PRI | NULL |
| name | varchar(100) | NO | | NULL |
| price | int | NO | | NULL |
| stock | int | YES | | 0 |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP |
+------------+--------------+------+-----+-------------------+
テーブル一覧を確認
SHOW TABLES;
データを操作しよう(CRUD操作)

CRUDとは、データベースの基本操作のことです:
- Create(作成): INSERT
- Read(読み取り): SELECT
- Update(更新): UPDATE
- Delete(削除): DELETE
データを追加する(INSERT)
1件のデータを追加:
INSERT INTO products (name, price, stock)
VALUES ('りんご', 100, 50);
複数件を一度に追加:
INSERT INTO products (name, price, stock) VALUES
('みかん', 80, 30),
('バナナ', 120, 25),
('ぶどう', 200, 15);
データを表示する(SELECT)
全データを表示:
SELECT * FROM products;
結果例:
+----+--------+-------+-------+---------------------+
| id | name | price | stock | created_at |
+----+--------+-------+-------+---------------------+
| 1 | りんご | 100 | 50 | 2024-01-15 10:30:00 |
| 2 | みかん | 80 | 30 | 2024-01-15 10:31:00 |
| 3 | バナナ | 120 | 25 | 2024-01-15 10:32:00 |
| 4 | ぶどう | 200 | 15 | 2024-01-15 10:33:00 |
+----+--------+-------+-------+---------------------+
特定の列だけを表示:
SELECT name, price FROM products;
条件を指定して表示:
-- 価格が100円以上の商品
SELECT * FROM products WHERE price >= 100;
-- 名前に「り」が含まれる商品
SELECT * FROM products WHERE name LIKE '%り%';
-- 在庫が20個以下の商品を価格順で表示
SELECT * FROM products WHERE stock <= 20 ORDER BY price DESC;
データを更新する(UPDATE)
特定の商品の価格を変更:
UPDATE products SET price = 90 WHERE name = 'みかん';
複数の項目を一度に更新:
UPDATE products
SET price = 110, stock = 60
WHERE id = 1;
注意:WHERE句を忘れると全データが更新されてしまいます!
データを削除する(DELETE)
特定の商品を削除:
DELETE FROM products WHERE id = 4;
条件に合う複数の商品を削除:
DELETE FROM products WHERE stock = 0;
注意:WHERE句を忘れると全データが削除されてしまいます!
よく使うSQLコマンド集
データ検索の応用
件数を数える:
SELECT COUNT(*) FROM products;
SELECT COUNT(*) FROM products WHERE price > 100;
合計・平均・最大・最小:
SELECT SUM(stock) AS total_stock FROM products; -- 在庫合計
SELECT AVG(price) AS avg_price FROM products; -- 平均価格
SELECT MAX(price) AS max_price FROM products; -- 最高価格
SELECT MIN(price) AS min_price FROM products; -- 最低価格
グループ化:
-- 価格帯別の商品数
SELECT
CASE
WHEN price < 100 THEN '安い'
WHEN price < 200 THEN '普通'
ELSE '高い'
END AS price_range,
COUNT(*) AS count
FROM products
GROUP BY price_range;
ソート(並び替え)
-- 価格の安い順
SELECT * FROM products ORDER BY price ASC;
-- 価格の高い順
SELECT * FROM products ORDER BY price DESC;
-- 在庫数で並び替え、同じ場合は価格順
SELECT * FROM products ORDER BY stock DESC, price ASC;
制限(LIMIT)
-- 最初の3件だけ表示
SELECT * FROM products LIMIT 3;
-- 2件目から3件表示(ページネーション)
SELECT * FROM products LIMIT 3 OFFSET 2;
日付・時刻の操作
-- 今日作成された商品
SELECT * FROM products WHERE DATE(created_at) = CURDATE();
-- 1週間以内に作成された商品
SELECT * FROM products WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY);
実際のWebアプリケーションでの使用例
ユーザー登録システム
-- ユーザーテーブル
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 新規ユーザー登録
INSERT INTO users (username, email, password_hash)
VALUES ('yamada', 'yamada@example.com', 'hashed_password');
-- ログイン認証
SELECT id, username FROM users
WHERE email = 'yamada@example.com' AND password_hash = 'hashed_password';
ブログシステム
-- 記事テーブル
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
author_id INT,
published_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (author_id) REFERENCES users(id)
);
-- 最新記事10件を取得
SELECT p.title, p.content, u.username, p.published_at
FROM posts p
JOIN users u ON p.author_id = u.id
WHERE p.published_at IS NOT NULL
ORDER BY p.published_at DESC
LIMIT 10;
ショッピングカート
-- カートテーブル
CREATE TABLE cart_items (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
product_id INT,
quantity INT DEFAULT 1,
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
-- カートの中身と合計金額を表示
SELECT
p.name,
p.price,
c.quantity,
(p.price * c.quantity) AS subtotal
FROM cart_items c
JOIN products p ON c.product_id = p.id
WHERE c.user_id = 1;
MySQLのGUIツールを使おう
MySQL Workbench
特徴:
- MySQL公式のGUIツール
- SQLを書かなくてもマウス操作でデータベース管理
- テーブル設計やデータ表示が視覚的にできる
基本的な使い方:
- Workbenchを起動
- 接続を作成(localhost、ユーザー名、パスワード)
- 左側でデータベース・テーブルを選択
- 右側でデータを表示・編集
phpMyAdmin
特徴:
- Webブラウザで使えるツール
- レンタルサーバーでよく使われる
- PHPで作られている
アクセス例:
http://localhost/phpmyadmin/
どちらを使うべき?
MySQL Workbench:
- 本格的な開発・設計
- 複雑なクエリの作成
- データベース設計図の作成
phpMyAdmin:
- 簡単なデータ管理
- Webサーバーとの連携
- 初心者にやさしい
よくある問題と解決方法
Q1: 接続できない
症状:
ERROR 2002 (HY000): Can't connect to local MySQL server
解決方法:
# MySQLが起動しているか確認
sudo systemctl status mysql # Linux
brew services list | grep mysql # Mac
# 起動していない場合
sudo systemctl start mysql # Linux
brew services start mysql # Mac
Q2: パスワードを忘れた
解決方法:
# 1. MySQLを停止
sudo systemctl stop mysql
# 2. セーフモードで起動
sudo mysqld_safe --skip-grant-tables &
# 3. パスワードなしで接続
mysql -u root
# 4. パスワードを変更
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
Q3: 文字化けする
解決方法:
-- データベース作成時に文字コードを指定
CREATE DATABASE my_shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- テーブル作成時にも指定
CREATE TABLE products (
name VARCHAR(100) CHARACTER SET utf8mb4
) CHARACTER SET utf8mb4;
Q4: テーブルが削除できない
原因: 外部キー制約がある場合
解決方法:
-- 外部キー制約を一時的に無効化
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE table_name;
SET FOREIGN_KEY_CHECKS = 1;
Q5: 性能が遅い
確認方法:
-- 実行時間を確認
EXPLAIN SELECT * FROM products WHERE name LIKE '%りんご%';
改善方法:
-- インデックスを作成
CREATE INDEX idx_name ON products(name);
セキュリティとバックアップ
セキュリティ対策
強いパスワードの設定:
-- パスワードポリシーを確認
SHOW VARIABLES LIKE 'validate_password%';
-- 強いパスワードに変更
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Strong_Password_123!';
不要なユーザーの削除:
-- 匿名ユーザーを削除
DROP USER ''@'localhost';
DROP USER ''@'hostname';
ファイアウォールの設定:
# ポート3306を特定のIPからのみ許可
sudo ufw allow from 192.168.1.0/24 to any port 3306
バックアップとリストア
データベースのバックアップ:
mysqldump -u root -p my_shop > backup.sql
バックアップからの復元:
mysql -u root -p my_shop < backup.sql
定期バックアップの設定(cron):
# 毎日午前2時にバックアップ
0 2 * * * mysqldump -u backup_user -p'password' my_shop > /backup/my_shop_$(date +\%Y\%m\%d).sql
まとめ
MySQLの基本的な使い方をマスターすれば、データを効率的に管理できる強力なツールが手に入ります。
この記事のポイント:
- MySQLは無料で使える高性能なデータベース
- SQLという言語でデータを操作する
- CREATE、INSERT、SELECT、UPDATE、DELETEが基本操作
- GUIツールを使えばより簡単に管理できる
- セキュリティとバックアップも忘れずに
コメント