数据库的安全性和完整性管理课程

上传人:M****1 文档编号:567628476 上传时间:2024-07-21 格式:PPT 页数:81 大小:1.18MB
返回 下载 相关 举报
数据库的安全性和完整性管理课程_第1页
第1页 / 共81页
数据库的安全性和完整性管理课程_第2页
第2页 / 共81页
数据库的安全性和完整性管理课程_第3页
第3页 / 共81页
数据库的安全性和完整性管理课程_第4页
第4页 / 共81页
数据库的安全性和完整性管理课程_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《数据库的安全性和完整性管理课程》由会员分享,可在线阅读,更多相关《数据库的安全性和完整性管理课程(81页珍藏版)》请在金锄头文库上搜索。

1、第第1515章章 SQL Server 2008SQL Server 2008数据库的数据库的安全性和完整性管理安全性和完整性管理15.1 15.1 数据库安全性概述数据库安全性概述lSQL Server的安全性管理是建立在认证(authentication)和访问许可(permission)这两种机制上的。l认证是指确定登录SQL Server的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server的权限。l但是,通过认证并不代表能够访问SQL Server中的数据。用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作。l用户访问数据库权限

2、的设置是通过用户账号来实现的。角色简化了安全性管理。15.1 15.1 数据库安全性概述数据库安全性概述l所以在SQL Server的安全模型中包括以下几部分:l SQL Server身份验证;l 登录账户;l 数据库用户;l 角色;l 权限。15.1 15.1 数据库安全性概述数据库安全性概述l15.1.1 15.1.1 身份验证简介身份验证简介lSQL Server支持两种模式的身份验证:Windows验证模式、SQL Server 和Windows 混合验证模式。lWindows验证模式比起SQL Server验证模式来有许多优点。Windows身份验证比SQL Server身份验证更加

3、安全;使用Windows身份验证的登录账户更易于管理;用户只需登录Windows之后就可以使用SQL Server,只需要登录一次。l在混合验证模式下,Windows验证和SQL Server验证这两种验证模式都是可用的。对于SQL Server验证模式,用户在连接SQL Server时必须提供登录名和登录密码。15.1 15.1 数据库安全性概述数据库安全性概述l15.1.2 15.1.2 验证模式的修改验证模式的修改l当安装SQL Server时,可以选择SQL Server的身份验证类型。安装完成之后也可以修改认证模式。修改步骤如下。l(1)打开SQL Server Management

4、 Studio。l(2)在要更改的服务器上鼠标右键单击,在快捷菜单中选择属性,弹出服务器属性对话框。l(3)单击左侧列表中的“安全性”项,出现“安全性”页面,如图15.1所示。在图中修改身份验证。15.1 15.1 数据库安全性概述数据库安全性概述图15.1身份验证15.2 15.2 管理服务器登录管理服务器登录l1创建Windows登录账户l(1)在“对象资源管理器”中,单击树型目录中的“安全性”节点,如图15.2所示。15.2 15.2 管理服务器登录管理服务器登录l(2)鼠标右键单击“安全性”的子节点“登录名”,在快捷菜单中选择“新建登录名”,出现“登录名-新建”对话框,如图15.3所示

5、。15.2 15.2 管理服务器登录管理服务器登录l(3)在“登录名”编辑框中输入登录名称,输入的登录名必须是已存在的Windows登录用户。可以单击“搜索”按钮,出现登录“选择用户和组”对话框,如图15.4所示。在对象名称编辑框中输入用户或组的名称,单击“检查名称”按钮检查对象是否存在。输入完成,单击“确定”按钮关闭选择用户或组对话框。 15.2 15.2 管理服务器登录管理服务器登录l(4)确认选择的是“Windows身份验证”。指定账户登录的默认数据库。l(5)单击窗口左侧列表中的“服务器角色”节点,指定账户所属服务器角色。l(6)单击窗口左侧列表中的“用户映射”节点,右侧出现用户映射页

6、面。可以查看或修改SQL登录账户到数据库用户的映射。选择此登录账户可以访问的数据库,对具体的数据库,指定要映射到登录名的数据库用户(默认情况下,数据库用户名与登录名相同)。指定用户的默认架构,首次创建用户时,其默认架构是dbo。l(7)设置完成单击“确定”按钮提交更改。15.2 15.2 管理服务器登录管理服务器登录l2创建SQL Server登录账户l一个SQL Server登录账户名是一个新的登录账户,该账户和Windows操作系统的登录账户没有关系。l(1)打开新建登录名对话框,选择“SQL Server身份验证”,输入登录名,密码和确认密码,并选择缺省数据库,如图15.5所示。15.2

7、 15.2 管理服务器登录管理服务器登录l(2)设置服务器角色和用户映射,请参考“创建Windows登录账户”的步骤5和步骤6。15.2 15.2 管理服务器登录管理服务器登录l3登录账户管理l创建登录账户之后,在图15.2所示服务器安全性展开登录名节点上,鼠标右键单击相应的账户,出现快捷菜单,如图15.6所示,如果要修改该登录账户,选择属性菜单;如要删除该登录账户,则选择删除菜单。15.2 15.2 管理服务器登录管理服务器登录l15.2.2 15.2.2 使用使用Transact-SQLTransact-SQL管理登录账户管理登录账户l在Transact-SQL中,管理登录账户的SQL语句

8、有:CREATE LOGIN、DROP LOGIN、ALTER LOGIN。下面简要说明如何使用T-SQL来创建和维护登录账户。l1新建登录账户CREATE LOGINl其语法格式为:lCREATE LOGIN login_name WITH | FROM 15.2 15.2 管理服务器登录管理服务器登录l【例15.1】创建带密码的登录名“test”。MUST_CHANGE选项要求用户首次连接服务器时更改此密码。lCREATE LOGIN test WITH PASSWORD = 26aK MUST_CHANGEl【例15.2】从Windows域账户创建 Developmentiewangjf

9、 登录名。lCREATE LOGIN Developmentiewangjf FROM Windows15.2 15.2 管理服务器登录管理服务器登录l2删除登录账户DROP LOGINl其语法格式为:DROP LOGIN login_namel【例15.3】删除登录账户“test”。lDROP LOGIN testl3更改登录账户ALTER LOGINl其语法格式为:lALTER LOGIN login_name l l | WITH ,. l := ENABLE | DISABLE15.2 15.2 管理服务器登录管理服务器登录l【例15.4】启用禁用的登录。lALTER LOGIN te

10、st ENABLE;l【例15.5】将“test”登录密码更改为 。lALTER LOGIN test WITH PASSWORD = l【例15.6】将登录名“test”更改为“iewangjf”。lALTER LOGIN test WITH NAME = iewangjf15.3 15.3 角色和用户管理角色和用户管理l15.3.1 15.3.1 角色管理简介角色管理简介l角色等价于Windows的工作组,将登录名或用户赋予一个角色,角色具有权限,登录名或用户作为角色成员,从而继承了所属角色的权限。如图15.7所示。15.3 15.3 角色和用户管理角色和用户管理l只需给角色指定权限,然后

11、将登录名或用户指定为某个角色,而不必给每个登录名或用户指定权限,这样给实际工作带来了很大的便利。l在SQL Server中角色分为服务器角色和数据库角色。而数据库角色又分为固有数据库角色、用户自定义数据库角色和应用程序角色。l1服务器角色l服务器角色内建于SQL Server,其权限无法更改,每一个角色拥有一定级别的数据库管理职能,如图15.8所示。15.3 15.3 角色和用户管理角色和用户管理l服务器角色包括以下几种。l bulkadmin:可以运行BULK INSERT语句。l dbcreator:可以创建、更改、删除和还原任何数据库。l diskadmin:管理磁盘文件。l proce

12、ssadmin:可以终止SQL Server实例中运行的进程。l securityadmin:管理登录名及其属性。这类角色可以GRANT、DENY和REVOKE服务器级和数据库级权限,可以重置SQL Server登录名的密码。l serveradmin:可以更改服务器范围的配置选项和关闭服务器。l setupadmin:添加和删除链接服务器,并且也可以执行某些系统存储过程。l sysadmin:可以在服务器中执行任何活动。15.3 15.3 角色和用户管理角色和用户管理15.3 15.3 角色和用户管理角色和用户管理l2固有数据库角色l固有数据库角色是指这些角色的数据库权限已被SQL Serv

13、er预定义,不能对其权限进行任何修改,并且这些角色存在于每个数据库中,如图15.9所示。15.3 15.3 角色和用户管理角色和用户管理l固有数据库角色包括以下几种。l db_accessadmin:可以为Windows登录账户、Windows 组和SQL Server登录账户添加或删除访问权限。l db_backupoperator:可以备份该数据库。l db_datareader:可以读取所有用户表中的所有数据。l db_datawriter:可以在所有用户表中添加、删除或更改数据。l db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。l db_denydatare

14、ader:不能读取数据库内用户表中的任何数据。15.3 15.3 角色和用户管理角色和用户管理l db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据。l db_owner:可以执行数据库的所有配置和维护活动。l db_securityadmin:可以修改角色成员身份和管理权限。l public:当添加一个数据库用户时,它自动成为该角色成员,该角色不能删除,指定给该角色的权限自动给予所有数据库用户。ldb_owner和db_securityadmin角色的成员可以管理固有数据库角色成员身份;但是,只有db_owner数据库的成员可以向db_owner固有数据库角色

15、中添加成员。15.3 15.3 角色和用户管理角色和用户管理l3用户自定义数据库角色l当打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某些特定功能。用户自定义数据库角色包含以下两种类型。l 标准角色:为完成某项任务而指定的具有某些权限和数据库用户的角色。l 应用角色:与标准角色不同的是,应用角色默认情况下不包含任何成员,而且是非活动的。将权限赋予应用角色,然后将逻辑加入到某一特定的应用程序中,从而激活应用角色而实现了对应用程序存取数据的可控性。15.3 15.3 角色和用户管理角

16、色和用户管理l15.3.2 15.3.2 角色的管理角色的管理l1使用Management Studio管理角色l(1)为服务器角色添加登录账户。执行如下步骤。l 在图15.8中展开服务器角色节点。在需要添加用户的角色上单击鼠标右键,选择“属性”菜单,弹出“属性”对话框。l 单击“添加”按钮,则弹出“选择登录名”对话框,如图15.10所示。l 单击“浏览”按钮,则弹出“查找对象”对话框,如图15.11所示。l 选中需要添加的对象。l 单击每个对话框中的“确定”按钮关闭对话框。15.3 15.3 角色和用户管理角色和用户管理图15.10“选择登录名”对话框15.3 15.3 角色和用户管理角色和

17、用户管理图15.11“查找对象”对话框15.3 15.3 角色和用户管理角色和用户管理l(2)为固有数据库角色添加成员。鼠标右键单击想要添加成员的固有服务器角色节点,其余步骤与(1)类似。l(3)创建用户自定义角色。执行如下步骤。l 展开要创建数据库节点,直到看到“数据库角色”节点,鼠标右键单击“数据库角色”,选择“新建数据库角色”,出现“新建数据库角色”对话框,如图15.12所示。15.3 15.3 角色和用户管理角色和用户管理15.3 15.3 角色和用户管理角色和用户管理l 在角色名称编辑框中填入角色名称,在所有者编辑框中填入该角色的所有者。l 指定角色拥有的框架名称。单击“添加”按钮添

18、加角色成员,则弹出“选择数据库用户或角色”对话框,如图15.13所示。15.3 15.3 角色和用户管理角色和用户管理l 输入用户(如果需要,单击“浏览”按钮),单击“确定”按钮添加用户到角色。l 单击图15.12左侧选择页中的“安全对象”,则右侧“安全对象”页面,如图15.14所示。在此可以设置角色访问数据库的资源。15.3 15.3 角色和用户管理角色和用户管理15.3 15.3 角色和用户管理角色和用户管理l 单击安全对象中“搜索”按钮,弹出“添加对象”对话框,如图15.15所示。l 选择对象类型,如选择“特定类型的所有对象”,则弹出“选择对象类型”对话框,如图15.16所示。15.3

19、15.3 角色和用户管理角色和用户管理l 在如图15.16所示的对话框中选择需要设置权限的对象类型,如选择表,单击“确定”按钮关闭,则显示所有表的权限设置,如图15.17所示。可以设置具体的表的权限。针对具体表,还可以设计对应的列权限。15.3 15.3 角色和用户管理角色和用户管理15.3 15.3 角色和用户管理角色和用户管理l2使用Transact-SQL语句管理角色l对于服务器角色来说,其成员为登录账号,对于数据库角色来说,其成员为数据库用户、数据库角色、Windows 登录或Windows组。l(1)管理服务器角色。在SQL Server中管理服务器角色的存储过程主要有两个:sp_a

20、ddsrvro lemember和sp_dropsrvrrolemember。lsp_addsrvrolemember是添加登录账户到服务器角色内,使其成为该角色的成员。l其语法格式为:lsp_addsrvrolemember loginame = login rolename = role15.3 15.3 角色和用户管理角色和用户管理lsp_dropsrvrrolemember用来在某一服务器角色中删除登录账号,当该成员从服务器角色中被删除后,便不再具有该服务器角色所设置的权限。l其语法格式为:lsp_dropsrvrolemember loginame = login rolename

21、= rolel【例15.7】将登录账户“iewangjf”加入sysadmin角色中。lsp_addsrvrolemember iewangjf sysadmin15.3 15.3 角色和用户管理角色和用户管理l(2)管理数据库角色。管理数据库角色的语句有:CREATE ROLE,DROP ROLE,ALTER ROLE。lCREATE ROLE用来新建数据库角色,其语法格式为:lCREATE ROLE role_name AUTHORIZATION owner_name l其中AUTHORIZATION owner_name表示将拥有新角色的数据库用户或角色。如果未指定用户,则执行CREAT

22、E ROLE的用户将拥有该角色。l【例15.8】创建用户“iewangjf”隶属的数据库角色“buyers”。lCREATE ROLE buyers AUTHORIZATION iewangjf15.3 15.3 角色和用户管理角色和用户管理l【例15.9】创建db_securityadmin 固有数据库角色隶属的数据库角色“auditors”。lCREATE ROLE auditors AUTHORIZATION db_securityadminl管理角色成员的存储过程有:sp_addrolemember,sp_droprolemember,这两个存储过程和添加删除服务器角色的存储过程用法类

23、似。l【例15.10】将数据库用户“iewangjf”添加到当前数据库的“Sales”数据库角色中。lsp_addrolemember Sales, iewangjf15.3 15.3 角色和用户管理角色和用户管理l(3)查看角色信息。查看角色信息的存储过程有sp_helprolemember、sp_helprole。lsp_helprolemember返回某个角色的成员的信息。其语法格式为:lsp_helprolemember rolename = role lsp_helprole返回当前数据库中有关角色的信息。其语法格式为: lsp_helprole rolename = role l【

24、例15.11】显示Sales角色的成员。lsp_helprolemember Salesl【例15.12】返回当前数据库中的所有角色。lsp_helprole15.3 15.3 角色和用户管理角色和用户管理l15.3.3 15.3.3 用户管理简介用户管理简介l用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的,即两个不同数据库中可以有两个相同的用户账号。l在数据库中,用户账号与登录账号是两个不同的概念,一个合法的登录账号只表明该账号通过了Windows认证或SQL Server认证,但不能表明其可以对数据库数据和数据对象进行某种操作。l通常而言,

25、数据库用户账号总是与某一登录账号相关联。但有一个例外,那就是guest用户。用户通过Windows认证或SQL Server认证而成功登录到SQL Server之后的过程如下。15.3 15.3 角色和用户管理角色和用户管理l(1)检查该登录用户是否有合法的用户名,如果有合法用户名,则允许其以用户名访问数据库,否则执行步骤2。l(2)SQL Server检查是否有guest用户,如果有,则允许登录用户以guest用户来访问数据库,如果没有,则该登录用户被拒绝。l由此可见,guest用户主要是作为那些没有属于自己的用户账号的SQL Server登录者的缺省用户名,从而使该登录者能够访问具有gue

26、st用户的数据库。15.3 15.3 角色和用户管理角色和用户管理l15.3.4 15.3.4 用户的管理用户的管理l1使用Management Studio管理用户l(1)在Management Studio对象资源管理器中,扩展指定的数据库节点,直到看到用户节点,如右图所示。 l(2)鼠标右键单击用户子节点,在弹出菜单中选择“新建用户”,弹出“新建数据库用户”对话框,如图15.19所示。在用户名编辑框中输入用户名。15.3 15.3 角色和用户管理角色和用户管理15.3 15.3 角色和用户管理角色和用户管理l(3)在登录名编辑框中输入登录名或单击 “”按钮,弹出“选择登录名”对话框,如图

27、15.10所示。输入登录名或单击“浏览”按钮。如单击“浏览”按钮,则出现“查找对象”对话框,如图15.11所示。l(4)选中想添加的登录名,单击“确定”按钮关闭对话框。l(5)选择该用户登录的默认架构和所属角色,最后关闭“新建数据库用户”对话框。15.3 15.3 角色和用户管理角色和用户管理l2. 使用Transact-SQL管理用户l使用Transact-SQL管理用户的语句有CREATE USER,DROP USER,ALTER USER。l(1)创建用户:CREATE USERlCREATE USER语法格式为:lCREATE USER user_name FOR | FROM l l

28、 LOGIN login_namel | CERTIFICATE cert_namel | ASYMMETRIC KEY asym_key_namel | WITHOUT LOGINl WITH DEFAULT_SCHEMA = schema_name 15.3 15.3 角色和用户管理角色和用户管理l【例15.13】首先创建名为“Teacher”且具有密码的服务器登录名,然后在数据库“TEACH”中创建对应的数据库用户“WangWei”。lCREATE LOGIN Teacher WITH PASSWORD = 27039;lUSE TEACHlCREATE USER WangWeil【例1

29、5.14】创建具有默认架构“Teaching”的对应数据库用户“WangWei”lCREATE USER WangWei FOR LOGIN Teacher l WITH DEFAULT_SCHEMA = Teaching15.3 15.3 角色和用户管理角色和用户管理l(2)更改用户名或更改其登录的默认架构ALTER USERl其语法格式为:lALTER USER user_name WITH ,.n l := NAME = new_user_namel | DEFAULT_SCHEMA = schema_name l【例15.15】更改数据库用户的名称。lALTER USER WangWe

30、i WITH NAME = Wangjfl【例15.16】更改用户的默认架构。lALTER USER WangWei WITH DEFAULT_SCHEMA = Admining15.3 15.3 角色和用户管理角色和用户管理l(3)删除用户:DROP USERl其语法格式为:lDROP USER user_namel【例15.17】删除用户“WangWei”。lDROP USER WangWei15.4 SQL Server 200815.4 SQL Server 2008权限权限l权限管理指将安全对象的权限授予主体,取消或禁止主体对安全对象的权限。SQL Server通过验证主体是否已获得

31、适当的权限来控制主体对安全对象执行的操作。l1主体l“主体”是可以请求SQL Server资源的个体、组和过程。主体分类如表15.1所示。 表15.1主 体 分 类主 体内 容Windows级别的主体Windows域登录名、Windows本地登录名SQL Server级别的主体SQL Server登录名数据库级别的主体数据库用户、数据库角色、应用程序角色15.4 SQL Server 200815.4 SQL Server 2008权限权限l2安全对象l安全对象是SQL Server Database Engine 授权系统控制对其进行访问的资源。每个 SQL Server安全对象都有可能授予

32、主体的关联权限,如表15.2所示。安 全 对 象内 容服务器端点、登录账户、数据库数据库用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定、架构架构类型、XML 架构集合、对象对象聚合、约束、函数、过程、队列、统计信息、同义词、表、视图15.4 SQL Server 200815.4 SQL Server 2008权限权限l3架构l架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在SQL Server 2008中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的

33、所有权,这是与SQL Server 2000不同的地方。l完全限定的对象名称包含4部分:server.database.schema.object。15.4 SQL Server 200815.4 SQL Server 2008权限权限lSQL Server 2008还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在SQL Server 2008中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用CREATE USER和ALTER USER的DEFAULT_ SCHEMA选项设置和更改默认架构。如果未定义默认架构,则数据库用户将

34、把 DBO作为其默认架构。15.4 SQL Server 200815.4 SQL Server 2008权限权限l【例15.18】下面代码创建了用户“Jane”,默认架构为“Sales”,并设置其拥有数据库“db_ddladmin”角色。lUSE AdventureWorkslCREATE USER Jane FOR LOGIN JanelWITH DEFAULT_SCHEMA = Sales;lEXEC sp_addrolemember db_ddladmin, Jane;l这样Jane所做的任何操作默认发生在“Sales”架构上,她所创建的对象默认属于“Sales”架构,所引用的对象默认

35、在“Sales”架构上。当她执行以下语句时:lCREATE PROCEDURE usp_GetCustomerslASlSELECT * FROM Customerl该存储过程创建在“Sales”架构上,其他用户引用它时需要使用“Sales.usp_GetCustomers”。15.4 SQL Server 200815.4 SQL Server 2008权限权限l4权限l在SQL Server 2008中,能够授予的安全对象和权限的组合有181种,具体的GRANT、DENY、REVOKE语句格式和具体的安全对象有关。使用时请参阅联机丛书。l主要安全对象权限如表15.3所示。安 全 对 象权

36、限数据库BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW标量函数EXECUTE和REFERENCES表值函数、表、视图DELETE、INSERT、REFERENCES、SELECT和UPDATE存储过程DELETE、EXECUTE、INSERT、SELECT和UPDATE15.5 15.5 权限管理权限管理l1使用Management Studio管理权限l可通过对象或主体管理对象权限,

37、下面讲述通过对象来设置权限。l(1)鼠标右键单击对象,在快捷菜单中选择属性,弹出属性对话框。l(2)单击左侧选择页中“权限”,则显示权限页,如图15.20所示,在此可以指定该对象的角色或用户的权限。15.5 15.5 权限管理权限管理15.5 15.5 权限管理权限管理l(3)单击“搜索”按钮,弹出“选择用户或角色”对话框,如图15.21所示。l(4)输入用户或角色名,或单击“浏览”按钮,选择需要添加授权的用户或角色,如图15.22所示。15.5 15.5 权限管理权限管理l(5)单击“确定”按钮关闭查找对象对话框,然后关闭选择用户或角色对话框,回到表属性权限页中,如图15.23所示。15.5

38、 15.5 权限管理权限管理l(6)选择需要设置权限的用户或角色。设置该用户对每个具体权限的“授予”、“具有授予权限”、“拒绝”3种权限。如图15.23所示,设置用户“guest”对该表的插入(Insert)权限,而拒绝了对表数据的删除(Delete)权限。l(7)如果允许用户具有查询(Select)权限,则列权限可用,单击“列权限”按钮,“列权限”对话框出现,如图15.24所示。15.5 15.5 权限管理权限管理15.5 15.5 权限管理权限管理l如果不进行设置,则用户从其所属角色中继承权限。设置完列权限之后,单击“确定”按钮关闭列权限对话框。l(8)设置完权限之后,单击“确定”按钮关闭

39、属性页。l另一种方法是通过设置用户或角色的权限来设置权限,请参考15.3.2节“创建用户自定义角色”中的相关内容。15.5 15.5 权限管理权限管理l2使用Tractans-SQL管理权限l在SQL Server中使用GRANT、REVOKE和DENY 3种命令来管理权限。l(1)GRANT用来把权限授予某一用户,以允许该用户执行针对该对象的操作,如UPDATE、SELECT、DELETE、EXECUTE。或允许其运行某些语句,如CREATE TABLE、CREATE DATABASE。l其简化语法格式为:lGRANT ALL PRIVILEGES l | permission ( colu

40、mn ,.n ) ,.n l ON class : securable l TO principal ,.n l WITH GRANT OPTION AS principal 15.5 15.5 权限管理权限管理l【例15.19】授予用户“WangWei”对数据库的CREATE TABLE权限。lGRANT CREATE TABLE TO WangWeil【例15.20】授予用户“WangWei”对数据库的CREATE VIEW权限并使该用户具有为其他主体授予CREATE VIEW的权限。lGRANT CREATE VIEW TO WangWei WITH GRANT OPTIONl【例15.

41、21】授予用户“WangWei”对表“Person.Address”的SELECT权限。lGRANT SELECT ON OBJECT:Person.Address TO WangWei15.5 15.5 权限管理权限管理l(2)REVOKE用于取消用户对某一对象或语句的权限,这些权限是经过GRANT语句授予的。其语法格式和GRANT一致。l【例15.22】从用户“WangWei”以及“WangWei”已授予VIEW DEFINITION权限的所有主体中撤消对数据库的VIEW DEFINITION权限。lREVOKE VIEW DEFINITION FROM CarmineEs CASCADE

42、l【例15.23】撤销用户“WangWei”对表“Person.Address”的SELECT权限。lREVOKE SELECT ON OBJECT:Person.Address FROM WangWei15.5 15.5 权限管理权限管理l(3)DENY用来禁止用户对某一对象或语句的权限,明确禁止其对某一用户对象,执行某些操作。其语法格式和GRANT一致。l【例15.24】拒绝用户“WangWei”对数据库中表“Person.Address”的“SELECT”权限。lDENY SELECT ON OBJECT:Person.Address TO WangWei15.6 15.6 数据库完整性

43、概述数据库完整性概述l强制数据完整性可保证数据库中数据的质量。数据完整性是指数据的精确性和可靠性,例如,输入“employee_id”(employee_id为主键)值为123的雇员,则该数据库不应允许其他雇员使用具有相同值的employee_id。如果想将“employee_rating”列的值范围设定为15,则数据库不应接受值6。数据完整性分为下列类别。l1实体完整性l实体完整性将行定义为特定表的唯一实体。实体完整性通过索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性,强制表的标识符列或主键的完整性。15.6 15.6 数据库完整性概述数据库完整性概述l2域完整性l

44、域完整性是指数据库表中的列必须满足某种特定的数据类型或约束。可以强制域完整性限制类型(通过使用数据类型)、限制格式(通过使用CHECK约束和规则)或限制值的范围(通过使用FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。l3引用完整性l引用完整性以外键与主键之间或外键与唯一键之间的关系为基础通过FOREIGN KEY和CHECK进行约束。引用完整性确保键值在所有表中一致。这类一致性要求不能引用不存在的值,如果一个键值发生更改,则整个数据库中,对该键值的所有引用要统一进行更改。15.6 15.6 数据库完整性概述数据库完整性概述l4用户定义完整性l用户

45、定义完整性使用户可以定义不属于其他任何完整性类别的特定业务规则。SQL Server提供了一些工具来帮助用户实现数据完整性,其中最主要的是约束、规则、触发器,其中触发器在前面章节中已经介绍。15.7 15.7 约束的概念和类型约束的概念和类型l约束是通过限制列中数据、行中数据和表之间数据来保证数据完整性的非常有效的方法。约束可以确保把有效的数据输入到列中,并维护表和表之间的特定关系。SQL Server 2008 提供了下列机制来强制列中数据的完整性:l PRIMARY KEY约束;l FOREIGN KEY约束;l UNIQUE约束;l CHECK约束;l DEFAULT定义;l 允许空值。

46、15.7 15.7 约束的概念和类型约束的概念和类型l定义约束时,既可以把约束放在一个列上,也可以把约束放在多个列上。如果把约束放在一个列上,该约束称为列级约束,因为它只能由约束所在的列引用;如果把约束放在多个列上,该约束称为表级约束,这时可以由多个列来引用该约束。l在定义约束或修改约束的定义时,应该考虑下列情况:l 不必删除表,就可以直接创建、修改和删除约束;l 必须在应用程序中增加错误检查机制,测试数据是否与约束相冲突;l 向表上增加约束时,SQL Server系统将检查表中的数据是否与约束冲突。15.7 15.7 约束的概念和类型约束的概念和类型l15.7.1 PRIMARY KEY15

47、.7.1 PRIMARY KEY约束约束l表中包含唯一标识表中每一行的一列或一组列作为PRIMARY KEY约束。一个表只能有一个PRIMARY KEY约束,并且PRIMARY KEY约束中的列不能接收空值。l其定义语法格式为:lCONSTRAINT constraint_namel PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTEREDl (column_name1, column_name2,column_name16)15.7 15.7 约束的概念和类型约束的概念和类型l【例15.25】创建一个简单的学生表。lCREATE TABLE student(

48、 l StuID int PRIMARY KEY,l StuName varchar(20) )l或者将Primary key写到后面。lCREATE TABLE student(l StuID int,l StuName varchar(20),l CONSTRAINT pk_stu_ID PRIMARY KEY(stuID) ) 15.7 15.7 约束的概念和类型约束的概念和类型l15.7.2 FOREIGN KEY15.7.2 FOREIGN KEY约束约束l外键(FOREIGN KEY)是用于建立和加强两个表数据之间连接的一列或多列。在外键引用中,当一个表的列被引用作为另一个表的主键

49、列时,就在两表之间创建了连接,这个列就成为第二个表的外键。lFOREIGN KEY约束要求列中的每个值,都存在于引用的表的对应被引用列中。FOREIGN KEY约束只能引用在引用的表中是 PRIMARY KEY 或 UNIQUE 约束的列。l其定义的语法格式为:l CONSTRAINT constraint_name l FOREIGN KEY l REFERENCES schema_name . referenced_table_name ( ref_column ,. n )15.7 15.7 约束的概念和类型约束的概念和类型l【例15.26】创建选课表。lCREATE TABLE sch

50、edule( lscheduleid int PRIMARY KEY,lsubjectid int REFERENCES subject(subjectid),lstuID int CONSTRAINT fk_stu_id FOREIGN KEY(StuID) REFERENCES student(StuID) )l其中表“schedule”具有两个外键,字段“subjectid”引用的是“subject”表的主键“subjectid”,而StuID引用的是“student”的主键StuID。Constraint fk_stu_id是约束名称,如果省略,则系统会指定约束名。15.7 15.7

51、约束的概念和类型约束的概念和类型l15.7.3 UNIQUE15.7.3 UNIQUE约束约束l使用UNIQUE约束确保在非主键列中不输入重复的值。可以对一个表定义多个UNIQUE约束,UNIQUE约束允许NULL值,其语法格式请参照15.7.1小节。l15.7.4 CHECK15.7.4 CHECK约束约束lCHECK 约束通过不基于其他列中的数据的逻辑表达式确定有效值。例如,可以通过任何基于逻辑运算符返回TRUE或FALSE的逻辑(布尔)表达式创建CHECK约束。l【例15.27】为学生表身份证增加Check约束,身份证是15位或18位。lCREATE TABLE student(l St

52、uID int PRIMARY KEY,l StuName varchar(20),l StuIDCard varchar(18) UNIQUE CHECK(len(StuIDCard)=15 or len(StuIDCard)=15) )15.7 15.7 约束的概念和类型约束的概念和类型l15.7.5 DEFAULT15.7.5 DEFAULT定义定义 l定义列的缺省值,插入数据时,如果列不允许空值且没有DEFAULT定义,就必须为该列指定值。否则数据库会返回错误,指出该列不允许空值。l15.7.6 15.7.6 允许空值允许空值lNULL的意思是没有输入,出现NULL通常表示值未知或未定

53、义。SQL Server建议避免允许空值,因为空值会使查询和更新变得更复杂。如果不允许空值,用户向表中输入数据时必须在列中输入一个值,否则数据库将不接收该表行。15.8 15.8 管理约束管理约束l在所要修改的表上用鼠标右键单击,在快捷菜单中选择“修改”,出现表的属性页,可设置允许空值约束,在所要修改的列名上用鼠标右键单击,出现快捷菜单,如图15.25所示。快捷菜单上“设置主键”用来设置PRIMARY KEY约束,“关系”用来设置FOREIGN KEY约束,“索引/键”用来设置UNIQUE约束,“CHECK约束”可直接设置CHECK约束。下方“默认值或绑定”则可用来设置DEFAULT定义。15.8 15.8 管理约束管理约束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 金融/商业/投资

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号