# DCL 資料控制語言

參考資料:([https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%8E%A7%E5%88%B6%E8%AA%9E%E8%A8%80](https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%8E%A7%E5%88%B6%E8%AA%9E%E8%A8%80))

資料控制語言 (Data Control Language) 在SQL語言中，是一種可對資料存取權進行控制的指令，它可以控制特定使用者帳戶對資料表、檢視表、預存程式、使用者自訂函式等資料庫物件的控制權。由 GRANT 和 REVOKE 兩個指令組成。

## 語法結構

DCL 以控制使用者的存取權限為主，因此其指令作法並不複雜，可利用 DCL 控制的權限有：

CONNECT SELECT INSERT UPDATE DELETE EXECUTE USAGE REFERENCES

根據不同的DBMS以及不同的安全性實體，其支援的權限控制也有所不同。

GRANT 的語法結構為：

```
GRANT [權限] ON [要授予權限的資料庫物件] TO [使用者帳戶名稱] WITH [授權選項]
```

權限： 參考資料:([http://fatlinuxguy.blogspot.com/2012/01/oracle.html](http://fatlinuxguy.blogspot.com/2012/01/oracle.html))

規則:

```
GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...] [WITH ADMIN OPTION];

REVOKE {privilege | role} FROM {user_name | role_name | PUBLIC}
```

範例:

```
GRANT SELECT ON TableName TO UserName;
REVOKE SELECT ON TableName FROM UserName;
```

DENY 的語法結構為：

```
DENY [權限] ON [要授予權限的資料庫物件] TO [使用者帳戶名稱]
```
