最終更新日:2026年7月14日
ds sql database
まず結論
DDLとDMLの違いは、操作する対象で判断します。
| 分類 | 何を操作する? | 代表的なSQL |
|---|---|---|
| DDL | テーブルなどの構造 | CREATE、ALTER、DROP |
| DML | テーブル内のデータ | SELECT、INSERT、UPDATE、DELETE |
DS検定では、次のように切り分けると判断しやすいです。
入れ物を作る・変える → DDL
中のデータを扱う → DML
直感的な説明
データベースを、Excelの表に置き換えて考えてみます。
最初に必要なのは、表の入れ物を作ることです。
- 表を新しく作る
- 列を追加する
- 表そのものを削除する
このような表の構造を扱う操作がDDLです。
入れ物を作った後は、中のデータを扱います。
- データを検索する
- 行を追加する
- 値を書き換える
- 行を削除する
このような表の中身を扱う操作がDMLです。
定義・仕組み
SQL(Structured Query Language)は、リレーショナルデータベースを操作するための言語です。
SQLは役割によっていくつかに分類され、その代表がDDLとDMLです。
DDL(Data Definition Language)
DDLは、データベースやテーブルの構造を定義するSQLです。
| SQL | 主な役割 |
|---|---|
CREATE |
テーブルやデータベースを作成する |
ALTER |
テーブル構造を変更する |
DROP |
テーブルやデータベースを削除する |
例として、社員テーブルを作るSQLを見てみます。
CREATE TABLE employees (
id INT,
name VARCHAR(50)
);
これは、employeesというテーブルの構造を作るため、DDLです。
DML(Data Manipulation Language)
DMLは、テーブルに格納されたデータを操作するSQLです。
| SQL | 主な役割 |
|---|---|
SELECT |
データを検索・取得する |
INSERT |
データを追加する |
UPDATE |
データを更新する |
DELETE |
データを削除する |
例として、社員テーブルからデータを取得するSQLを見てみます。
SELECT *
FROM employees;
これは、テーブルの構造ではなく、中にあるデータを取得するため、DMLとして扱います。
一覧で比較
| 操作 | SQL | 分類 |
|---|---|---|
| テーブルを作る | CREATE |
DDL |
| 列を追加する | ALTER |
DDL |
| テーブルを削除する | DROP |
DDL |
| データを検索する | SELECT |
DML |
| データを追加する | INSERT |
DML |
| データを書き換える | UPDATE |
DML |
| データを削除する | DELETE |
DML |
どんな場面で使う?
システムを作るとき
開発の初期には、テーブルや列の構造を決める必要があります。
このときは、次のようなDDLを使います。
CREATE TABLE sales (
sale_id INT,
amount INT
);
データを分析するとき
データ分析では、テーブル内のデータを取得・集計するため、DMLをよく使います。
SELECT customer_id, SUM(amount)
FROM sales
GROUP BY customer_id;
WHERE、JOIN、GROUP BYなどを含んでいても、中心となる操作がSELECTであれば、データを取得するDMLとして考えます。
よくある誤解・混同
誤解1:SELECTは構造を指定するのでDDLである
SELECTでは取得する列を指定しますが、テーブル構造そのものを変更しているわけではありません。
既存データを検索・取得する操作なので、DS検定ではDMLとして判断します。
誤解2:DELETEとDROPは同じ削除操作である
どちらも「削除」ですが、削除する対象が違います。
| SQL | 削除するもの | 分類 |
|---|---|---|
DELETE |
テーブル内の行 | DML |
DROP |
テーブルそのもの | DDL |
迷ったら、中身を消すのか、入れ物ごと消すのかを確認します。
誤解3:JOINやWHEREはDDLである
JOINやWHEREは、データを絞り込んだり結合したりするために使います。
SELECT *
FROM sales
JOIN customers
ON sales.customer_id = customers.customer_id
WHERE sales.amount >= 10000;
このSQLはデータを取得しているため、DMLの範囲です。
誤解4:SELECTは必ずDMLとだけ呼ばれる
分類体系によっては、SELECTをDQL(Data Query Language)として分ける場合もあります。
ただし、DS検定の基本的な切り分けでは、SELECTをデータ操作側として扱う問題が多いため、問題文や選択肢の分類方法を確認することが大切です。
確認問題(DS検定対策)
次のうち、DDLに分類されるSQLはどれか。
- ア.
SELECT - イ.
INSERT - ウ.
UPDATE - エ.
ALTER
▶ クリックして答えと解説を見る(ここを開く)
正解:エ
SELECT:データを取得するDMLINSERT:データを追加するDMLUPDATE:データを更新するDMLALTER:テーブル構造を変更するDDL
判断ポイントは、テーブルの構造を変える操作かどうかです。
まとめ(試験直前用)
- DDLは、データベースやテーブルの構造を定義するSQL
- DMLは、テーブル内のデータを操作するSQL
CREATE、ALTER、DROPはDDLSELECT、INSERT、UPDATE、DELETEはDMLとして整理するDELETEは行を削除し、DROPはテーブルそのものを削除する- 迷ったら、入れ物か、中身かで切り分ける
🔗 関連記事
- ACID特性とは?トランザクションの4つの性質をわかりやすく解説【基本情報技術者試験】
- コミットとロールバックとは?トランザクションを確定・取消する基本【基本情報技術者試験】
- データキューブとは?OLAP分析の基本をわかりやすく整理【DS検定】
- DFDとは?データの流れと処理を表す図【SG試験】
- データマートとは?データウェアハウスとの違いを整理【SG試験】