SQLの分類(DDL、DML、DCL)の違い
投稿日: 2018/11/09
MySQL
※MySQLカテゴリの記事になっていますが、DB全般的なお話です。
SQLには3つの分類があり、DDL、DML、DCLの違いについて説明します。
DDLとは
DDLは「Data Definition Language」の略称です。
日本語で言うと「データ定義言語」。
Definitionという英語には、「定義」という意味があります。
データ定義言語とは、データの構造を定義する言語のことです。
要はCREATE、ALTER、DROPなどがそれに当たります。
DMLとは
DMLは「Data Manipulation Language」の略称です。
日本語で言うと「データ操作言語」。
Manipulationという英語には、「操作」という意味があります。
データ操作言語とは、データの取得や追加・更新・削除などをする言語のことです。
要はSELECT、INSERT、UPDATE、DELETE、TRUNCATEなどがそれに当たります。
DCLとは
DCLは「Data Control Language」の略称です。
日本語で言うと「データ制御言語」。
Controlという英語には、「制御」という意味があります。
データ制御言語とは、トランザクションを制御する言語のことです。
要はBEGIN、COMMIT、ROLLBACKなどがそれに当たります。
現場でよく使うのは......
現場というよりは、アプリケーションエンジニア界隈(?)ないし私個人的な話かもしれませんが......。
- DDL ... よく使います。
- DML ... 詳しい人が使ってます。
- DCL ... 私の周りには使っている人はいません。
DDLはよく使います
システムエンジニアはテーブル設計をしますので、DDLも作成することが多いです。なので自然と覚えている人が多い印象ですね。
プログラマーはDDLを使って環境構築をしますのでつられて覚えるのかな? と思ってます。
DMLは、詳しい人が使っています
DMLと言うよりは「INSERT文」や「UPDATE文」などと聞く方が多いですね。
個人的には使っているとカッコよく見えます!
※私は使ってないですが......
DCLは、ちょっと聞いたことがないですね
DBAの方々などは使っているのでしょうか?
最近だとフレームワークが優秀になってきたこともあり、アプリケーションエンジニアはあまり意識をすることもなくなってきましたね。
先のDMLと同じく、「COMMIT」や「ROLLBACK」と直接言うことが多いですね。
私の場合...
癖でなんでもかんでも「SQL」って言ってしまいます(笑)
ちゃんとした用語を使うとカッコいいし正確に伝わりますし、ぜひ使っていきたいですね。