「MySQLの操作方法がわからない」
「コマンドが多すぎて覚えられない」
そんな悩みを解決するために、MySQLでよく使うコマンドをカテゴリ別に整理しました。
初心者の方から中級者の方まで、必要なときにすぐ確認できるリファレンスとして活用してください。
この記事では、基本的な接続方法からデータ操作、テーブル管理、ユーザー管理まで、実際の開発や運用でよく使うコマンドを厳選して紹介します。
MySQLへの接続とデータベース基本操作

MySQLサーバーに接続する
まずはMySQLサーバーに接続しましょう。
mysql -u ユーザー名 -p
実行すると、パスワードの入力が求められます。正しく入力すると、MySQLのプロンプトが表示されます。
接続例:
mysql -u root -p
Enter password: ****
mysql>
ホストを指定して接続する
リモートのMySQLサーバーに接続する場合:
mysql -h ホスト名 -u ユーザー名 -p
データベースの基本操作
コマンド | 説明 | 例 |
---|---|---|
SHOW DATABASES; | データベース一覧を表示 | 利用可能なデータベースを確認 |
CREATE DATABASE データベース名; | データベースを作成 | CREATE DATABASE myapp; |
USE データベース名; | 使用するデータベースを選択 | USE myapp; |
DROP DATABASE データベース名; | データベースを削除 | DROP DATABASE myapp; |
SELECT DATABASE(); | 現在選択中のデータベースを確認 | 作業中のデータベース名を表示 |
重要なポイント:
- データベースを削除する前は、必ずバックアップを取りましょう
USE
コマンドでデータベースを選択してから作業を始めます
テーブル操作のコマンド

テーブルの確認と作成
-- テーブル一覧を表示
SHOW TABLES;
-- テーブルの構造を確認
DESCRIBE テーブル名;
-- または
SHOW COLUMNS FROM テーブル名;
-- テーブルを作成
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
テーブルの変更と削除
コマンド | 説明 | 例 |
---|---|---|
ALTER TABLE テーブル名 ADD カラム名 データ型; | カラムを追加 | ALTER TABLE users ADD phone VARCHAR(20); |
ALTER TABLE テーブル名 DROP カラム名; | カラムを削除 | ALTER TABLE users DROP phone; |
ALTER TABLE テーブル名 MODIFY カラム名 新データ型; | カラムの型を変更 | ALTER TABLE users MODIFY name VARCHAR(150); |
DROP TABLE テーブル名; | テーブルを削除 | DROP TABLE users; |
TRUNCATE TABLE テーブル名; | テーブルのデータをすべて削除 | TRUNCATE TABLE users; |
テーブル作成のベストプラクティス:
- PRIMARY KEYは必ず設定する
- NOT NULLやUNIQUE制約を適切に使う
- 作成日時や更新日時のカラムを含める
データ操作(CRUD)の基本コマンド
データの登録(Create)
-- 1件のデータを挿入
INSERT INTO users (name, email) VALUES ('田中太郎', 'tanaka@example.com');
-- 複数件のデータを一度に挿入
INSERT INTO users (name, email) VALUES
('佐藤花子', 'sato@example.com'),
('鈴木一郎', 'suzuki@example.com');
-- すべてのカラムに値を挿入(カラム名省略可能)
INSERT INTO users VALUES (NULL, '山田次郎', 'yamada@example.com', NOW());
データの取得(Read)
-- すべてのデータを取得
SELECT * FROM users;
-- 特定のカラムのみ取得
SELECT name, email FROM users;
-- 条件を指定してデータを取得
SELECT * FROM users WHERE name = '田中太郎';
-- 複数の条件で検索
SELECT * FROM users WHERE name LIKE '%田中%' AND email IS NOT NULL;
-- データを並べ替えて取得
SELECT * FROM users ORDER BY created_at DESC;
-- 件数を制限して取得
SELECT * FROM users LIMIT 10;
-- データの件数を取得
SELECT COUNT(*) FROM users;
データの更新(Update)
-- 特定の条件でデータを更新
UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
-- 複数のカラムを同時に更新
UPDATE users SET name = '田中花子', email = 'hanako@example.com' WHERE id = 1;
データの削除(Delete)
-- 条件を指定してデータを削除
DELETE FROM users WHERE id = 1;
-- 特定の条件でまとめて削除
DELETE FROM users WHERE created_at < '2024-01-01';
システム情報の取得コマンド

MySQLの状態確認
-- MySQLのバージョンを確認
SELECT VERSION();
-- 現在の日時を取得
SELECT NOW();
-- 現在のユーザーを確認
SELECT USER();
-- 実行中のプロセス一覧
SHOW PROCESSLIST;
-- データベースのサイズを確認
SELECT
table_schema AS 'データベース名',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'サイズ(MB)'
FROM information_schema.tables
GROUP BY table_schema;
サーバーの設定と状態
コマンド | 説明 | 用途 |
---|---|---|
SHOW STATUS; | サーバーの状態情報を表示 | パフォーマンス監視 |
SHOW VARIABLES; | システム変数の設定値を表示 | 設定確認 |
SHOW ENGINES; | 利用可能なストレージエンジンを表示 | エンジン確認 |
SHOW GRANTS FOR ユーザー名@ホスト; | ユーザーの権限を確認 | 権限監査 |
ユーザー管理と権限設定
ユーザーの作成と削除
-- 新しいユーザーを作成
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password123';
-- リモートアクセス可能なユーザーを作成
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password123';
-- ユーザーを削除
DROP USER 'username'@'localhost';
-- 既存ユーザーのパスワードを変更
ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';
権限の付与と削除
-- すべての権限を付与
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
-- 特定の権限のみ付与
GRANT SELECT, INSERT, UPDATE ON database_name.table_name TO 'username'@'localhost';
-- 権限を削除
REVOKE INSERT, UPDATE ON database_name.* FROM 'username'@'localhost';
-- 権限設定を反映(重要!)
FLUSH PRIVILEGES;
よく使う権限の種類
権限 | 説明 | 用途 |
---|---|---|
SELECT | データの参照 | 読み取り専用ユーザー |
INSERT | データの挿入 | アプリケーション用 |
UPDATE | データの更新 | アプリケーション用 |
DELETE | データの削除 | 管理者用 |
CREATE | テーブル・データベース作成 | 開発者用 |
DROP | テーブル・データベース削除 | 管理者用 |
ALL PRIVILEGES | すべての権限 | 管理者用 |
便利なコマンドとショートカット

ファイル操作とバックアップ
-- SQLファイルを実行
SOURCE /path/to/file.sql;
-- テーブルのデータをCSVファイルに出力
SELECT * FROM users
INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
-- CSVファイルからデータを読み込み
LOAD DATA INFILE '/tmp/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
MySQLプロンプトでの便利なコマンド
コマンド | 説明 | 使用場面 |
---|---|---|
EXIT; または QUIT; | MySQLから終了 | 作業完了時 |
\c | 実行中のクエリをキャンセル | 長時間実行の中断 |
\s | 接続状態の表示 | 接続情報確認 |
\h または HELP; | ヘルプの表示 | コマンド確認 |
\. ファイル名 | SQLファイルの実行 | バッチ処理 |
バックアップとリストア
# データベース全体をバックアップ
mysqldump -u username -p database_name > backup.sql
# 特定のテーブルのみバックアップ
mysqldump -u username -p database_name table_name > table_backup.sql
# バックアップからリストア
mysql -u username -p database_name < backup.sql
実用的なクエリ例
よく使う検索パターン
-- 部分一致検索
SELECT * FROM users WHERE name LIKE '%田中%';
-- 範囲検索
SELECT * FROM orders WHERE order_date BETWEEN '2025-01-01' AND '2025-12-31';
-- NULL値のチェック
SELECT * FROM users WHERE email IS NULL;
SELECT * FROM users WHERE email IS NOT NULL;
-- 複数の値に一致
SELECT * FROM users WHERE id IN (1, 3, 5, 7);
-- 重複を除いて取得
SELECT DISTINCT department FROM employees;
-- グループ化と集計
SELECT department, COUNT(*) FROM employees GROUP BY department;
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 500000;
JOIN(結合)の基本
-- 内部結合
SELECT u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 左外部結合
SELECT u.name, o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- 複数テーブルの結合
SELECT u.name, o.total, p.product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id;
エラー対策と確認方法

よくあるエラーと対処法
エラーメッセージ | 原因 | 対処法 |
---|---|---|
Access denied | 認証失敗 | ユーザー名・パスワードを確認 |
Unknown database | データベースが存在しない | SHOW DATABASES; でデータベース名を確認 |
Table doesn't exist | テーブルが存在しない | SHOW TABLES; でテーブル名を確認 |
Column not found | カラムが存在しない | DESCRIBE テーブル名; でカラム名を確認 |
Duplicate entry | 重複データの挿入 | UNIQUE制約に違反していないか確認 |
トラブルシューティング
-- 接続中のユーザーと実行中のクエリを確認
SHOW PROCESSLIST;
-- ロックされているテーブルを確認
SHOW OPEN TABLES WHERE In_use > 0;
-- エラーログの確認(MySQLサーバー設定による)
SHOW VARIABLES LIKE 'log_error';
-- 最後に実行したクエリのエラー詳細
SHOW WARNINGS;
まとめ
MySQLを効率的に使うために、最もよく使うコマンドをまとめました。
初心者が最初に覚えるべきコマンド TOP 10
mysql -u username -p
– ログインSHOW DATABASES;
– データベース一覧USE database_name;
– データベース選択SHOW TABLES;
– テーブル一覧DESCRIBE table_name;
– テーブル構造確認SELECT * FROM table_name;
– データ確認INSERT INTO table_name VALUES (...);
– データ挿入UPDATE table_name SET ... WHERE ...;
– データ更新DELETE FROM table_name WHERE ...;
– データ削除EXIT;
– ログアウト
安全にMySQLを使うためのチェックポイント
- 本番環境では必ずバックアップを取る
UPDATE
やDELETE
では必ずWHERE
句を使う- 権限は必要最小限に設定する
- 定期的にログやパフォーマンスを監視する
コメント