この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-05-13 08:53:45

タイトル: テーブル関連
SEOタイトル: MariaDB・MySQLのテーブル操作SQL|CREATE TABLEとALTER TABLE

本稿は MariaDB / MySQL のテーブル関連 SQL に関する記事です。テーブルの作成・確認・変更・削除・インデックス・外部キーといった、テーブルレベルの操作をまとめます。

子ページから項目を選択してください。

本ページの子ページ

テーブル関連 SQL の早見表

操作SQL
一覧表示SHOW TABLES;
定義の確認SHOW CREATE TABLE t; / DESC t;
テーブル作成CREATE TABLE t ( ... ) ENGINE=InnoDB CHARSET=utf8mb4;
削除DROP TABLE t;
名前変更RENAME TABLE old TO new;
全行削除 (高速)TRUNCATE TABLE t;
カラム追加ALTER TABLE t ADD COLUMN c INT NOT NULL;
カラム型変更ALTER TABLE t MODIFY c BIGINT NOT NULL;
カラム名変更ALTER TABLE t CHANGE old new INT;
インデックス追加CREATE INDEX idx_t_c ON t(c);
外部キー追加ALTER TABLE t ADD CONSTRAINT fk_x FOREIGN KEY (a) REFERENCES s(id);

典型的なテーブル作成

CREATE TABLE users (
  id         BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  name       VARCHAR(100) NOT NULL,
  email      VARCHAR(255) NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  deleted_at TIMESTAMP NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uk_email (email),
  KEY idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

主なデータ型

分類主な型用途
整数TINYINT / SMALLINT / INT / BIGINT必要桁に応じて選択
小数DECIMAL(p,s) / FLOAT / DOUBLE金額は DECIMAL
文字列CHAR(n) / VARCHAR(n) / TEXT長さに応じて
日時DATE / DATETIME / TIMESTAMPTZ を意識
論理値TINYINT(1) / BOOLEAN0/1
JSONJSON柔軟な構造を入れる
列挙ENUM('a','b')軽量だが拡張性に難
バイナリBLOB / VARBINARY画像・ファイル

キー / 制約

制約用途
PRIMARY KEY主キー (NULL 不可・一意)
UNIQUE一意制約
NOT NULLNULL 禁止
DEFAULT 値既定値
FOREIGN KEY外部キー
CHECK条件式 (MySQL 8.0.16+ で本格対応)
AUTO_INCREMENT自動採番

大きなテーブルへの ALTER の注意

  • 大規模テーブルへの ALTER TABLE は長時間ロックすることがある
  • MySQL 5.6+ ではオンライン DDL がサポートされるが、操作内容によりロック・コピーが発生
  • 本番では pt-online-schema-change、gh-ost などのツールでローテーション
  • レプリカ遅延に影響するので、夜間帯やメンテ時間に実施
  • 必ず事前バックアップとリハーサルを行う

注意点

  • InnoDB を選ぶ (トランザクション・行ロック・外部キー)。MyISAM は新規利用を避ける
  • 文字コードは utf8mb4。utf8 (3 バイト) は絵文字未対応
  • カラム名・テーブル名は小文字・スネークケースで統一すると OS 間移植時の混乱を避けられる
  • 巨大な TEXT/BLOB はテーブル本体を肥大化させる。S3 等の外部ストレージ+ URL 保存の検討
  • DROP TABLE / TRUNCATE はロールバック不可。事前バックアップを徹底

関連