SQLのデータ定義言語(DDL)は、データベースオブジェクトの定義、変更、および削除を行うためのコマンド群です。DDLコマンドには、テーブル、ビュー、インデックス、スキーマなどのデータベースオブジェクトを操作するためのコマンドが含まれます。以下に、主要なDDLコマンドについて詳しく説明します。
1. CREATE
目的: 新しいデータベースオブジェクト(テーブル、ビュー、インデックスなど)を作成します。
CREATE TABLE
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
hire_date DATE,
salary DECIMAL(10, 2),
department_id INT
);
説明: employees
テーブルを作成し、各列のデータ型と制約(例:PRIMARY KEY
)を定義します。
CREATE VIEW
CREATE VIEW employee_view AS
SELECT employee_id, name, salary
FROM employees
WHERE salary > 50000;
説明: employee_view
というビューを作成し、employees
テーブルから給与が50,000以上の従業員のデータを取得します。
CREATE INDEX
CREATE INDEX idx_department ON employees(department_id);
説明: department_id
列に対してインデックスを作成し、検索性能を向上させます。
2. ALTER
目的: 既存のデータベースオブジェクトの構造を変更します。
ALTER TABLE
列の追加:
ALTER TABLE employees
ADD COLUMN email VARCHAR(100);
説明: employees
テーブルに email
列を追加します。
列の削除:
ALTER TABLE employees
DROP COLUMN email;
説明: employees
テーブルから email
列を削除します。
列の変更:
ALTER TABLE employees
ALTER COLUMN name VARCHAR(150);
説明: employees
テーブルの name
列のデータ型を変更します。
3. DROP
目的: データベースオブジェクトを削除します。
DROP TABLE
DROP TABLE employees;
説明: employees
テーブルをデータベースから完全に削除します。
DROP VIEW
DROP VIEW employee_view;
説明: employee_view
ビューを削除します。
DROP INDEX
DROP INDEX idx_department;
説明: idx_department
インデックスを削除します。
4. TRUNCATE
目的: テーブルのすべての行を削除しますが、テーブル構造は保持します。
TRUNCATE TABLE employees;
説明: employees
テーブルの全データを削除しますが、テーブル自体は残ります。DELETE
コマンドと異なり、TRUNCATE
はトランザクションログを使用しないため、パフォーマンスが向上します。
5. RENAME
目的: 既存のデータベースオブジェクトの名前を変更します。
ALTER TABLE employees
RENAME TO staff;
説明: employees
テーブルの名前を staff
に変更します。
DDLコマンドの実行に関する注意点
- トランザクション管理: 多くのデータベースでは、DDLコマンドは自動的にコミットされます。そのため、変更を元に戻すことが難しい場合があります。
- 権限: DDLコマンドの実行には適切な権限が必要です。権限がない場合、エラーが発生します。
- 依存関係: テーブルやビューには他のオブジェクトとの依存関係があります。例えば、ビューを削除すると、そのビューを参照する他のオブジェクトにも影響を与える可能性があります。
これらのDDLコマンドを理解し、適切に使用することで、データベースの構造を効率的に管理することができます。
コメント