DCL全称为Data Control Language,是一种数据控制语言,主要用于控制数据库的访问,包括如下SQL语句:
GRANT:赋予用户一些权限,包括系统权限和对象权限
其中系统权限及其用法如下:GRANT CREATE SESSION TO TEST;
- CREATE SESSION 创建用户会话
- CREATE TABLE 创建表(当用户拥有该权限时,还需要分配相应的表空间才可以进行操作表:
ALTER USER TEST QUOTA UNLIMITED ON users;) - CREATE SEQUENCE 创建序列
- CREATE VIEW 创建视图
- CREATE PROCEDURE 创建过程
其中对象权限及其用法如下:
对象权限 | 表 | 视图 | 序列 | 过程 |
---|---|---|---|---|
修改 | ✔ | 视图 | ✔ | 过程 |
删除 | ✔ | ✔ | ✔ | |
执行 | ✔ | |||
索引 | ✔ | |||
插入 | ✔ | ✔ | ||
关联 | ✔ | ✔ | ||
选择 | ✔ | ✔ | ✔ | |
更新 | ✔ | ✔ |
例:分配表STUDENTS的查询权限给TEST用户,如果给所有用户用PUBLIC:
GRANT SELECT ON STUDENTS TO TEST;
WITH GRANT OPTION 使用户同样具有分配权限的权利:
GRANT SELECT ON STUDENTS TO TEST WITH GRANT OPTION;
REVOKE:回收访问权限,即对用户的权限进行限制
REVOKE SELECT ON STUDENTS FROM TEST;
COMMIT:提交当前的数据
当修改的数据没有问题的时候,可以进行COMMIT提交数据,注意:一旦提交就不可以进行回滚了
ROLLBACK:回滚到原来的数据
当我们修改数据的时候,突然发现数据不是自己所需要的数据时,可以进行ROLLBACK回滚到原来的数据
SAVEPOINT:在当前事务中创建保存点
- 使用 SAVEPOINT 语句在当前事务中创建保存点;
- 使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
LOCK:对数据库的特定部分进行锁定
当A用户修改一张表并且没有提交的时候,数据库这时会给这张表锁定,不会给B用户进行修改操作,只能进行查询提交之前的数据,直到这个A用户成功的把这个表的数据进行提交或者回滚到原来的数据时,把锁释放,B用户才可以操作涉及到数据;