DDLとは(全体像)
DDLとは、データベースの「構造」を定義するためのSQLのことだ(Data Definition Languageの略)。
データを出し入れするDML(SELECT・INSERTなど)が「箱の中身」をあつかうのに対し、DDLは「箱そのもの(表の構造)」をあつかうと考えると分かりやすい。主要な命令は3つ。
- CREATE … 表を作る(CREATE TABLEなど)
- ALTER … 構造を変える(列の追加や型の変更)
- DROP … 表を削除する(表ごと消す。元に戻らない)
ここで一番のポイント。この3つは、それぞれ役割が違う。「作る・変える・消すは、ぜんぶ同じ命令だ」と思い込むと誤りで、作るならCREATE、変えるならALTER、消すならDROPと分かれている。
詳しく:DDLは自動で確定される
ここが心臓部。ポイントを表で押さえよう。
DDLのポイント
| 項目 | やさしい意味 |
|---|---|
| CREATE | 表を作る(入れ物を用意する) |
| ALTER | 構造を変える(列の追加・型の変更) |
| DROP | 表を削除する(元に戻らない) |
| 自動COMMIT | DDLは自動で確定し、取り消せない |
データを書き換えるDML(UPDATEなど)は、取り消し(ROLLBACK)ができる。だが、DDLは自動で確定(COMMIT)される。
ここで一番のポイント。DDLは、実行すると自動で確定し、取り消し(ROLLBACK)ができない。「DDLも、あとから取り消せる」と思い込むと誤りで、とくにDROPで表を消すと、元には戻らない(戻すにはバックアップが必要)。だから、本番のデータベースでは慎重に実行する。
わかりやすく言い換えると
身近なたとえで整理しよう。
DDLは、「家(表)そのものを、建てる・改築する・取り壊す工事」のイメージ。中の家具(データ)を動かすDMLとは、あつかう対象が違う。
3命令は、「CREATE=建てる・ALTER=改築する・DROP=取り壊す」こと。要するに、入れ物に対する工事だ。
自動で確定するというのは、「工事はその場で確定して、なかったことにはできない」こと。つまり、取り壊した家(DROPした表)は、元に戻らない。
試験のツボ
🔴 一番出る:3命令の役割
①CREATE=表を作る、ALTER=構造を変える、DROP=表を削除
②DDLは、構造(入れ物)をあつかうSQL
🔴 次に出る:自動で確定される
①DDLは自動で確定(COMMIT)され、取り消し(ROLLBACK)ができない
②DROPで消した表は元に戻らない(バックアップが必要)
🟡 押さえると安定:DMLとの違い
①DMLはデータ(中身)をあつかい、取り消せる
②DDLは構造(入れ物)をあつかい、自動で確定する
よくある間違い
①「作る・変える・消すは、ぜんぶ同じ命令だ」→ ✗ CREATEは作る、ALTERは変える、DROPは消す。命令が分かれている。
②「DDLも、あとから取り消せる(ROLLBACKできる)」→ ✗ DDLは自動で確定され、取り消しができない。DROPで消した表は戻らない。
③「DDLは、表の中のデータを書き換える命令だ」→ ✗ DDLは構造(入れ物)をあつかう。データの書き換えはDMLの役割。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(DDLの正体)
DDLに関する次の記述のうち、最も適切なものはどれか。
- 表などの、データベースの構造を定義するためのSQLのことだ
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 1 です。
DDLは、表などのデータベースの構造を定義するSQLなのです。中身ではなく、入れ物(表)をあつかうなります。
選択肢2は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 構造を定義するSQLで正しい |
| 2 | ✗ | 給与計算のしくみではない |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(3命令の役割)
CREATE・ALTER・DROPに関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、使われるものだとされている
- それぞれ、表の作成・構造変更・削除を行う命令のことである
- 取引先へ請求書を郵送するときだけ、使われるものだとされる
- すべて、表の中のデータを取り出すための命令だとされている
解答は 2 です。
CREATEは表の作成、ALTERは構造の変更、DROPは表の削除を行う、DDLの命令なのです。入れ物をあつかうなります。
選択肢1の給与、選択肢3の請求書、選択肢4の「データの取り出し」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✓ | 作成・変更・削除の命令で正しい |
| 3 | ✗ | 請求書のときだけではない |
| 4 | ✗ | データの取り出しはSELECTの役割 |
オリジナル問題3(DDLの特性)
DDLの特性に関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、確定するとされているものだ
- 取引先への請求書の枚数しだいで、確定するとされているのだ
- 自動で確定され、取り消し(ROLLBACK)ができないのだ
- DDLは、あとから自由に取り消せるものだとされているのである
解答は 3 です。
DDLは、実行すると自動で確定(COMMIT)され、取り消し(ROLLBACK)ができないのです。DROPで消した表は元に戻らないなります。
選択肢1の給与、選択肢2の請求書、選択肢4の「自由に取り消せる」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算で確定するのではない |
| 2 | ✗ | 請求書の枚数で確定するのではない |
| 3 | ✓ | 自動で確定し取り消せないで正しい |
| 4 | ✗ | 自動で確定し取り消せない |
まとめ
押さえどころ
- 🔴 3命令 = CREATE(表を作る)・ALTER(構造を変える)・DROP(表を削除する)。DDLは構造(入れ物)をあつかう。
- 🔴 自動で確定 = DDLは実行すると自動で確定(COMMIT)され、取り消し(ROLLBACK)ができない。DROPで消した表は元に戻らない。
- 🟡 DMLとの違い = DMLはデータ(中身)をあつかい取り消せる、DDLは構造(入れ物)をあつかい自動で確定する。
次に学ぶ
- SQL基本(DDL/DML/DCL/TCL) ── SQLの4分類。DDLは、その構造を定義する分類。
- INSERT/UPDATE/DELETE ── データを書き換えるDML。DDLとちがい、取り消し(ROLLBACK)ができる。
執筆: SikakuQuest編集部