はじめに
こんにちは!今回は、SQLの主な種類である「データ定義言語(DDL)」「データ制御言語(DCL)」「データ操作言語(DML)」について簡潔にまとめます。SQLはデータベースを扱う上でさまざまな側面をカバーしており、用途ごとに異なる文法が用意されています。どの言語が何を担当するのかを把握することで、より適切なSQLコードを書けるようになります。
本文
SQLの主な3種類
1. データ定義言語(DDL: Data Definition Language)
データベースの構造を定義・変更・削除するためのSQLです。例えば、以下のような操作が含まれます。
- CREATE:テーブルやビュー、インデックスなどの新規作成
- ALTER:既存のテーブル構造(列の追加、型変更など)やビューなどの変更
- DROP:テーブル、ビュー、インデックス、スキーマなどの削除
サンプルDDL
-- テーブルの新規作成
CREATE TABLE 顧客 (
顧客ID INT PRIMARY KEY,
氏名 VARCHAR(50),
登録日 DATE
);
-- テーブル構造の変更(列追加)
ALTER TABLE 顧客
ADD メールアドレス VARCHAR(100);
-- テーブル削除
DROP TABLE 顧客;
2. データ制御言語(DCL: Data Control Language)
トランザクション制御やアクセス権限の付与・剥奪など、データベースの制御を行うSQLです。代表的な命令は以下のとおりです。
- COMMIT:トランザクションの終了(変更を確定)
- ROLLBACK:トランザクションの取り消し(変更を破棄)
- GRANT:ユーザーやロールに対して操作権限を付与
- REVOKE:付与済みの操作権限を取り消し
サンプルDCL
-- トランザクション開始 (DBMSによっては明示的に必要な場合も)
START TRANSACTION;
-- いろいろなINSERTやUPDATE操作
COMMIT; -- ここで変更を確定
-- ユーザーU1に顧客テーブルへのSELECT権限を付与
GRANT SELECT ON 顧客 TO U1;
-- U1からSELECT権限を取り消し
REVOKE SELECT ON 顧客 FROM U1;
3. データ操作言語(DML: Data Manipulation Language)
実際にテーブル内のデータを操作するためのSQLです。参照・追加・更新・削除などが含まれます。
- SELECT:データの参照
- INSERT:新規データの追加
- UPDATE:既存データの更新
- DELETE:既存データの削除
サンプルDML
-- データの参照
SELECT 顧客ID, 氏名 FROM 顧客 WHERE 登録日 >= '2024-01-01';
-- データの追加
INSERT INTO 顧客 (顧客ID, 氏名, 登録日)
VALUES (1001, '山田太郎', '2024-01-10');
-- データの更新
UPDATE 顧客
SET メールアドレス = 'taro@example.com'
WHERE 顧客ID = 1001;
-- データの削除
DELETE FROM 顧客
WHERE 顧客ID = 1001;
その他の利用形態
SQLコマンドは、対話型で入力するほか、アプリケーションプログラムやスクリプト言語から呼び出すことが多いです。さらに、ストアドプロシージャやカーソルなどを使って複数の操作をまとめ、一連の処理としてデータベース側に登録することで、パフォーマンス向上やネットワーク負荷軽減、セキュリティ強化などを実現できます。
例えば、アプリケーションがデータベースに接続し、ストアドプロシージャを呼び出して、複数のINSERTやUPDATEを一括で実行するなどがあります。
まとめ
SQLは、データベースのあらゆる操作を賄うため、主に3つのカテゴリ(DDL/DCL/DML)に分けられます。
- DDL:データベース構造を作る・変える・壊す
- DCL:トランザクション管理やアクセス権限を制御
- DML:テーブル内のデータを参照・追加・更新・削除する
それぞれの特徴を理解し、使い分けることで、安全かつ効率的にデータベースを操作できるようになります。