好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

81页
  • 卖家[上传人]:hs****ma
  • 文档编号:592311481
  • 上传时间:2024-09-20
  • 文档格式:PPT
  • 文档大小:1.18MB
  • / 81 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第1515章章 SQL Server 2008SQL Server 2008数据库的数据库的安全性和完整性管理安全性和完整性管理 15.1 15.1 数据库安全性概述数据库安全性概述lSQL Server的安全性管理是建立在认证(authentication)和访问许可(permission)这两种机制上的l认证是指确定登录SQL Server的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server的权限l但是,通过认证并不代表能够访问SQL Server中的数据用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作l用户访问数据库权限的设置是通过用户账号来实现的角色简化了安全性管理 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身份验证更加安全;使用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 Studiol(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所示 15.2 15.2 管理服务器登录管理服务器登录l(3)在“登录名”编辑框中输入登录名称,输入的登录名必须是已存在的Windows登录用户可以单击“搜索…”按钮,出现登录“选择用户和组”对话框,如图15.4所示在对象名称编辑框中输入用户或组的名称,单击“检查名称”按钮检查对象是否存在输入完成,单击“确定”按钮关闭选择用户或组对话框 15.2 15.2 管理服务器登录管理服务器登录l(4)确认选择的是“Windows身份验证”指定账户登录的默认数据库l(5) 单击窗口左侧列表中的“服务器角色”节点,指定账户所属服务器角色l(6)单击窗口左侧列表中的“用户映射”节点,右侧出现用户映射页面可以查看或修改SQL登录账户到数据库用户的映射选择此登录账户可以访问的数据库,对具体的数据库,指定要映射到登录名的数据库用户(默认情况下,数据库用户名与登录名相同)指定用户的默认架构,首次创建用户时,其默认架构是dbo。

      l(7)设置完成单击“确定”按钮提交更改 15.2 15.2 管理服务器登录管理服务器登录l2.创建SQL Server登录账户l一个SQL Server登录账户名是一个新的登录账户,该账户和Windows操作系统的登录账户没有关系l(1)打开新建登录名对话框,选择“SQL Server身份验证”,输入登录名,密码和确认密码,并选择缺省数据库,如图15.5所示 15.2 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语句有: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 = '2<6aK' MUST_CHANGEl【例15.2】从Windows域账户创建 [Development\iewangjf] 登录名lCREATE LOGIN [Development\iewangjf] FROM Windows 15.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 | DISABLE 15.2 15.2 管理服务器登录管理服务器登录l【例15.4】启用禁用的登录。

      lALTER LOGIN test ENABLE;l【例15.5】将“test”登录密码更改为 <123www456>lALTER LOGIN test WITH PASSWORD = '<123www456>'l【例15.6】将登录名“test”更改为“iewangjf”lALTER LOGIN test WITH NAME = iewangjf 15.3 15.3 角色和用户管理角色和用户管理l15.3.1 15.3.1 角色管理简介角色管理简介l角色等价于Windows的工作组,将登录名或用户赋予一个角色,角色具有权限,登录名或用户作为角色成员,从而继承了所属角色的权限如图15.7所示 15.3 15.3 角色和用户管理角色和用户管理l只需给角色指定权限,然后将登录名或用户指定为某个角色,而不必给每个登录名或用户指定权限,这样给实际工作带来了很大的便利l在SQL Server中角色分为服务器角色和数据库角色而数据库角色又分为固有数据库角色、用户自定义数据库角色和应用程序角色l1.服务器角色l服务器角色内建于SQL Server,其权限无法更改,每一个角色拥有一定级别的数据库管理职能,如图15.8所示。

      15.3 15.3 角色和用户管理角色和用户管理l服务器角色包括以下几种l  bulkadmin:可以运行BULK INSERT语句l  dbcreator:可以创建、更改、删除和还原任何数据库l  diskadmin:管理磁盘文件l  processadmin:可以终止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 Server预定义,不能对其权限进行任何修改,并且这些角色存在于每个数据库中,如图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_denydatareader:不能读取数据库内用户表中的任何数据 15.3 15.3 角色和用户管理角色和用户管理l  db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据l  db_owner:可以执行数据库的所有配置和维护活动l  db_securityadmin:可以修改角色成员身份和管理权限l  public:当添加一个数据库用户时,它自动成为该角色成员,该角色不能删除,指定给该角色的权限自动给予所有数据库用户ldb_owner和db_securityadmin角色的成员可以管理固有数据库角色成员身份;但是,只有db_owner数据库的成员可以向db_owner固有数据库角色中添加成员。

      15.3 15.3 角色和用户管理角色和用户管理l3.用户自定义数据库角色l当打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某些特定功能用户自定义数据库角色包含以下两种类型l 标准角色:为完成某项任务而指定的具有某些权限和数据库用户的角色l 应用角色:与标准角色不同的是,应用角色默认情况下不包含任何成员,而且是非活动的将权限赋予应用角色,然后将逻辑加入到某一特定的应用程序中,从而激活应用角色而实现了对应用程序存取数据的可控性 15.3 15.3 角色和用户管理角色和用户管理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 角色和用户管理角色和用户管理图15.11  “查找对象”对话框 15.3 15.3 角色和用户管理角色和用户管理l(2)为固有数据库角色添加成员鼠标右键单击想要添加成员的固有服务器角色节点,其余步骤与(1)类似l(3)创建用户自定义角色执行如下步骤l① 展开要创建数据库节点,直到看到“数据库角色”节点,鼠标右键单击“数据库角色”,选择“新建数据库角色”,出现“新建数据库角色”对话框,如图15.12所示 15.3 15.3 角色和用户管理角色和用户管理 15.3 15.3 角色和用户管理角色和用户管理l② 在角色名称编辑框中填入角色名称,在所有者编辑框中填入该角色的所有者l③ 指定角色拥有的框架名称单击“添加”按钮添加角色成员,则弹出“选择数据库用户或角色”对话框,如图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 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_addsrvro lemember和sp_dropsrvrrolemember。

      lsp_addsrvrolemember是添加登录账户到服务器角色内,使其成为该角色的成员l其语法格式为:lsp_addsrvrolemember [@loginame =] 'login' [@rolename =] 'role' 15.3 15.3 角色和用户管理角色和用户管理lsp_dropsrvrrolemember用来在某一服务器角色中删除登录账号,当该成员从服务器角色中被删除后,便不再具有该服务器角色所设置的权限l其语法格式为:lsp_dropsrvrolemember [@loginame =] 'login' [@rolename =] 'role'l【例15.7】将登录账户“iewangjf”加入sysadmin角色中lsp_addsrvrolemember ‘iewangjf’ ‘sysadmin’ 15.3 15.3 角色和用户管理角色和用户管理l(2)管理数据库角色管理数据库角色的语句有:CREATE ROLE,DROP ROLE,ALTER ROLElCREATE ROLE用来新建数据库角色,其语法格式为:lCREATE ROLE role_name [ AUTHORIZATION owner_name ]l其中AUTHORIZATION owner_name表示将拥有新角色的数据库用户或角色。

      如果未指定用户,则执行CREATE ROLE的用户将拥有该角色l【例15.8】创建用户“iewangjf”隶属的数据库角色“buyers”lCREATE ROLE buyers AUTHORIZATION iewangjf 15.3 15.3 角色和用户管理角色和用户管理l【例15.9】创建db_securityadmin 固有数据库角色隶属的数据库角色“auditors”lCREATE ROLE auditors AUTHORIZATION db_securityadminl管理角色成员的存储过程有:sp_addrolemember,sp_droprolemember,这两个存储过程和添加删除服务器角色的存储过程用法类似l【例15.10】将数据库用户“iewangjf”添加到当前数据库的“Sales”数据库角色中lsp_addrolemember 'Sales', 'iewangjf' 15.3 15.3 角色和用户管理角色和用户管理l(3)查看角色信息查看角色信息的存储过程有sp_helprolemember、sp_helprolelsp_helprolemember返回某个角色的成员的信息。

      其语法格式为:lsp_helprolemember [ [ @rolename = ] 'role' ]lsp_helprole返回当前数据库中有关角色的信息其语法格式为: lsp_helprole [ [ @rolename = ] 'role' ]l【例15.11】显示Sales角色的成员lsp_helprolemember 'Sales'l【例15.12】返回当前数据库中的所有角色lsp_helprole 15.3 15.3 角色和用户管理角色和用户管理l15.3.3 15.3.3 用户管理简介用户管理简介l用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的,即两个不同数据库中可以有两个相同的用户账号l在数据库中,用户账号与登录账号是两个不同的概念,一个合法的登录账号只表明该账号通过了Windows认证或SQL Server认证,但不能表明其可以对数据库数据和数据对象进行某种操作l通常而言,数据库用户账号总是与某一登录账号相关联但有一个例外,那就是guest用户用户通过Windows认证或SQL Server认证而成功登录到SQL Server之后的过程如下。

      15.3 15.3 角色和用户管理角色和用户管理l(1)检查该登录用户是否有合法的用户名,如果有合法用户名,则允许其以用户名访问数据库,否则执行步骤2l(2)SQL Server检查是否有guest用户,如果有,则允许登录用户以guest用户来访问数据库,如果没有,则该登录用户被拒绝l由此可见,guest用户主要是作为那些没有属于自己的用户账号的SQL Server登录者的缺省用户名,从而使该登录者能够访问具有guest用户的数据库 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)在登录名编辑框中输入登录名或单击 “…”按钮,弹出“选择登录名”对话框,如图15.10所示。

      输入登录名或单击“浏览”按钮如单击“浏览”按钮,则出现“查找对象”对话框,如图15.11所示l(4)选中想添加的登录名,单击“确定”按钮关闭对话框l(5)选择该用户登录的默认架构和所属角色,最后关闭“新建数据库用户”对话框 15.3 15.3 角色和用户管理角色和用户管理l2. 使用Transact-SQL管理用户l使用Transact-SQL管理用户的语句有CREATE USER,DROP USER,ALTER USERl(1)创建用户:CREATE USERlCREATE USER语法格式为:lCREATE USER user_name [ { { FOR | FROM }l{ l 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【例15.14】创建具有默认架构“Teaching”的对应数据库用户“WangWei”lCREATE USER WangWei FOR LOGIN Teacher l WITH DEFAULT_SCHEMA = Teaching 15.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 WangWei WITH NAME = Wangjfl【例15.16】更改用户的默认架构lALTER USER WangWei WITH DEFAULT_SCHEMA = Admining 15.3 15.3 角色和用户管理角色和用户管理l(3)删除用户:DROP USERl其语法格式为:lDROP USER user_namel【例15.17】删除用户“WangWei”。

      lDROP USER WangWei 15.4 SQL Server 200815.4 SQL Server 2008权限权限l权限管理指将安全对象的权限授予主体,取消或禁止主体对安全对象的权限SQL Server通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作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安全对象都有可能授予主体的关联权限,如表15.2所示安 全 对 象内 容服务器端点、登录账户、数据库数据库用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定、架构架构类型、XML 架构集合、对象对象聚合、约束、函数、过程、队列、统计信息、同义词、表、视图 15.4 SQL Server 200815.4 SQL Server 2008权限权限l3.架构l架构是形成单个命名空间的数据库实体的集合。

      命名空间是一个集合,其中每个元素的名称都是唯一的在SQL Server 2008中,架构独立于创建它们的数据库用户而存在可以在不更改架构名称的情况下转让架构的所有权,这是与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选项设置和更改默认架构如果未定义默认架构,则数据库用户将把 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”架构,所引用的对象默认在“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所示安 全 对 象权 限数据库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和UPDATE 15.5 15.5 权限管理权限管理l1.使用Management Studio管理权限l可通过对象或主体管理对象权限,下面讲述通过对象来设置权限。

      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 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)设置完权限之后,单击“确定”按钮关闭属性页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 DATABASEl其简化语法格式为:lGRANT { ALL [ PRIVILEGES ] }l | permission [ ( column [ ,...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.21】授予用户“WangWei”对表“Person.Address”的SELECT权限lGRANT SELECT ON OBJECT::Person.Address TO WangWei 15.5 15.5 权限管理权限管理l(2)REVOKE用于取消用户对某一对象或语句的权限,这些权限是经过GRANT语句授予的其语法格式和GRANT一致l【例15.22】从用户“WangWei”以及“WangWei”已授予VIEW DEFINITION权限的所有主体中撤消对数据库的VIEW DEFINITION权限lREVOKE VIEW DEFINITION FROM CarmineEs CASCADEl【例15.23】撤销用户“WangWei”对表“Person.Address”的SELECT权限。

      lREVOKE SELECT ON OBJECT::Person.Address FROM WangWei 15.5 15.5 权限管理权限管理l(3)DENY用来禁止用户对某一对象或语句的权限,明确禁止其对某一用户对象,执行某些操作其语法格式和GRANT一致l【例15.24】拒绝用户“WangWei”对数据库中表“Person.Address”的“SELECT”权限lDENY SELECT ON OBJECT::Person.Address TO WangWei 15.6 15.6 数据库完整性概述数据库完整性概述l强制数据完整性可保证数据库中数据的质量数据完整性是指数据的精确性和可靠性,例如,输入“employee_id”(employee_id为主键)值为123的雇员,则该数据库不应允许其他雇员使用具有相同值的employee_id如果想将“employee_rating”列的值范围设定为1~5,则数据库不应接受值6数据完整性分为下列类别l1.实体完整性l实体完整性将行定义为特定表的唯一实体实体完整性通过索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性,强制表的标识符列或主键的完整性。

      15.6 15.6 数据库完整性概述数据库完整性概述l2.域完整性l域完整性是指数据库表中的列必须满足某种特定的数据类型或约束可以强制域完整性限制类型(通过使用数据类型)、限制格式(通过使用CHECK约束和规则)或限制值的范围(通过使用FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)l3.引用完整性l引用完整性以外键与主键之间或外键与唯一键之间的关系为基础通过FOREIGN KEY和CHECK进行约束引用完整性确保键值在所有表中一致这类一致性要求不能引用不存在的值,如果一个键值发生更改,则整个数据库中,对该键值的所有引用要统一进行更改 15.6 15.6 数据库完整性概述数据库完整性概述l4.用户定义完整性l用户定义完整性使用户可以定义不属于其他任何完整性类别的特定业务规则SQL Server提供了一些工具来帮助用户实现数据完整性,其中最主要的是约束、规则、触发器,其中触发器在前面章节中已经介绍 15.7 15.7 约束的概念和类型约束的概念和类型l约束是通过限制列中数据、行中数据和表之间数据来保证数据完整性的非常有效的方法约束可以确保把有效的数据输入到列中,并维护表和表之间的特定关系。

      SQL Server 2008 提供了下列机制来强制列中数据的完整性:l  PRIMARY KEY约束;l  FOREIGN KEY约束;l  UNIQUE约束;l  CHECK约束;l  DEFAULT定义;l 允许空值 15.7 15.7 约束的概念和类型约束的概念和类型l定义约束时,既可以把约束放在一个列上,也可以把约束放在多个列上如果把约束放在一个列上,该约束称为列级约束,因为它只能由约束所在的列引用;如果把约束放在多个列上,该约束称为表级约束,这时可以由多个列来引用该约束l在定义约束或修改约束的定义时,应该考虑下列情况:l 不必删除表,就可以直接创建、修改和删除约束;l 必须在应用程序中增加错误检查机制,测试数据是否与约束相冲突;l 向表上增加约束时,SQL Server系统将检查表中的数据是否与约束冲突 15.7 15.7 约束的概念和类型约束的概念和类型l15.7.1 PRIMARY KEY15.7.1 PRIMARY KEY约束约束l表中包含唯一标识表中每一行的一列或一组列作为PRIMARY KEY约束一个表只能有一个PRIMARY KEY约束,并且PRIMARY KEY约束中的列不能接收空值。

      l其定义语法格式为:l[CONSTRAINT constraint_name]l { PRIMARY KEY | UNIQUE } [CLUSTERED | NONCLUSTERED]l (column_name1[, column_name2,…,column_name16]) 15.7 15.7 约束的概念和类型约束的概念和类型l【例15.25】创建一个简单的学生表lCREATE TABLE student( 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)是用于建立和加强两个表数据之间连接的一列或多列。

      在外键引用中,当一个表的列被引用作为另一个表的主键列时,就在两表之间创建了连接,这个列就成为第二个表的外键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 schedule( 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 约束的概念和类型约束的概念和类型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 StuID 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通常表示值未知或未定义SQL Server建议避免允许空值,因为空值会使查询和更新变得更复杂如果不允许空值,用户向表中输入数据时必须在列中输入一个值,否则数据库将不接收该表行 15.8 15.8 管理约束管理约束l在所要修改的表上用鼠标右键单击,在快捷菜单中选择“修改”,出现表的属性页,可设置允许空值约束,在所要修改的列名上用鼠标右键单击,出现快捷菜单,如图15.25所示快捷菜单上“设置主键”用来设置PRIMARY KEY约束,“关系”用来设置FOREIGN KEY约束,“索引/键”用来设置UNIQUE约束,“CHECK约束”可直接设置CHECK约束下方“默认值或绑定”则可用来设置DEFAULT定义 15.8 15.8 管理约束管理约束 。

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.