【参加讨论】##2 (四) 数据控制
由于数据库管理系统是一个多用户系统,为了控制用户对数据的存取权利,保持数据的 共享及完全性,sql语言提供了一系列的数据控制功能。其中,主要包括安全性控制、完整性控制、事务控制和并发控制。
1.安全性控制
数据的安全性是指保护数据库,以防非法使用造成数据泄露和破坏。保证数据安全性的主要方法是通过对数据库存取权力的控制来防止非法使用数据库中的数据。即限定不同用户操作不同的数据对象的权限。存取权控制包括权力的授与、检查和撤消。权力授与和撤消命令由数据库管理员或特定应用人员使用。系统在对数据库操作前,先核实相应用户是否有权在相应数据上进行所
要求的操作。
(1)权力授与:权力授与有数据库管理员专用的授权和用户可用的授权两种形式。数据库管理员专用授权命令格式如下:
|connect | grant|resource|to 用户名[identifed by 口令]|dba | 其中,connect表示数据库管理员允许指定的用户具有连接到数据库的权力,这种授权是针对新用户;resource表示允许用户建立自己的新关系模式,用户获得connect权力后,必须获得resource权力才能创建自己的新表;dba表示数据库管理员将自己的特权授与指定的用户。若要同时授与某用户上述三种授权中的多种权力,则必须通过三个相应的grant命令指定。
另外,具有connect和resource授权的用户可以建立自己的表,并在自己建立的表和视图上具有查询、插入、修改和删除的权力。但通常不能使用其他用户的关系,除非能获得其他用户转授给他的相应权力。
例:若允许用户sse连接到数据库并可以建立他自己的关系,则可通过如下命令授与权力:
grant connect to sse inentified by bd1928
grant resource to sse
用户可用的授权是指用户将自己拥有的部分或全部权力转授给其他用户的命令形式,其命令格式如下:
|select |
|insert |
|delete |
grant|update(列名1[,列名2]…)|on|表名 |to|用户名|[with grant option]
|alter | |视图名| |public|
|ndex |
|all |
若对某一用户同时授与多种操作权力,则操作命令符号可用“,”相隔。public 表示将权力授与数据库的所有用户,使用时要注意:
任选项with grant option表示接到授权的用户,具有将其所得到的同时权力再转授给其他用户权力。
例:如果将表student的查询权授与所有用户,可使用以下命令:
grant select on student to public
例:若将表subject的插入及修改权力授与用户sse并使得他具有将这种权力转授他人的
权力,则可使用以下命令:
grant insert,update(su_subject) on subject to sse with grant option 这里,update后面跟su_subject是指出其所能修改的列。
(2)权力回收:权力回收是指回收指定用户原已授与的某些权力。与权力授与命令相匹配,权力回收也有数据库管理员专用和用户可用的两种形式。
dba专用的权力回收命令格式为:
|connect |
revoke|resource|from用户名
|dba |
用户可用的权力回收命令格式为:
|select |
|insert |
|delete |
revoke|update(列名1[,列名2]…) |on|表名 |from |用户名|
|alter | |视图名| |public|
|index |
|all |
例:回收用户sse的dba权力:
revoke dba from sse
2.完整性控制
数据库的完整性是指数据的正确性和相容性,这是数据库理论中的重要概念。完整性控 制的主要目的是防止语义上不正确的数据进入数据库。关系系统中的完整性约束条件包括实体完整性、参照完整性和用户定义完整性。而完整性约束条件的定义主要是通过create table语句中的[check]子句来完成。另外,还有一些辅助命令可以进行数据完整性保护。如unique和not null,前者用于防止重复值进入数据库,后者用于防止空值。
3.事务控制
事务是并发控制的基本单位,也是恢复的基本单位。在sql中支持事务的概念。所谓事务,是用户定义的一个操作序列(集合),这些操作要么都做,要么一个都不做,是一个不可分割的整体。一个事务通常以begin transaction开始,以commit或rollback结束。