MySQL基礎系列之 DDL、DML和DCL的區別與理解
此文章主要介紹SQL資料庫的DDL、DML和DCL的區別與理解
一、DDL(data definition language) 資料定義語言,用於操作物件和物件的屬性
DDL用於操作物件和物件的屬性,這種物件包括資料庫本身,以及資料庫物件,像:表、檢視等等,DDL對這些物件和屬性的管理和定義具體表現在Create、Drop和Alter上。特別注意:DDL操作的“物件”的概念,”物件“包括物件及物件的屬性,而且物件最小也比記錄大個層次。以表舉例:Create建立資料表,Alter可以更改該表的欄位,Drop可以刪除這個表,從這裡我們可以看到,DDL所站的高度,他不會對具體的資料進行操作。操作語句如下:
1.CREATE - 建立
2.ALTER - 修改
3.DROP - 刪除
4.TRUNCATE - 移除
TRUNCATE TABLE [Table Name] 速度快,而且效率高,TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其資料,請使用 DROP TABLE 語句。
對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能啟用觸發器。
TRUNCATE TABLE 不能用於參與了索引檢視的表。
5.COMMENT - 註釋
6.RENAME - 重新命名
二、DML(Data Manipulation Language)資料操作語言,SQL中處理資料等操作統稱為資料操縱語言
用於操作資料庫物件中包含的資料,也就是說操作的單位是記錄。操作語句如下:
1.SELECT - 查詢
2.INSERT - 新增
3.UPDATE - 更新
4.DELETE - 刪除
5.CALL - 呼叫
6.EXPLAIN - 解釋
Explain可以用來迅速方便地查出對於給定SQL語句中的查詢資料是如何得到的即搜尋路徑,從而使我們選擇最優的查詢方式達到最大的優化效果。
7.LOCK TABLE - 鎖,用於控制併發
三、DCL(Data Control Language)資料控制語言,用來授予或回收訪問資料庫的某種特權,並控制資料庫操縱事務發生的時間及效果,對資料庫實行監視等
DCL操作是資料庫物件的許可權,這些操作的確定使資料更加的安全。操作語句如下:
1.GRANT - 授權 允許物件的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權。
2.REVOKE - 收回已經授予的許可權
3.COMMIT - 提交
4.SAVEPOINT - 儲存點
5.ROLLBACK - 回滾
6.SET TRANSACTION - 設定當前事務的特性,它對後面的事務沒有影響.
最後附上一張圖,便於理解