タイトル: DDL
DDL(Data Definition Language)とはSQLの分類の一つです。
表の作成、変更、削除や権限の付与、剥奪等を行います。
CREATEやALTER文などが該当します。
本ページの子ページ一覧
| 項目 | 内容 |
|---|---|
| 表関連 | CREATE TABLE / ALTER TABLE / DROP TABLE |
| 索引関連 | CREATE INDEX / DROP INDEX |
| ユーザー関連 | CREATE USER / GRANT / REVOKE |
DDLの代表的なコマンド
| SQL | 用途 |
|---|---|
CREATE TABLE | テーブル作成 |
ALTER TABLE | テーブル構造変更(カラム追加・削除・型変更) |
DROP TABLE | テーブル削除 |
TRUNCATE TABLE | 全データ削除(高速、DDL扱い) |
CREATE INDEX / DROP INDEX | インデックス操作 |
CREATE VIEW / DROP VIEW | ビュー操作 |
CREATE SEQUENCE | シーケンス(連番) |
CREATE USER / DROP USER | ユーザー管理 |
GRANT / REVOKE | 権限付与・剥奪(DCLとして区別する文献もあり) |
SQL分類の中での位置づけ
| 分類 | 略称 | 用途 | 代表ステートメント |
|---|---|---|---|
| Data Definition Language | DDL | スキーマ・オブジェクト定義 | CREATE / ALTER / DROP |
| Data Manipulation Language | DML | レコード操作 | SELECT / INSERT / UPDATE / DELETE |
| Data Control Language | DCL | 権限管理 | GRANT / REVOKE |
| Transaction Control Language | TCL | トランザクション | COMMIT / ROLLBACK |
DDL の使用例
|
-- テーブル作成 |
DDLとトランザクションの関係
- Oracle / MySQL: DDLは暗黙COMMITが走る。ROLLBACKできない
- PostgreSQL: DDLもトランザクション内で扱える(ROLLBACK可能)
- 本番でのDDL実行は事前にバックアップ必須
注意点
- DROP TABLEは即座にデータ消失。本番では細心の注意
- 大きなテーブルのALTERはロックで他処理がブロックされる。オンラインDDL(MySQL)やpt-online-schema-changeを検討
- TRUNCATEはWHERE指定できない+DDLなのでROLLBACK不可。テスト環境のみで使う
- 方言差: DB2は
CREATE OR REPLACEが使える、Oracleはシーケンス必須、等