1.

DDL

編集

DDL(Data Definition Language)とはSQLの分類の一つです。

表の作成、変更、削除や権限の付与、剥奪等を行います。

CREATEALTER文などが該当します。

本ページの子ページ一覧

項目内容
表関連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 LanguageDDLスキーマ・オブジェクト定義CREATE / ALTER / DROP
Data Manipulation LanguageDMLレコード操作SELECT / INSERT / UPDATE / DELETE
Data Control LanguageDCL権限管理GRANT / REVOKE
Transaction Control LanguageTCLトランザクションCOMMIT / ROLLBACK

DDL の使用例

-- テーブル作成
CREATE TABLE users (
    id    NUMBER PRIMARY KEY,
    name  VARCHAR2(100) NOT NULL,
    email VARCHAR2(255) UNIQUE,
    created_at DATE DEFAULT SYSDATE
);

-- カラム追加
ALTER TABLE users ADD age NUMBER;

-- カラム削除
ALTER TABLE users DROP COLUMN age;

-- インデックス作成
CREATE INDEX idx_users_email ON users(email);

-- テーブル削除
DROP TABLE users;

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はシーケンス必須、等

関連

  • 親カテゴリ: SQL
  • 対比: DML
  • MySQL/MariaDBのSQL: SQL
編集
Post Share
子ページ
  1. ユーザー関連
  2. 表関連
  3. 索引関連
同階層のページ
  1. DDL
  2. DML
  3. トランザクション制御
  4. データディクショナリ
  5. 動的パフォーマンスビュー
  6. 関数