データベースを扱うにはSQLが必要です。SQLはデータベースに対して命令を行い、データベースを操作・定義・制御を行います。一般的には大きく3つに分類されます。
- データ操作言語(DML…Data Manipulation Language)
- データ定義言語(DDL…Data Definition Language)←本記事
- データ制御言語(DCL…Data Control Language)
今回はデータ定義言語(DDL)について取り上げます。
DDL(データ定義言語)とは?
DDL(データ定義言語)とは、Data Definition Languageの略で、データベースの定義に対して命令する言語です。DML(データ操作言語)はデータ(レコード)に対しての命令でしたが、DDLはテーブルやビューなどに、オブジェクトと言われるものに対して命令します。
DMLは主に、以下の機能を指します。
- CREATE:作成(テーブル、ビュー、インデックス、ストアドプロシージャ)
- DROP:削除(テーブル、ビュー、インデックス、ストアドプロシージャ)
- ALTER:変更(行追加・行削除など定義の変更)
- TRUNCATE:テーブルデータの削除(ロールバック不可な削除)
上記いずれもデータベースのオブジェクトの定義に関するSQLです。テーブルやビューの定義を見ると、CREATEは見ることが出来ますので、上記の中ではCREATEが一番ポピュラーです。TRUNCATEも見かけることがあると思います。テーブルの中身を全て消してもいい(切り捨てる)場合ですね。
例えば、CREATE TABLEというのはテーブルを作成するSQLですが、CREATE TABLE文のSQLを見てみると、テーブル名やカラム名、カラム型、カラム長など、作成するテーブルの様々な定義を行っています。DROP TABLEはテーブルを削除するSQLで、これはテーブルを定義ごとマルっと消し去ります。
DMLとDDLの「削除」の違い
DMLも削除(DELETE)というものが出てきましたので、DDLの削除との差異をお話します。DDLのDROPやTRUNCATEと、DMLのDELETEの差異は、端的に言うと以下です。
- DDLの削除:テーブルに対しての削除
- DMLの削除:データに対しての削除
DDLの削除はテーブル全体に対して削除を実行します。DROPであれば、テーブルを丸ごと消し去ります。TRUNCATEはテーブル自体は残りますが、テーブルのデータ全てを削除します(条件による指定不可)。
対して、DMLの削除(DELETE)は、条件を指定すれば、条件に合うレコードのみを削除します。もちろん、条件を指定しなければ、テーブルのデータは全て削除されます。
尚、DDLの削除(DROP、TRUNCATE)は、実行すると後戻りが出来ません。DMLの削除(DELETE)は実行してもコミットするまでデータが完全には失われないという猶予があります。
「DDL」という単語を覚える必要は?
DMLの時にも述べましたが、DDLという単語を覚える必要があるかと言われたら、別に覚える必要はありません。覚えておいて損は無いです。「DDLは、テーブルやビューに対して操作するんだな」、という認識で良いでしょう。資格試験の時に正しく回答出来ればOKなくらいです。
関連記事
.