DML / DDL / DCL

July 31, 2018

命令語の種類について

命令語は、操作の種類ごとにデータ操作言語 (DML)、データ定義言語 (DDL)、データ制御言語 (DCL) の3つに分けられる。
もっとも使用頻度が高いのは DML だが、それぞれの命令語がどれに分類されるかをまとめる。

データ操作言語 (DML)

Data Manipulation Language の略であり、実際のデータを出し入れするための命令となる。
追加、削除したりする対象はレコードであるため、データベースやテーブルの構造を変えたり、削除することはできない。

命令 意味
SELECT レコードを取得したり検索したりする命令
INSERT レコードを追加する命令
DELETE レコードを削除する命令
UPDATE レコードを更新する命令
mysql> SELECT * FROM City LIMIT 10;   
+----+----------------+-------------+---------------+------------+  
| ID | Name           | CountryCode | District      | Population |  
+----+----------------+-------------+---------------+------------+  
|  1 | Kabul          | AFG         | Kabol         |    1780000 |  
|  2 | Qandahar       | AFG         | Qandahar      |     237500 |  
|  3 | Herat          | AFG         | Herat         |     186800 |  
|  4 | Mazar-e-Sharif | AFG         | Balkh         |     127800 |  
|  5 | Amsterdam      | NLD         | Noord-Holland |     731200 |  
|  6 | Rotterdam      | NLD         | Zuid-Holland  |     593321 |  
|  7 | Haag           | NLD         | Zuid-Holland  |     440900 |  
|  8 | Utrecht        | NLD         | Utrecht       |     234323 |  
|  9 | Eindhoven      | NLD         | Noord-Brabant |     201843 |  
| 10 | Tilburg        | NLD         | Noord-Brabant |     193238 |  
+----+----------------+-------------+---------------+------------+  
10 rows in set (0.01 sec)  

データ定義言語 (DDL)

Data Definition Language の略であり、データベースやテーブルなどの定義に関わる言語である。
どのような形式のデータを入れるのかなど、格納できるデータの書式などを定義する。

命令 意味
CREATE データベースやテーブルなどを作成する命令
DROP データベースやテーブルなどを削除する命令
ALTER データベースやテーブルの定義を変更する命令
mysql> CREATE DATABASE hogehoge;  
Query OK, 1 row affected (0.02 sec)  

データ制御言語 (DCL)

Data Control Language の略であり、データ操作に関する制御を取り扱う言語。
データベースやテーブル、データ全体に対する権限をユーザーに与えたり、データ操作の単位 (トランザクション) で処理を確定させたり、処理した後で元に戻したりする処理を行う。

命令 意味
GRANT データベースやテーブルなどに対する権限をユーザーに与える命令
REVOKE GRANT で設定した権限を取り除く命令
COMMIT トランザクションを確定する命令
ROLLBACK トランザクションを取り消す命令
mysql> GRANT SELECT ON testdb.* TO 'hoge'@'10.1.11.105';  
Query OK, 0 rows affected (0.00 sec)  

 © 2023, Dealing with Ambiguity