今回は、データベースに対する命令の種類によって分類される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が分類されているのです。