SQLの種類|DDL、DML、DCL(命令言語の分類)

今回は、データベースに対する命令の種類によって分類されるDDL、DML、DCLについて説明します。

データベースの操作は主にSQLによって行われますが、その命令はさまざまであり、データベースを定義する命令、データを操作する命令、データを制御する命令があります。

この3つの命令は、どのような用途に対してどのようなコマンドで実行されるのか。

この記事では、SQLの種類DDL、DML、DCLについて、それぞれの主要なコマンドも含めて解説します。

目次

DDL_ Data Definition Language

DDLは、Data Definition Languageの略でデータベースを定義する言語です。

データ定義言語 

DDL(データ定義言語)は、データベースの構造を定義するための言語です。具体的には、データベースの設計領域で使われるコマンド郡がDDLに分類され、テーブルの作成・削除、既存テーブルのスキーマ変更、ユーザーの追加・削除などを担当します。

また、ビューやインデックスのようなデータベースオブジェクトの作成も含まれます。反して、データの追加・削除・変更、抽出などはDDLに分類されません。

つまりDDLは、データベースを運用するための構造を定義するためのコマンド群です。

DDLに分類される命令

DDLに分類される主な命令を紹介します。

CREATE

CREATE コマンドは新しいデータベースオブジェクト(テーブル、ビュー、インデックス、データベースなど)を作成するときに使われます。

◇サンプルSQL文
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    BirthDate DATE
);

ALTER

ALTER コマンドは既存のデータベースオブジェクトを変更するときに使われます。

◇サンプルSQL文
ALTER TABLE Employees
ADD Email VARCHAR(100);

DROP

DROP コマンドは指定されたデータベースオブジェクト(テーブル、ビュー、インデックス、データベースなど)を削除するときに使われます。

◇サンプルSQL文
DROP TABLE Employees;

TRUNCATE

TRUNCATE コマンドはテーブル自体は残したまま、テーブル内の全データを削除するときに使われます。

◇サンプルSQL文
TRUNCATE TABLE Employees;

DDLは他にも、データベースオブジェクトにコメントを追加するときに使われるCOMMENT、データベースオブジェクトの名前を変更するときに使われるRENAMEがあります。

DML_ Data Manipulation Language

DMLは、Data Manipulation Languageの略でデータを操作する言語です。

データ操作言語 

DML(データ操作言語)は、データベースのデータを操作するための言語です。具体的には、データの追加・削除・更新、そしてさまざまなクエリによるデータの抽出などを担当します。

一方、データベースやテーブルの作成・削除・変更などはDMLに分類されません。

つまりDMLは、データベースを運用するためのデータを操作するためのコマンド群です。SQLの命令言語3種類のうち、最も頻繁に使われるのもDMLです(実行されるSQLの90%)。

DMLに分類される命令

DMLに分類される主な命令を紹介します。

SELECT

SELECT コマンドはさまざまな条件を組み合わせ、データベースのテーブルから指定されたデータを抽出するときに使われます。

SELECT FirstName, LastName, Email
FROM Employees;

INSERT

INSERT コマンドはデータベースのテーブルに、新しいレコードを追加するときに使われます。

INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Email)
VALUES (1, 'Taro', 'Yamada', '1990-01-01', 'taro@example.com');

UPDATE

UPDATE コマンドはデータベースのテーブルに格納されているレコードを、更新するときに使われます。

UPDATE Employees
SET Email = 'new_email@example.com'
WHERE EmployeeID = 1;

DELETE

DELETE コマンドはデータベースのテーブルに格納されているレコードを、削除するときに使われます。

DELETE FROM Employees
WHERE EmployeeID = 1;

DMLは他にも、複数のテーブルを結合してデータを抽出する際に使用されるJOINや、一定条件に基づいてデータを集約するためのGROUP BYがあります。

DCL_ Data Control Language

DCLは、Data Control Languageの略でデータを制御する言語です。

データ制御言語 

DCL(データ制御言語)は、データベースを制御するための言語です。具体的には、データベースに対して実施した変更の確定・取り消し、またユーザに対する操作権限の与奪を担当します。

DCLは、データベースの安全性と整合性を保つために全体を制御するためのコマンド群です。特にトランザクションの制御コマンド(COMMIT、ROLLBACK)は、データの矛盾を防ぎデータベースの信頼を維持します。

DCLに分類される命令

DCLに分類される主な命令を紹介します。

COMMIT

COMMIT コマンドはデータベースに対して実行した変更を確定するときに使われます。

BEGIN TRANSACTION;
UPDATE Accounts SET balance = balance - 100 WHERE account_id = 123;
UPDATE Accounts SET balance = balance + 100 WHERE account_id = 456;
COMMIT;

ROLLBACK

ROLLBACK コマンドはデータベースに対して実行した変更を取り消すときに使われます。

BEGIN TRANSACTION;
INSERT INTO Orders (order_id, product_name) VALUES (1, 'Example Product');
ROLLBACK;  -- この操作を取り消す

GRANT

GRANT コマンドはユーザーに操作権限を与えるときに使われます。

GRANT SELECT ON Employees TO User1;

REVOKE

REVOKE コマンドはユーザーの操作権限を奪うときに使われます。

REVOKE SELECT ON Employees FROM User1;

あとがき 

今回は、SQLの命令言語の分類DDL、DML、DCLについて、用途やコマンド例を含めて解説しました。

データベースの運営における必須命令は、データの定義、データの操作、データの制御であり、この用途に基づいてSQLが分類されているのです。

目次