關于概念DDL、DML、DCL、TCL詳細解釋

?????? 作為經驗豐富的開發人員,對于ddl、dml、dcl、tcl這些縮寫詞(名詞)或許不會陌生,但是作為億i個程序開發的新手可能就會有很多迷惑,接下來就給大家詳細解釋下,希望對讀者有一定的幫助。

1、數據定義語言DDL
DDL((Data Definition Language):主要的命令有CREATE、ALTER、DROP等,用于定義/修改/刪除數據對象(如表)的數據結構、數據類型、表之間的鏈接和約束等初始化工作,大多在建立表時使用,或者說,DDL語言操作的對象是數據庫中的對象而非對象所包含的數據。

DDL包含以下語句:

?1、CREATE?:?在數據庫中創建新的數據對象  ?2、ALTER?:?修改數據庫中對象的數據結構  ?3、DROP?:?刪除數據庫中的對象  ?4、DISABLE/ENABLE?TRIGGER?:?修改觸發器的狀態  ?5、UPDATE?STATISTIC?:?更新表/視圖統計信息  ?6、TRUNCATE?TABLE?:?清空表中數據  ?7、COMMENT?:?給數據對象添加注釋  ?8、RENAME?:?更改數據對象名稱

注意:
?當執行DDL語句時,在每一條語句前后,數據庫(oracle/Mysql)都將提交當前的事務。如果用戶使用insert命令將記錄插入到數據庫后,執行了一條DDL語句(如create table),此時來自insert命令的數據將被提交到數據庫。當DDL語句執行完成時,DDL語句會被自動提交,不能回滾。

2、數據操作語言DML
DML(Data Manipulation Language):用于添加/刪除/修改/查詢/合并數據庫中數據,比如SELECT、UPDATE、INSERT、DELETE、MERGE操作,是用來對數據庫里的表數據進行操作的語言。

DML包含以下語句:

?1、INSERT?:將數據插入到表或視圖  ?2、DELETE?:從表或視圖刪除數據  ?3、SELECT?:從表或視圖中獲取數據  ?4、UPDATE?:更新表或視圖中的數據  ?5、MERGE?:?對數據進行合并操作(插入/更新/刪除)

注意:
?當執行DML命令如果沒有提交,將不會被其他會話看到。除非在DML命令之后執行了DDL命令或DCL命令,或用戶退出會話,或終止實例,此時系統會自動發出commit命令,使未提交的DML命令提交。

3、數據控制語言DCL
DCL(Data Control Language):是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)。

DCL包含以下語句:

?1、GRANT?:?賦予用戶某種控制權限  ?2、REVOKE?:取消用戶某種控制權限

數據控制語言只要是對用戶進行創建、刪除、密碼修改以及給用戶賦予權限和刪除權限扽一系列操作。

4、事務控制語言(TCL)
TCL(Transaction Control Language):用來對事務進行管理。

TCL包含以下語句:

??1、COMMIT?:?保存已完成事務動作結果  ??2、SAVEPOINT?:?保存事務相關數據和狀態用以可能的回滾操作  ??3、ROLLBACK?:?恢復事務相關數據至上一次COMMIT操作之后  ??4、SET?TRANSACTION?:?設置事務選項

由于DML語句對表數據進行操作的時候都會加上行級鎖,確認完成后,必須加上事物處理結束的命令COMMIT才能正式生效,否則改變不一定寫入數據庫里。如果想撤回這些操作, 可以用命令 ROLLBACK 復原。
在運行INSERT,DELETE和UPDATE語句前最好估算一下可能操作的記錄范圍,應該把它限定在較小范圍內,例如一萬條記錄,否則ORACLE處理這個事物用到很大的回退段。程序響應慢甚至失去響應。如果記錄數上十萬以上這些操作。可以把這些SQL語句分段分次完成。其間加上COMMIT確認事物處理。

? 根據語句操作目標的不同,還是很好區分這四種類型:DDL-數據對象; DML-數據; DCL-權限; TCL-事務。
? 唯一需要注意的是TRUNCATE,盡管從功能上看相當于DELETE表中所有數據,但由于它所操作的對象是table這個級別而非row(由于某種原因不能立即刪除表數據時,TRUNCATE會鎖定整張表,而DELETE鎖定的則是row),所以歸在DDL中。????

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享