format_list_bulleted
【MySQL】SQLのCREATE TABLEなどのDDL(Data Definition Language)について解説
最終更新日時:2023-03-18 16:21:35



DDL(Data Definition Language)は、データベースのスキーマやオブジェクトを定義するために使用されるSQLのサブセットです。DDLには、テーブル、インデックス、ビュー、制約、トリガー、手順などのデータベースオブジェクトを作成、変更、削除するためのコマンドが含まれます。以下にDDLの一般的なコマンドとその使用法を説明します。


CREATE TABLE

CREATE TABLEコマンドは、新しいテーブルを作成するために使用されます。このコマンドには、テーブルの名前、列名、列のデータ型、列の制約などが含まれます。例えば、以下のコマンドは、employeesという名前の新しいテーブルを作成します。

CREATE TABLE employees (
  id INT PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  hire_date DATE
);

ALTER TABLE

ALTER TABLEコマンドは、既存のテーブルを変更するために使用されます。このコマンドには、列の追加、列の削除、列のデータ型の変更、列の制約の追加などが含まれます。例えば、以下のコマンドは、employeesテーブルに新しいsalary列を追加します。

ALTER TABLE employees
ADD COLUMN salary INT;


また、ADD COLUMNを加えた他の機能も紹介します。

ADD COLUMN

ADD COLUMNは、既存のテーブルに新しい列を追加するために使用されます。以下は、employeesテーブルに新しい列salaryを追加する例です。

DROP COLUMN

DROP COLUMNは、既存のテーブルから列を削除するために使用されます。以下は、employeesテーブルから列salaryを削除する例です。

ALTER TABLE employees
RENAME COLUMN salary TO new_salary;

MODIFY COLUMN

MODIFY COLUMNは、既存の列のデータ型やサイズなどの属性を変更するために使用されます。以下は、employeesテーブルの列salaryのデータ型をINTからFLOATに変更する例です。

ALTER TABLE employees
MODIFY COLUMN salary FLOAT;

RENAME COLUMN

RENAME COLUMNは、既存の列の名前を変更するために使用されます。以下は、employeesテーブルの列salaryをnew_salaryに名前を変更する例です。

ALTER TABLE employees
RENAME COLUMN salary TO new_salary;


ALTER TABLEコマンドは、テーブルの構造を変更するための強力なツールです。ただし、注意して使用する必要があります。ALTER TABLEコマンドを使用する前に、必ずバックアップを取得することをお勧めします。また、変更を行う前に変更内容に対するリスク評価を行い、必要な手順を踏むことが重要です。


DROP TABLE

DROP TABLEコマンドは、既存のテーブルを削除するために使用されます。このコマンドは、テーブルのデータ、インデックス、トリガー、制約などもすべて削除します。例えば、以下のコマンドは、employeesテーブルを削除します。

DROP TABLE employees;

CREATE INDEX

CREATE INDEXコマンドは、テーブルの列にインデックスを作成するために使用されます。インデックスは、テーブルの検索パフォーマンスを向上させるために使用されます。例えば、以下のコマンドは、employeesテーブルのlast_name列にインデックスを作成します。

CREATE INDEX idx_last_name ON employees (last_name);

CREATE VIEW

CREATE VIEWコマンドは、ビューを作成するために使用されます。ビューは、複数のテーブルからデータを取得し、1つの仮想テーブルとして表示するために使用されます。例えば、以下のコマンドは、employeesテーブルとdepartmentsテーブルからデータを取得し、employee_detailsという名前のビューを作成します。

CREATE VIEW employee_details AS
SELECT employees.id, employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

CREATE TRIGGER

CREATE TRIGGERコマンドは、トリガーを作成するために使用されます。トリガーは、データベース内で発生するイベントに対して自動的に実行されるプログラムです。例えば、以下のコマンドは、employeesテーブルに新しい行が挿入されたときに、その行の情報を別のテーブルに挿入するトリガーを作成します。

CREATE TRIGGER insert_employee
AFTER INSERT ON employees
FOR EACH ROW
INSERT INTO employee_audit (id, action, date)
VALUES (NEW.id, 'insert', NOW());

CREATE PROCEDURE

CREATE PROCEDUREコマンドは、ストアドプロシージャを作成するために使用されます。ストアドプロシージャは、SQLコマンドのグループを含むデータベースオブジェクトであり、複数のSQLコマンドを1つの操作にまとめることができます。例えば、以下のコマンドは、employeesテーブルの特定の条件を満たす従業員のリストを返すストアドプロシージャを作成します。

CREATE PROCEDURE get_employees (IN department VARCHAR(50))
BEGIN
SELECT * FROM employees WHERE department = department;
END;

まとめ

以上が、DDLの一般的なコマンドとその使用法です。DDLは、データベースのスキーマを作成、変更、削除するために必要なコマンドを提供します。これらのコマンドを適切に使用することで、データベースの正確性と効率性を確保することができます。