SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。
在一些特定情况下,如:金融、安全、税务等等部门,有一些数据库为了安全需要,需要禁止执行DDL语句。在Oracle数据库下,禁止DDL语句需要执行下面的SQL语句:
它可以把语句权限或者对象权限授予给其他用户和角色。语法:GRANT {ALL | statement[,...n]} TO security_account [ ,...n ]
例如:
grant select, insert, update, delete, references, alter, index on username.table_name to username; --username代表该表的所有者
grant create table, create view, create sequence to username;
授予 对象权限的语法形式为:
GRANT{ ALL [ PRIVILEGES ] | permission [ ,...n ] }{[ ( column [ ,...n ] ) ]
ON { table | view }|
ON { table | view } [ ( column [ ,...n ] ) ]|
ON {stored_procedure | extended_procedure }|
ON { user_defined_function } }
TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role} ]
用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。否定语句权限的语法形式为:
DENY{ ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] )]
ON { table | view } |
ON { table | view } [ ( column [ ,...n ] ) ] |
ON { stored_procedure | extended_procedure } |
ON {user_defined_function } }
TO security_account [ ,...n ] [ CASCADE ]
REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。
revoke select, insert, update, delete, references, alter, index on username.table_name to username;
收回 对象权限的语法形式为:
REVOKE[ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [( column [ ,...n ] ) ]
ON { table | view } |
ON { table | view } [ (column [ ,...n ] ) ] |
ON { stored_procedure | extended_procedure } |
ON { user_defined_function } } {
TO | FROM } security_account [ ,...n ][ CASCADE ] [ AS { group | role } ]
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
“保存点”就像是一个标记,标记事务中的某个点以便将来可以回滚,用来将很长的事务划分为若干个较小的事务,它与回滚一起使用以回滚当前事务部分;
用于事务出错时回滚数据;
用于结束事务,对数据库做永久性修改,擦除事务中的所有保存点。COMMIT语句表示所有SQL语句均已执行完毕,事务成功结束,数据库处于一致状态;
事务是一个或多个SQL语句序列,在程序更新数据库时事务至关重要,因为必须维护数据的完整性;