ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
本稿は MariaDB / MySQL のテーブル関連 SQL に関する記事です。テーブルの作成・確認・変更・削除・インデックス・外部キーといった、テーブルレベルの操作をまとめます。
子ページから項目を選択してください。
本ページの子ページ
- テーブル作成 —
CREATE TABLE - カラムの定義変更 —
ALTER TABLE ... MODIFY - カラム名の変更 —
ALTER TABLE ... CHANGE - カラム追加 / 削除 —
ALTER TABLE ... ADD/DROP COLUMN - インデックスの作成 —
CREATE INDEX - インデックスの削除 —
DROP INDEX - AUTO_INCREMENT の仕様について
- AUTO_INCREMENT の追加と確認方法
- 外部キーの追加/削除と制約名の確認方法
テーブル関連 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 ( |
主なデータ型
| 分類 | 主な型 | 用途 |
|---|---|---|
| 整数 | TINYINT / SMALLINT / INT / BIGINT | 必要桁に応じて選択 |
| 小数 | DECIMAL(p,s) / FLOAT / DOUBLE | 金額は DECIMAL |
| 文字列 | CHAR(n) / VARCHAR(n) / TEXT | 長さに応じて |
| 日時 | DATE / DATETIME / TIMESTAMP | TZ を意識 |
| 論理値 | TINYINT(1) / BOOLEAN | 0/1 |
| JSON | JSON | 柔軟な構造を入れる |
| 列挙 | ENUM('a','b') | 軽量だが拡張性に難 |
| バイナリ | BLOB / VARBINARY | 画像・ファイル |
キー / 制約
| 制約 | 用途 |
|---|---|
| PRIMARY KEY | 主キー (NULL 不可・一意) |
| UNIQUE | 一意制約 |
| NOT NULL | NULL 禁止 |
| 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 はロールバック不可。事前バックアップを徹底
関連
- 親カテゴリ: SQL (MariaDB)
- 関連: データベース関連 / ユーザー関連 / パフォーマンスチューニング
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
- 基本構文
- データベース関連
- テーブル関連
- ユーザー関連
- メタデータ関連
- NULL判定を伴うCASE分の使用方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?