SQLのDML、DDL、DCLって何?
同じSQLでも種類があるみたい
1.DML(Data Manipuration Language)
データ操作言語
SELECT,INSERT,UPDATE,DELETE,MERGE等々
これらのようなSQLをDMLと呼ぶんだってさ。
データを操作する言語ってぐらいだから、なんとなくわかるような
データ自体を何かしらするのがDMLってことにしとこう
2.DDL(Data Definition Language)
データ定義言語
CREATE,ALTER,DROP,RENAME,TRUNCATE等々
データを定義する言語ってぐらいだからなんとなくわかるような?
テータの内容を直接どうとかじゃない系だね。
テーブルとかビューとか作ったり消したりデータに直接関係ない感じだね。
ただ、条件のないDELETEとTRUNCATEって動作同じじゃない?って思うよね
指定したテーブルの内容が全部消えるっていう結果は同じ。
なぜそれぞれがDMLとDDLになっているのかは、おそらく内部の処理とか考え方が全然違うからなんでしょうね。
DDLの命令はロールバックとかできないみたいだからTRUNCATEで消すとデータはもう戻ってこないらしいよ。
でもDELETEより処理が早いって。
なんだかTRUNCATE怖いね。
ついでに僕がはまったんだけど、TRUNCATEはDDLだから文の最後に「;」は不要なんだってさ。
「TRUNCATE テーブル名」だけでいいって
「DELETE FROM テーブル名;」みたいに「;」はいらない
それだけ!
3.DCL(Data Control Language)
データ制御言語
GRANT、REVOKE等々
たぶん権限を渡したりとかそういう命令だよね。
使ったことないからわからん。
データを制御する言語?まったくちんぷんかんぷんやね。
データベースをコントロール、つまり権限とかってことか。
覚えにくい。
3.トランザクション制御
なんでこれだけ日本語なんでしょう。
COMMIT,ROLLBACK,SAVEPOINT等々
これはそのままだよね。トランザクション制御する命令だしね。
ってもトランザクション自体の概念がなかなか奥が深そうだね。
ROLLBACKはあまり使わないけど、COMMITは結構使うよね。