PR

DMLとDDLの違いとは?SQLでの役割と使い分けを解説

DMLとDDLの違い データサイエンティスト検定
スポンサーリンク

はじめに

SQLを学び始めると、SELECTUPDATEのようにデータを扱う命令と、CREATEALTERのようにテーブルの形を変える命令が出てきます。どちらもSQLで記述しますが、操作する対象と目的は同じではありません。

DML(Data Manipulation Language)は、主にテーブルに保存されているデータを取得・追加・更新・削除するための命令です。一方、DDL(Data Definition Language)は、テーブルなどのデータベース構造を作成・変更・削除するための命令です。この記事では、DMLとDDLの役割の違いと、どちらを使う場面なのかを具体例で整理します。

SQLにはDML・DDL以外の分類もありますが、本記事では「保存されているデータを扱う命令」と「データを入れる構造を定義する命令」の違いに範囲を絞ります。

DMLとDDLの違い

DMLとDDLの最も大きな違いは、操作する対象です。DMLはテーブル内のデータを扱い、DDLはテーブルなどの構造を扱います。

項目DMLDDL
正式名称Data Manipulation LanguageData Definition Language
主な役割データの取得・追加・更新・削除データベース構造の作成・変更・削除
主な対象テーブル内の行や値テーブル、列、インデックスなどの構造
代表的な命令SELECTINSERTUPDATEDELETECREATEALTERDROP
顧客データを追加する顧客テーブルに列を追加する

覚え方としては、DMLは「中に入っているデータを扱う」、DDLは「データを入れる器を扱う」と整理すると違いをつかみやすくなります。

なお、資料によってはSELECTをDQL(Data Query Language)としてDMLから分ける場合があります。本記事では、データを扱うSQL命令という観点からSELECTをDMLに含める整理で説明します。

DMLとは

DMLは、すでに存在するテーブルに対してデータを取得したり、行を追加・更新・削除したりするために使います。日常的なデータ検索や業務データの更新では、DMLを使う場面が多くなります。

代表的な命令は次の4つです。

  • SELECT:条件に合うデータを取得する
  • INSERT:新しいデータを追加する
  • UPDATE:既存のデータを更新する
  • DELETE:既存のデータを削除する

例えば、顧客テーブルから特定の顧客を取得する場合はSELECTを使います。

SELECT name
FROM customers
WHERE id = 1;

顧客名を変更する場合はUPDATEを使います。

UPDATE customers
SET name = '山田 太郎'
WHERE id = 1;

どちらもテーブルの列構成そのものは変えず、保存されているデータを対象にしています。

DDLとは

DDLは、データを保存するための構造を定義するときに使います。新しいテーブルを作る、既存テーブルへ列を追加する、不要なテーブルを削除するといった操作が代表例です。

主な命令は次の3つです。

  • CREATE:テーブルなどを新しく作成する
  • ALTER:既存の構造を変更する
  • DROP:テーブルなどの構造を削除する

例えば、新しい顧客テーブルを作成する場合はCREATE TABLEを使います。

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

既存の顧客テーブルへメールアドレス列を追加する場合はALTER TABLEを使います。

ALTER TABLE customers
ADD COLUMN email VARCHAR(255);

DDLは1件のデータだけではなく、データを保存する構造そのものへ影響します。そのため、既存システムで実行するときは、変更対象と影響範囲を確認してから操作することが重要です。

DMLとDDLを具体例で使い分ける

DMLとDDLのどちらを使うか迷ったときは、「変更したいのはデータか、構造か」を確認します。

顧客管理を例にすると、次のように分けられます。

  • 顧客を検索する → SELECT:DML
  • 新しい顧客を登録する → INSERT:DML
  • 顧客の電話番号を変更する → UPDATE:DML
  • 顧客テーブルにメールアドレス列を追加する → ALTER TABLE:DDL
  • 新しい履歴テーブルを作る → CREATE TABLE:DDL
  • 不要になったテーブル自体を削除する → DROP TABLE:DDL

例えば「顧客のメールアドレスを変更したい」のであれば、既存行の値を変えるためDMLです。一方、「これまでメールアドレスを保存する列がなかったので追加したい」のであれば、テーブル構造を変えるためDDLです。

このように、同じ顧客データを扱う作業でも、既存データの中身を操作するのか、保存する構造を変更するのかによって使用するSQLの種類が変わります。

DMLとDDLを混同しやすい例

特に混同しやすいのが、DELETEDROPです。どちらも「削除する」命令ですが、削除対象が異なります。

DELETEはDMLで、テーブルを残したまま行を削除します。条件を指定すれば、特定の行だけを削除できます。

DELETE FROM customers
WHERE id = 1;

一方、DROP TABLEはDDLで、テーブルそのものを削除します。

DROP TABLE customers;

「データを消す」のか「データを入れる構造そのものを消す」のかを区別すると、DMLとDDLの違いを判断しやすくなります。

まとめ

DMLとDDLは、どちらもSQLの命令ですが役割が異なります。DMLはテーブル内のデータを扱い、DDLはデータを保存する構造を扱います。

SELECTINSERTUPDATEDELETEは、データの取得や変更に使う代表的なDMLです。CREATEALTERDROPは、テーブルなどの構造を作成・変更・削除する代表的なDDLです。

迷ったときは、「操作したいのは保存されているデータか、それともテーブルなどの構造か」を確認してください。この違いを押さえることで、SQLの各命令が何を対象にしているのかを整理しやすくなります。

関連記事


タイトルとURLをコピーしました