MySQL基本の使い方 – 初心者向け完全ガイド

データベース・SQL

「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 の場合

手順:

  1. MySQL公式サイトにアクセス
  2. 「MySQL Installer for Windows」をダウンロード
  3. ダウンロードしたファイルを実行

インストール時の選択項目:

  • 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

公式インストーラーを使う方法:

  1. MySQL公式サイトからmacOS版をダウンロード
  2. .dmgファイルを開いてインストール
  3. システム環境設定で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: デフォルト値は0
  • PRIMARY 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を書かなくてもマウス操作でデータベース管理
  • テーブル設計やデータ表示が視覚的にできる

基本的な使い方:

  1. Workbenchを起動
  2. 接続を作成(localhost、ユーザー名、パスワード)
  3. 左側でデータベース・テーブルを選択
  4. 右側でデータを表示・編集

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ツールを使えばより簡単に管理できる
  • セキュリティとバックアップも忘れずに

コメント

タイトルとURLをコピーしました