3912 文字
20 分
【コマンド】 MySQLチートシート【基本操作】

目次

1
データベース操作とは
2
データ型一覧
3
制約一覧(CONSTRAINTS)
4
主な外部キーアクション一覧(ON DELETE / ON UPDATE)
5
SQLの演算子一覧(Operators)
1. 算術演算子(Arithmetic Operators)
2. 比較演算子(Comparison Operators)
3. 論理演算子(Logical Operators)
4. 集合演算子(Set Operators)
5. その他の演算子・特殊構文
6
式一覧(Expressions)
比較・パターンマッチ式
条件式(制御構文)
7
関数一覧(Functions)
1. 集約関数(Aggregate Functions)
2. 文字列関数(String Functions)
3. 数値関数(Numeric Functions)
4. 日付・時刻関数(Date/Time Functions)
5. 論理・条件関数(Conditional & Logical)
6. NULL処理関数
7. JSON関数(MySQL/PostgreSQL/SQLite限定)
8. ウィンドウ関数(Window Functions)
8
日時書式一覧(Date/Time Format)
9
日時文字列書式 一覧(Date/Time Format Literals)
10
日時修飾子一覧(Date/Time Modifiers)
11
基本操作
ローカル MySQL サーバーに接続
ローカル MySQL サーバーに接続(パスワードをワンラインで指定)
外部 MySQL サーバーに接続
補足
ログアウト
ヘルプ
12
ユーザー操作(root ログイン後)
ユーザー情報の取得
ユーザーの作成
ユーザーの削除
ユーザーにDB操作権限を付与
権限の確認
ユーザーの権限を取り消す
現在ログイン中のユーザーのパスワード変更
特定のユーザーのパスワード変更
13
データベース操作
データベース一覧の表示
データベースの作成
データベースの削除
データベースの選択
データベースのバックアップ
データベースのリストア
14
テーブル操作
テーブル一覧の表示
テーブルの詳細情報取得
全テーブルから特定のフィールド検索
テーブルの作成
テーブルの削除
テーブルのデータをクリア(構造は保持)
テーブル名の変更
テーブルにカラムの追加
カラムの削除
カラムのデータ型変更
テーブル設計の確認
テーブルの詳細情報取得
15
レコード操作
データの追加
データの更新
全レコードの削除
一部レコードの削除

データベース操作とは#

データベース操作とは、データベースに格納された情報に対して行う一連の処理のことです。基本的には以下の4つの操作(CRUD)に分類されます。

操作英語意味代表的なSQL
CCreateデータの作成INSERT
RReadデータの読み取りSELECT
UUpdateデータの更新UPDATE
DDeleteデータの削除DELETE

これらの操作を通じて、アプリケーションはデータの追加、取得、変更、削除を行い、データベースとのやり取りを実現します。


データ型一覧#

カテゴリデータ型の例説明
数値型INT / INTEGER整数値(例:1, 100, -50など)
BIGINT大きな整数(64bit)
SMALLINT / TINYINT小さな整数(16bit / 8bitなど)
DECIMAL(p,s) / NUMERIC(p,s)小数(精度と桁数を指定する固定小数点)
FLOAT / REAL / DOUBLE浮動小数点数(誤差を含む小数)
文字列型CHAR(n)固定長の文字列(例:CHAR(10)は常に10文字)
VARCHAR(n)可変長の文字列(最大n文字)
TEXT長文テキストなどの大量の文字列
日付・時刻型DATE日付(例:2025-05-09)
TIME時刻(例:13:45:00)
DATETIME / TIMESTAMP日付と時刻の組み合わせ(例:2025-05-09 13:45:00)
YEAR年(例:2025)
論理値型BOOLEAN / BOOL真偽値(TRUE / FALSE)
バイナリ型BLOB / BINARY / VARBINARYバイナリデータ(画像・音声などの非テキストデータ)
列挙・その他型ENUM決められた値の中から選択(例:‘small’, ‘medium’, ‘large’)
JSON構造化データをJSON形式で格納
UUID一意な識別子(例:ユーザーIDなど)

制約一覧(CONSTRAINTS)#

制約名キーワード説明
主キー制約PRIMARY KEYテーブルの中で各行を一意に識別する列。NULLを許容しない。一つのテーブルに1つだけ設定できる(複数列の複合主キーも可)。
外部キー制約FOREIGN KEY他のテーブルの主キー(または一意キー)を参照する。参照整合性を保つ。
一意制約UNIQUE列の値が他の行と重複しないように制限。NULLは複数許容される(DBMSによって動作が異なる)。
非NULL制約NOT NULL列にNULLを格納することを禁止。必須入力列。
デフォルト値制約DEFAULT値が指定されなかった場合に、自動的に設定される初期値。
チェック制約CHECK列の値に任意の条件を設定する。例:CHECK (age >= 0)
自動採番AUTO_INCREMENT / SERIAL主に整数の主キーで使用され、自動的に連番を生成(MySQLではAUTO_INCREMENT、PostgreSQLではSERIAL)
一意インデックスUNIQUE INDEX一意性を保証するインデックス。UNIQUE制約とほぼ同等。複数列でも可。
複合キー制約PRIMARY KEY (col1, col2)複数の列の組み合わせで一意性を保証する(複合主キー)。
名前付き制約CONSTRAINT name …制約に任意の名前を付けることができる。例:CONSTRAINT chk_age CHECK (age >= 0)
ON DELETE / ON UPDATE外部キーの動作定義外部キーで参照先のデータが削除・更新されたときの動作を定義(例:CASCADE, SET NULL, RESTRICT)

主な外部キーアクション一覧(ON DELETE / ON UPDATE)#

アクション説明
CASCADE親テーブルの行が削除/更新されたら、子テーブルの行も連動して削除/更新される
SET NULL親テーブルの行が削除/更新されたら、子テーブルの該当列をNULLにする
SET DEFAULT子テーブルの該当列にデフォルト値を設定(対応していないRDBMSもある)
RESTRICT親テーブルの行が削除/更新されるのを禁止する(制限をかける)
NO ACTION削除/更新のタイミングで何もしない(RESTRICTに似る)

SQLの演算子一覧(Operators)#

1. 算術演算子(Arithmetic Operators)#

演算子意味説明
+加算a + b2つの値を加算する
-減算a - b左辺から右辺を減算する
*乗算a * b2つの値を掛け算する
/除算a / b左辺を右辺で割る
%剰余(モジュロ)a % b割り算の余りを求める(DBMSによる)

2. 比較演算子(Comparison Operators)#

演算子意味説明
=等しいa = b値が等しいか判定
<> または !=等しくないa <> b, a != b値が等しくないか判定
>より大きいa > b左辺が右辺より大きい
<より小さいa < b左辺が右辺より小さい
>=以上a >= b左辺が右辺以上
<=以下a <= b左辺が右辺以下
BETWEEN範囲内かどうかa BETWEEN x AND yaがx以上かつy以下か
IN指定リストに含まれるかa IN (x, y, z)値が指定された複数の値の中に含まれているか
LIKEパターン一致name LIKE ‘A%‘部分一致(ワイルドカード%や_を使用)
IS NULLNULLかどうかa IS NULL値がNULLであるか判定
IS NOT NULLNULLでないかa IS NOT NULL値がNULLでないか判定

3. 論理演算子(Logical Operators)#

演算子意味説明
AND両方の条件が真cond1 AND cond2両方の条件を満たす場合に真
ORいずれかが真cond1 OR cond2どちらか一方でも条件を満たせば真
NOT否定NOT cond1条件が満たされない場合に真

4. 集合演算子(Set Operators)#

演算子意味説明
UNION和集合(重複排除)2つのSELECTの結果を結合し、重複行を除去
UNION ALL和集合(重複を残す)重複も含めて全ての結果を返す
INTERSECT積集合(共通部分)両方のSELECTに共通する行のみ返す(MySQL非対応)
EXCEPT差集合(AにはあるがBにはない)最初のSELECTに存在し、2番目には存在しない行(MySQL非対応)

5. その他の演算子・特殊構文#

構文意味説明
EXISTSサブクエリの存在確認サブクエリの結果が存在するかどうか
ANY / SOME任意の値との比較比較演算子と併用して部分一致を調べる
ALLすべての値との比較条件をすべての値に対して評価する
CASE WHEN THEN条件分岐構文if-elseに相当
COALESCENULLを別値で置き換える最初にNULLでない値を返す
NULLIF(a, b)a = b のときNULLを返すaとbが等しい場合はNULL、そうでなければaを返す

式一覧(Expressions)#

比較・パターンマッチ式#

用途使用例
=, !=, <, >, <=, >=値の比較age > 20
LIKEワイルドカード一致name LIKE ‘T%‘
NOT LIKE一致しないワイルドカードname NOT LIKE ‘%x%‘
GLOBUNIX風ワイルドカード一致(SQLite限定)name GLOB ‘T*‘
NOT GLOBGLOB一致しない(SQLite限定)name NOT GLOB ‘abc
REGEXP正規表現一致(MySQL等)name REGEXP ‘^A.*‘
NOT REGEXP正規表現一致しないname NOT REGEXP ‘[0-9]$‘
SIMILAR TOSQL正規表現一致(PostgreSQL)name SIMILAR TO ‘[A-Za-z]+_[0-9]+‘
NOT SIMILAR TOSIMILAR TO一致しないname NOT SIMILAR TO ‘test%‘
ESCAPELIKEにおけるワイルドカード文字のエスケープname LIKE ‘50%%’ ESCAPE ”
IN (…)候補リストとの一致status IN (‘draft’,‘active’)
NOT IN (…)候補リストに含まれないtype NOT IN (‘cancelled’, ‘archived’)
BETWEEN … AND範囲比較(含む)age BETWEEN 20 AND 30
NOT BETWEEN … AND範囲外の比較price NOT BETWEEN 100 AND 200
IS NULLNULL判定email IS NULL
IS NOT NULLNULLでないかの判定email IS NOT NULL

条件式(制御構文)#

用途使用例
CASE WHEN THEN条件分岐(if-else相当)CASE WHEN gender = ‘M’ THEN ‘男性’ ELSE ‘女性’ END
COALESCE(…)NULLを順番に回避(最初の非NULLを返す)COALESCE(nickname, username, ‘名無し’)
NULLIF(a, b)値が等しければNULLを返すNULLIF(score, 0)
IF(condition, true_val, false_val)条件式(MySQL限定)IF(score >= 60, ‘合格’, ‘不合格’)

関数一覧(Functions)#

1. 集約関数(Aggregate Functions)#

関数概要
COUNT(expr)行数カウント(NULL除外)
COUNT(*)全行カウント(NULL含む)
SUM(expr)合計
AVG(expr)平均
MIN(expr)最小値
MAX(expr)最大値
GROUP_CONCAT(expr)カンマ区切り連結(MySQL)

2. 文字列関数(String Functions)#

関数概要
LENGTH(str)バイト数(MySQL)または文字数
CHAR_LENGTH(str)文字数
LOWER(str)小文字変換
UPPER(str)大文字変換
TRIM(str)前後の空白除去
LTRIM/RTRIM(str)左側/右側の空白除去
CONCAT(s1, s2, …)文字列結合
SUBSTRING(str, s, l)部分文字列抽出
REPLACE(str, a, b)置換
REPEAT(str, n)繰り返し
REVERSE(str)反転
LEFT(str, n) / RIGHT(str, n)左/右からn文字取得

3. 数値関数(Numeric Functions)#

関数概要
ROUND(n, d)四捨五入
CEIL(n) / CEILING(n)切り上げ
FLOOR(n)切り捨て
ABS(n)絶対値
MOD(n, m)剰余(n % m)
POWER(x, y)xのy乗
SQRT(n)平方根
RAND()ランダム値(0〜1)
TRUNCATE(n, d)小数点以下切り捨て

4. 日付・時刻関数(Date/Time Functions)#

関数概要
NOW() / CURRENT_TIMESTAMP現在の日時
CURDATE() / CURRENT_DATE現在の日付
CURTIME() / CURRENT_TIME現在の時刻
DATE(expr)日付部分を抽出
TIME(expr)時刻部分を抽出
YEAR(expr) / MONTH(expr) / DAY(expr)各成分抽出
HOUR(expr) / MINUTE(expr) / SECOND(expr)各成分抽出
DATEDIFF(d1, d2)日数差(MySQL)
TIMESTAMPDIFF(unit, d1, d2)単位付き差分(MySQL)
DATE_ADD(date, INTERVAL x unit)日付加算(MySQL)
DATE_SUB(date, INTERVAL x unit)日付減算(MySQL)
STRFTIME(fmt, date)書式化(SQLite)

5. 論理・条件関数(Conditional & Logical)#

関数概要
CASE WHEN THEN条件分岐
NULLIF(a, b)等しければNULL
COALESCE(a, b, …)最初の非NULL値
IF(cond, t, f)三項条件(MySQLのみ)
IIF(cond, t, f)三項条件(SQL Server, SQLite)

6. NULL処理関数#

関数概要
ISNULL(expr)NULLならtrue(SQL Server)
IFNULL(expr, v)NULLならv(MySQL/SQLite)
COALESCE(…)最初の非NULL値を返す
NULLIF(a, b)a = b なら NULL、それ以外は a

7. JSON関数(MySQL/PostgreSQL/SQLite限定)#

関数概要
JSON_EXTRACT(json, path)JSONから値取得(MySQL)
-> / ->>JSONアクセス(PostgreSQL)
JSON_OBJECT(…)JSONオブジェクト生成
JSON_ARRAY(…)JSON配列生成
JSON_VALID(json)正しいJSONかチェック

8. ウィンドウ関数(Window Functions)#

関数概要
ROW_NUMBER()行番号
RANK() / DENSE_RANK()順位
NTILE(n)n分割
LAG(expr)1つ前の値
LEAD(expr)1つ後の値
FIRST_VALUE(expr)最初の値
LAST_VALUE(expr)最後の値

日時書式一覧(Date/Time Format)#

以下は、SQLで使用される「日時書式(フォーマット)」の一覧です。
日付や時刻を表示・抽出・変換する際に使われます。

用途#

  • フォーマット文字列(表示・出力形式を指定)
  • 抽出(年・月・日などを切り出し)
  • 変換(文字列⇔日時の変換)
書式意味例(2025年5月9日 15:42:07)
%Y西暦4桁2025
%y西暦下2桁25
%m月(2桁)05
%c月(1〜12)5
%d日(2桁)09
%e日(1〜31)9
%H時(24時間制, 00〜23)15
%k時(24時間制, 空白埋め)15
%I時(12時間制, 01〜12)03
%l時(12時間制, 空白埋め)3
%p午前/午後(AM/PM)PM
%M分(00〜59)42
%S秒(00〜59)07
%fマイクロ秒(6桁)123456
%zタイムゾーンオフセット(±HHMM)+0900
%Zタイムゾーン名(DB依存)JST
%a曜日(略称)Fri
%W曜日(英語フル)Friday
%w曜日番号(0:日〜6:土)5
%j年内通算日数(001〜366)129
%U年内の週番号(00〜53、日曜始まり)19
%VISO週番号(01〜53)19
%xローカルな日付表現(MySQL依存)05/09/25
%r時刻(12時間制、AM/PM)03:42:07 PM
%T時刻(24時間制)15:42:07
%D日付(MM/DD/YY形式)05/09/25

日時文字列書式 一覧(Date/Time Format Literals)#

書式備考(用途・例)
YYYY-MM-DD日付のみ(例:2025-05-09)
YYYY-MM-DD HH:MM日付と時刻(分まで)(例:2025-05-09 14:30)
YYYY-MM-DD HH:MM:SS日付と時刻(秒まで)(例:2025-05-09 14:30:45)
YYYY-MM-DD HH:MM:SS.SSS日付と時刻(ミリ秒まで)(例:2025-05-09 14:30:45.123)
HH:MM時刻のみ(分まで)(例:14:30)
HH:MM:SS時刻のみ(秒まで)(例:14:30:45)
HH:MM:SS.SSS時刻のみ(ミリ秒まで)(例:14:30:45.123)
now現在時刻(SQLiteやPostgreSQLなどで使用可能)
UNIX時間(整数または文字列)1970年1月1日 00:00:00 UTC からの秒数(例:1725859200)

※補足:#

  • YYYY:年、MM:月、DD:日
  • HH:時(24時間制)、MM:分、SS:秒、SSS:ミリ秒
  • 書式はデータベースごとに解釈が異なる場合があります(特にUNIX時間の扱いなど)

日時修飾子一覧(Date/Time Modifiers)#

修飾子(書式)意味・用途使用例
NNN daysNNN日加算/減算+7 days → 7日後/-30 days → 30日前
NNN hoursNNN時間加算/減算+3 hours → 3時間後
NNN minutesNNN分加算/減算-90 minutes → 90分前
NNN.NNNN secondsNNN秒加算/減算(小数対応)+0.5 seconds → 0.5秒後
NNN monthsNNNか月加算/減算-1 months → 1か月前
NNN yearsNNN年加算/減算+1 years → 翌年
start of day日の始まり(00:00:00)に設定’2025-05-09 15:23:12’, ‘start of day’
start of month月の初日(1日00:00:00)に設定’start of month’
start of year年初(1月1日 00:00:00)に設定’start of year’
weekday N本日以降の N 曜日(0=日曜, 6=土曜)‘weekday 0’ → 次の日曜
unixepochUNIX時間(1970-01-01 00:00:00 UTCからの秒数)へ変換datetime(1725859200, ‘unixepoch’)
localtimeUTCからローカル時刻に変換’now’, ‘localtime’
utcローカルからUTC時刻に変換’now’, ‘utc’

特徴と補足:#

  • 複数の修飾子を空白区切りで組み合わせることができます(例: now, ‘+1 day’, ‘start of month’)。
  • 加算・減算は「+」「-」を先頭に付けます。
  • weekday は曜日指定で、今週中に来る該当曜日または来週を返します。

基本操作#

命令意味
mysqlMySQL クライアント起動
-uユーザー名指定
-pパスワード指定(プロンプト)
-hホスト指定
-Pポート番号指定
\q / quit / exitログアウト
help / \hヘルプ表示

ローカル MySQL サーバーに接続#

$ mysql -u [ユーザー名] -p

ローカル MySQL サーバーに接続(パスワードをワンラインで指定)#

※ セキュリティ上、履歴に残るため推奨されません。

$ mysql -u [ユーザー名] -p[パスワード]

外部 MySQL サーバーに接続#

$ mysql -u [ユーザー名] -p -h [ホスト名] -P [ポート番号]

補足#

  • -p オプションはパスワードが設定されている場合のみ必要。
  • MySQL にログイン後は mysql> プロンプトが表示され、MySQL コマンドのみ使用可能。
  • コマンドの末尾には ; (セミコロン) を付ける。

ログアウト#

mysql> \q
mysql> quit
mysql> exit

ヘルプ#

mysql> help
mysql> \h

ユーザー操作(root ログイン後)#

命令意味
SELECT … FROM mysql.userユーザー情報を取得
CREATE USERユーザー作成
DROP USERユーザー削除
GRANT権限付与
REVOKE権限剥奪
SHOW GRANTS権限一覧表示
SET PASSWORDパスワード設定・変更

ユーザー情報の取得#

mysql> SELECT Host, User, Password FROM mysql.user;

ユーザーの作成#

ユーザー testuser(パスワード password)を作成

mysql> CREATE USER `testuser`@`localhost` IDENTIFIED BY 'password';

ユーザーの削除#

mysql> DROP USER 'testuser'@'localhost';

ユーザーにDB操作権限を付与#

testuser@localhosttest_db への全権限を付与

mysql> GRANT ALL PRIVILEGES ON test_db.* TO `testuser`@`localhost` IDENTIFIED BY 'password';

権限の確認#

mysql> SHOW GRANTS FOR 'testuser'@'localhost';

ユーザーの権限を取り消す#

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser'@'localhost';

現在ログイン中のユーザーのパスワード変更#

mysql> SET PASSWORD = PASSWORD('newpassword');

特定のユーザーのパスワード変更#

mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD('newpassword');

データベース操作#

命令意味
SHOW DATABASESデータベース一覧を表示
CREATE DATABASEデータベースを作成
DROP DATABASEデータベースを削除
USE使用するデータベースを選択
mysqldumpデータベースをバックアップ
mysql <バックアップをリストア

データベース一覧の表示#

mysql> SHOW DATABASES;

データベースの作成#

mysql> CREATE DATABASE test_db;

データベースの削除#

mysql> DROP DATABASE test_db;

データベースの選択#

mysql> USE test_db;

データベースのバックアップ#

$ mysqldump -u [ユーザー名] -p test_db > backup.sql

データベースのリストア#

$ mysql -u [ユーザー名] -p test_db < backup.sql

テーブル操作#

命令意味
SHOW TABLESテーブル一覧を表示
SHOW TABLE STATUSテーブルの詳細情報を表示
SELECT FROM information_schema.columns全テーブルからカラムを検索
CREATE TABLEテーブルを作成
DROP TABLEテーブルを削除
TRUNCATE TABLE全データ削除(構造は保持)
ALTER TABLE … RENAMEテーブル名を変更
ALTER TABLE … ADDカラムを追加
ALTER TABLE … DROP COLUMNカラムを削除
ALTER TABLE … MODIFYカラムのデータ型を変更
DESCテーブルの構造を表示
SHOW FULL COLUMNSカラムの詳細情報を表示

テーブル一覧の表示#

mysql> SHOW TABLES;

テーブルの詳細情報取得#

mysql> SHOW TABLE STATUS;

全テーブルから特定のフィールド検索#

mysql> SELECT table_name, column_name FROM information_schema.columns WHERE column_name = '検索条件';

テーブルの作成#

mysql> CREATE TABLE `m_users` (
          `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID',
          `user_name` VARCHAR(100) NOT NULL COMMENT 'ユーザー名',
          `mail_address` VARCHAR(200) NOT NULL COMMENT 'メールアドレス',
          `password` VARCHAR(100) NOT NULL COMMENT 'パスワード',
          `created` DATETIME DEFAULT NULL COMMENT '登録日',
          `modified` DATETIME DEFAULT NULL COMMENT '更新日'
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

テーブルの削除#

mysql> DROP TABLE IF EXISTS [テーブル名];

テーブルのデータをクリア(構造は保持)#

mysql> TRUNCATE TABLE users;

テーブル名の変更#

mysql> ALTER TABLE [旧テーブル名] RENAME [新テーブル名];

テーブルにカラムの追加#

mysql> ALTER TABLE users ADD tel INT DEFAULT NULL COMMENT '電話番号' AFTER mail_address;

カラムの削除#

mysql> ALTER TABLE users DROP COLUMN tel;

カラムのデータ型変更#

mysql> ALTER TABLE users MODIFY COLUMN tel VARCHAR(20);

テーブル設計の確認#

mysql> DESC [テーブル名];

テーブルの詳細情報取得#

mysql> SHOW FULL COLUMNS FROM [テーブル名];

レコード操作#

命令意味
INSERT INTOデータを追加
UPDATEデータを更新
DELETE FROMデータを削除
SELECTデータを取得

データの追加#

mysql> INSERT INTO m_users (user_name, mail_address, password, created, modified)
          VALUES ('Demo Sui', 'Sui@hoge.com', '123456', NOW(), NOW());

データの更新#

mysql> UPDATE m_users SET user_name='Demo Sui', mail_address='Sui@hoge.com' WHERE id = 5;

全レコードの削除#

mysql> DELETE FROM [テーブル名];

一部レコードの削除#

mysql> DELETE FROM [テーブル名] WHERE [条件式];

【コマンド】 MySQLチートシート【基本操作】
https://oooo-o0.github.io/posts/mysql/
作者
Sui
公開日
2025-04-09
ライセンス
CC BY-NC-SA 4.0