XXXX(第2版)第15章_SQL_Server_XXXX数据库的安全性ppt课件_第1页
XXXX(第2版)第15章_SQL_Server_XXXX数据库的安全性ppt课件_第2页
XXXX(第2版)第15章_SQL_Server_XXXX数据库的安全性ppt课件_第3页
XXXX(第2版)第15章_SQL_Server_XXXX数据库的安全性ppt课件_第4页
XXXX(第2版)第15章_SQL_Server_XXXX数据库的安全性ppt课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第15章 SQL Server 2021数据库的平安性和完好性管理15.1 数据库平安性概述SQL Server的平安性管理是建立在认证authentication和访问答应permission这两种机制上的。认证是指确定登录SQL Server的用户的登录账号和密码能否正确,以此来验证其能否具有衔接SQL Server的权限。但是,经过认证并不代表可以访问SQL Server中的数据。用户只需在获取访问数据库的权限之后,才可以对效力器上的数据库进展权限答应下的各种操作。用户访问数据库权限的设置是经过用户账号来实现的。角色简化了平安性管理。15.1 数据库平安性概述所以在SQL Server的

2、平安模型中包括以下几部分: SQL Server身份验证; 登录账户; 数据库用户; 角色; 权限。15.1 数据库平安性概述15.1.1 身份验证简介SQL Server支持两种方式的身份验证:Windows验证方式、SQL Server 和Windows 混合验证方式。Windows验证方式比起SQL Server验证方式来有许多优点。Windows身份验证比SQL Server身份验证更加平安;运用Windows身份验证的登录账户更易于管理;用户只需登录Windows之后就可以运用SQL Server,只需求登录一次。在混合验证方式下,Windows验证和SQL Server验证这两种验

3、证方式都是可用的。对于SQL Server验证方式,用户在衔接SQL Server时必需提供登录名和登录密码。15.1 数据库平安性概述15.1.2 验证方式的修正当安装SQL Server时,可以选择SQL Server的身份验证类型。安装完成之后也可以修正认证方式。修正步骤如下。1翻开SQL Server Management Studio。2在要更改的效力器上鼠标右键单击,在快捷菜单中选择属性,弹出效力器属性对话框。3单击左侧列表中的“平安性项,出现“平安性页面,如图15.1所示。在图中修正身份验证。15.1 数据库平安性概述图15.1 身份验证15.2 管理效力器登录1创建Window

4、s登录账户1在“对象资源管理器中,单击树型目录中的“平安性节点,如图15.2所示。15.2 管理效力器登录2鼠标右键单击“平安性的子节点“登录名,在快捷菜单中选择“新建登录名,出现“登录名-新建对话框,如图15.3所示。15.2 管理效力器登录3在“登录名编辑框中输入登录称号,输入的登录名必需是已存在的Windows登录用户。可以单击“搜索按钮,出现登录“选择用户和组对话框,如图15.4所示。在对象称号编辑框中输入用户或组的称号,单击“检查称号按钮检查对象能否存在。输入完成,单击“确定按钮封锁选择用户或组对话框。 15.2 管理效力器登录4确认选择的是“Windows身份验证。指定账户登录的默

5、许数据库。5单击窗口左侧列表中的“效力器角色节点,指定账户所属效力器角色。6单击窗口左侧列表中的“用户映射节点,右侧出现用户映射页面。可以查看或修正SQL登录账户到数据库用户的映射。选择此登录账户可以访问的数据库,对详细的数据库,指定要映射到登录名的数据库用户默许情况下,数据库用户名与登录名一样。指定用户的默许架构,初次创建用户时,其默许架构是dbo。7设置完成单击“确定按钮提交更改。15.2 管理效力器登录2创建SQL Server登录账户一个SQL Server登录账户名是一个新的登录账户,该账户和Windows操作系统的登录账户没有关系。1翻开新建登录名对话框,选择“SQL Server

6、身份验证,输入登录名,密码和确认密码,并选择缺省数据库,如图15.5所示。15.2 管理效力器登录2设置效力器角色和用户映射,请参考“创建Windows登录账户的步骤5和步骤6。15.2 管理效力器登录3登录账户管理创建登录账户之后,在图15.2所示效力器平安性展开登录名节点上,鼠标右键单击相应的账户,出现快捷菜单,如图15.6所示,假设要修正该登录账户,选择属性菜单;如要删除该登录账户,那么选择删除菜单。15.2 管理效力器登录15.2.2 运用Transact-SQL管理登录账户在Transact-SQL中,管理登录账户的SQL语句有:CREATE LOGIN、DROP LOGIN、ALT

7、ER LOGIN。下面简要阐明如何运用T-SQL来创建和维护登录账户。1新建登录账户CREATE LOGIN其语法格式为:CREATE LOGIN login_name WITH | FROM 15.2 管理效力器登录【例15.1】创建带密码的登录名“test。MUST_CHANGE选项要求用户初次衔接效力器时更改此密码。CREATE LOGIN test WITH PASSWORD = 26aK MUST_CHANGE【例15.2】从Windows域账户创建 Developmentiewangjf 登录名。CREATE LOGIN Developmentiewangjf FROM Windo

8、ws15.2 管理效力器登录2删除登录账户DROP LOGIN其语法格式为:DROP LOGIN login_name【例15.3】删除登录账户“test。DROP LOGIN test3更改登录账户ALTER LOGIN其语法格式为:ALTER LOGIN login_name | WITH ,. := ENABLE | DISABLE15.2 管理效力器登录【例15.4】启用禁用的登录。ALTER LOGIN test ENABLE;【例15.5】将“test登录密码更改为 。ALTER LOGIN test WITH PASSWORD = 【例15.6】将登录名“test更改为“iewa

9、ngjf。ALTER LOGIN test WITH NAME = iewangjf15.3 角色和用户管理15.3.1 角色管理简介角色等价于Windows的任务组,将登录名或用户赋予一个角色,角色具有权限,登录名或用户作为角色成员,从而承继了所属角色的权限。如图15.7所示。15.3 角色和用户管理只需给角色指定权限,然后将登录名或用户指定为某个角色,而不用给每个登录名或用户指定权限,这样给实践任务带来了很大的便利。在SQL Server中角色分为效力器角色和数据库角色。而数据库角色又分为固有数据库角色、用户自定义数据库角色和运用程序角色。1效力器角色效力器角色内建于SQL Server,

10、其权限无法更改,每一个角色拥有一定级别的数据库管理职能,如图15.8所示。15.3 角色和用户管理效力器角色包括以下几种。 bulkadmin:可以运转BULK INSERT语句。 dbcreator:可以创建、更改、删除和复原任何数据库。 diskadmin:管理磁盘文件。 processadmin:可以终止SQL Server实例中运转的进程。 securityadmin:管理登录名及其属性。这类角色可以GRANT、DENY和REVOKE效力器级和数据库级权限,可以重置SQL Server登录名的密码。 serveradmin:可以更改效力器范围的配置选项和封锁效力器。 setupadmi

11、n:添加和删除链接效力器,并且也可以执行某些系统存储过程。 sysadmin:可以在效力器中执行任何活动。15.3 角色和用户管理15.3 角色和用户管理2固有数据库角色固有数据库角色是指这些角色的数据库权限已被SQL Server预定义,不能对其权限进展任何修正,并且这些角色存在于每个数据库中,如图15.9所示。15.3 角色和用户管理固有数据库角色包括以下几种。 db_accessadmin:可以为Windows登录账户、Windows 组和SQL Server登录账户添加或删除访问权限。 db_backupoperator:可以备份该数据库。 db_datareader:可以读取一切用户

12、表中的一切数据。 db_datawriter:可以在一切用户表中添加、删除或更改数据。 db_ddladmin:可以在数据库中运转任何数据定义言语DDL命令。 db_denydatareader:不能读取数据库内用户表中的任何数据。15.3 角色和用户管理 db_denydatawriter:不能添加、修正或删除数据库内用户表中的任何数据。 db_owner:可以执行数据库的一切配置和维护活动。 db_securityadmin:可以修正角色成员身份和管理权限。 public:当添加一个数据库用户时,它自动成为该角色成员,该角色不能删除,指定给该角色的权限自动给予一切数据库用户。db_owne

13、r和db_securityadmin角色的成员可以管理固有数据库角色成员身份;但是,只需db_owner数据库的成员可以向db_owner固有数据库角色中添加成员。15.3 角色和用户管理3用户自定义数据库角色当计划为某些数据库用户设置一样的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,就可以定义新的数据库角色来满足这一要求,从而使这些用户可以在数据库中实现某些特定功能。用户自定义数据库角色包含以下两种类型。 规范角色:为完成某项义务而指定的具有某些权限和数据库用户的角色。 运用角色:与规范角色不同的是,运用角色默许情况下不包含任何成员,而且是非活动的。将权限赋予运用角色,然后将

14、逻辑参与到某一特定的运用程序中,从而激活运用角色而实现了对运用程序存取数据的可控性。15.3 角色和用户管理15.3.2 角色的管理1运用Management Studio管理角色1为效力器角色添加登录账户。执行如下步骤。 在图15.8中展开效力器角色节点。在需求添加用户的角色上单击鼠标右键,选择“属性菜单,弹出“属性对话框。 单击“添加按钮,那么弹出“选择登录名对话框,如图15.10所示。 单击“阅读按钮,那么弹出“查找对象对话框,如图15.11所示。 选中需求添加的对象。 单击每个对话框中的“确定按钮封锁对话框。15.3 角色和用户管理图15.10 “选择登录名对话框15.3 角色和用户管

15、理图15.11 “查找对象对话框15.3 角色和用户管理2为固有数据库角色添加成员。鼠标右键单击想要添加成员的固有效力器角色节点,其他步骤与1类似。3创建用户自定义角色。执行如下步骤。 展开要创建数据库节点,直到看到“数据库角色节点,鼠标右键单击“数据库角色,选择“新建数据库角色,出现“新建数据库角色对话框,如图15.12所示。15.3 角色和用户管理15.3 角色和用户管理 在角色称号编辑框中填入角色称号,在一切者编辑框中填入该角色的一切者。 指定角色拥有的框架称号。单击“添加按钮添加角色成员,那么弹出“选择数据库用户或角色对话框,如图15.13所示。15.3 角色和用户管理 输入用户假设需

16、求,单击“阅读按钮,单击“确定按钮添加用户到角色。 单击图15.12左侧选择页中的“平安对象,那么右侧“平安对象页面,如图15.14所示。在此可以设置角色访问数据库的资源。15.3 角色和用户管理15.3 角色和用户管理 单击平安对象中“搜索按钮,弹出“添加对象对话框,如图15.15所示。 选择对象类型,如选择“特定类型的一切对象,那么弹出“选择对象类型对话框,如图15.16所示。15.3 角色和用户管理 在如图15.16所示的对话框中选择需求设置权限的对象类型,如选择表,单击“确定按钮封锁,那么显示一切表的权限设置,如图15.17所示。可以设置详细的表的权限。针对详细表,还可以设计对应的列权

17、限。15.3 角色和用户管理15.3 角色和用户管理2运用Transact-SQL语句管理角色对于效力器角色来说,其成员为登录账号,对于数据库角色来说,其成员为数据库用户、数据库角色、Windows 登录或Windows组。1管理效力器角色。在SQL Server中管理效力器角色的存储过程主要有两个:sp_addsrvro lemember和sp_dropsrvrrolemember。sp_addsrvrolemember是添加登录账户到效力器角色内,使其成为该角色的成员。其语法格式为:sp_addsrvrolemember loginame = login rolename = role15

18、.3 角色和用户管理sp_dropsrvrrolemember用来在某一效力器角色中删除登录账号,当该成员从效力器角色中被删除后,便不再具有该效力器角色所设置的权限。其语法格式为:sp_dropsrvrolemember loginame = login rolename = role【例15.7】将登录账户“iewangjf参与sysadmin角色中。sp_addsrvrolemember iewangjf sysadmin15.3 角色和用户管理2管理数据库角色。管理数据库角色的语句有:CREATE ROLE,DROP ROLE,ALTER ROLE。CREATE ROLE用来新建数据库角

19、色,其语法格式为:CREATE ROLE role_name AUTHORIZATION owner_name 其中AUTHORIZATION owner_name表示将拥有新角色的数据库用户或角色。假设未指定用户,那么执行CREATE ROLE的用户将拥有该角色。【例15.8】创建用户“iewangjf隶属的数据库角色“buyers。CREATE ROLE buyers AUTHORIZATION iewangjf15.3 角色和用户管理【例15.9】创建db_securityadmin 固有数据库角色隶属的数据库角色“auditors。CREATE ROLE auditors AUTHOR

20、IZATION db_securityadmin管理角色成员的存储过程有:sp_addrolemember,sp_droprolemember,这两个存储过程和添加删除效力器角色的存储过程用法类似。【例15.10】将数据库用户“iewangjf添加到当前数据库的“Sales数据库角色中。sp_addrolemember Sales, iewangjf15.3 角色和用户管理3查看角色信息。查看角色信息的存储过程有sp_helprolemember、sp_helprole。sp_helprolemember前往某个角色的成员的信息。其语法格式为:sp_helprolemember rolenam

21、e = role sp_helprole前往当前数据库中有关角色的信息。其语法格式为: sp_helprole rolename = role 【例15.11】显示Sales角色的成员。sp_helprolemember Sales【例15.12】前往当前数据库中的一切角色。sp_helprole15.3 角色和用户管理15.3.3 用户管理简介用户对数据的访问权限以及对数据库对象的一切关系都是经过用户账号来控制的,用户账号总是基于数据库的,即两个不同数据库中可以有两个一样的用户账号。在数据库中,用户账号与登录账号是两个不同的概念,一个合法的登录账号只阐明该账号经过了Windows认证或SQL

22、 Server认证,但不能阐明其可以对数据库数据和数据对象进展某种操作。通常而言,数据库用户账号总是与某一登录账号相关联。但有一个例外,那就是guest用户。用户经过Windows认证或SQL Server认证而胜利登录到SQL Server之后的过程如下。15.3 角色和用户管理1检查该登录用户能否有合法的用户名,假设有合法用户名,那么允许其以用户名访问数据库,否那么执行步骤2。2SQL Server检查能否有guest用户,假设有,那么允许登录用户以guest用户来访问数据库,假设没有,那么该登录用户被回绝。由此可见,guest用户主要是作为那些没有属于本人的用户账号的SQL Server

23、登录者的缺省用户名,从而使该登录者可以访问具有guest用户的数据库。15.3 角色和用户管理15.3.4 用户的管理1运用Management Studio管理用户1在Management Studio对象资源管理器中,扩展指定的数据库节点,直到看到用户节点,如右图所示。 2鼠标右键单击用户子节点,在弹出菜单中选择“新建用户,弹出“新建数据库用户对话框,如图15.19所示。在用户名编辑框中输入用户名。15.3 角色和用户管理15.3 角色和用户管理3在登录名编辑框中输入登录名或单击 “按钮,弹出“选择登录名对话框,如图15.10所示。输入登录名或单击“阅读按钮。如单击“阅读按钮,那么出现“查

24、找对象对话框,如图15.11所示。4选中想添加的登录名,单击“确定按钮封锁对话框。5选择该用户登录的默许架构和所属角色,最后封锁“新建数据库用户对话框。15.3 角色和用户管理2. 运用Transact-SQL管理用户运用Transact-SQL管理用户的语句有CREATE USER,DROP USER,ALTER USER。1创建用户:CREATE USERCREATE USER语法格式为:CREATE USER user_name FOR | FROM LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_na

25、me | WITHOUT LOGIN WITH DEFAULT_SCHEMA = schema_name 15.3 角色和用户管理【例15.13】首先创建名为“Teacher且具有密码的效力器登录名,然后在数据库“TEACH中创建对应的数据库用户“WangWei。CREATE LOGIN Teacher WITH PASSWORD = 27039;USE TEACHCREATE USER WangWei【例15.14】创建具有默许架构“Teaching的对应数据库用户“WangWeiCREATE USER WangWei FOR LOGIN Teacher WITH DEFAULT_SCHEM

26、A = Teaching15.3 角色和用户管理2更改用户名或更改其登录的默许架构ALTER USER其语法格式为:ALTER USER user_name WITH ,.n := NAME = new_user_name | DEFAULT_SCHEMA = schema_name 【例15.15】更改数据库用户的称号。ALTER USER WangWei WITH NAME = Wangjf【例15.16】更改用户的默许架构。ALTER USER WangWei WITH DEFAULT_SCHEMA = Admining15.3 角色和用户管理3删除用户:DROP USER其语法格式为:

27、DROP USER user_name【例15.17】删除用户“WangWei。DROP USER WangWei15.4 SQL Server 2021权限权限管理指将平安对象的权限授予主体,取消或制止主体对平安对象的权限。SQL Server经过验证主体能否已获得适当的权限来控制主体对平安对象执行的操作。1主体“主体是可以恳求SQL Server资源的个体、组和过程。主体分类如表15.1所示。 表15.1主 体 分 类主 体内 容Windows级别的主体Windows域登录名、Windows本地登录名SQL Server级别的主体SQL Server登录名数据库级别的主体数据库用户、数据库

28、角色、应用程序角色15.4 SQL Server 2021权限2平安对象平安对象是SQL Server Database Engine 授权系统控制对其进展访问的资源。每个 SQL Server平安对象都有能够授予主体的关联权限,如表15.2所示。安 全 对 象内 容服务器端点、登录账户、数据库数据库用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定、架构架构类型、XML 架构集合、对象对象聚合、约束、函数、过程、队列、统计信息、同义词、表、视图15.4 SQL Server 2021权限3架构架构是构成单个命名空间的数据库实体的集

29、合。命名空间是一个集合,其中每个元素的称号都是独一的。在SQL Server 2021中,架构独立于创建它们的数据库用户而存在。可以在不更改架构称号的情况下转让架构的一切权,这是与SQL Server 2000不同的地方。完全限定的对象称号包含4部分:server.database.schema.object。15.4 SQL Server 2021权限SQL Server 2021还引入了“默许架构的概念,用于解析未运用其完全限定称号援用的对象的称号。在SQL Server 2021中,每个用户都有一个默许架构,用于指定效力器在解析对象的称号时将要搜索的第一个架构。可以运用CREATE US

30、ER和ALTER USER的DEFAULT_ SCHEMA选项设置和更改默许架构。假设未定义默许架构,那么数据库用户将把 DBO作为其默许架构。15.4 SQL Server 2021权限【例15.18】下面代码创建了用户“Jane,默许架构为“Sales,并设置其拥有数据库“db_ddladmin角色。USE AdventureWorksCREATE USER Jane FOR LOGIN JaneWITH DEFAULT_SCHEMA = Sales;EXEC sp_addrolemember db_ddladmin, Jane;这样Jane所做的任何操作默许发生在“Sales架构上,她所

31、创建的对象默许属于“Sales架构,所援用的对象默许在“Sales架构上。当她执行以下语句时:CREATE PROCEDURE usp_GetCustomersASSELECT * FROM Customer该存储过程创建在“Sales架构上,其他用户援用它时需求运用“Sales.usp_GetCustomers。15.4 SQL Server 2021权限4权限在SQL Server 2021中,可以授予的平安对象和权限的组合有181种,详细的GRANT、DENY、REVOKE语句格式和详细的平安对象有关。运用时请参阅联机丛书。主要平安对象权限如表15.3所示。安 全 对 象权 限数据库BA

32、CKUP 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 权限管理1运用Management Studio管理权限可经过对象或主体管理对象权限,下面讲述经过对象来设置权限。1鼠标

33、右键单击对象,在快捷菜单中选择属性,弹出属性对话框。2单击左侧选择页中“权限,那么显示权限页,如图15.20所示,在此可以指定该对象的角色或用户的权限。15.5 权限管理15.5 权限管理3单击“搜索按钮,弹出“选择用户或角色对话框,如图15.21所示。4输入用户或角色名,或单击“阅读按钮,选择需求添加授权的用户或角色,如图15.22所示。15.5 权限管理5单击“确定按钮封锁查找对象对话框,然后封锁选择用户或角色对话框,回到表属性权限页中,如图15.23所示。15.5 权限管理6选择需求设置权限的用户或角色。设置该用户对每个详细权限的“授予、“具有授予权限、“回绝3种权限。如图15.23所示

34、,设置用户“guest对该表的插入Insert权限,而回绝了对表数据的删除Delete权限。7假设允许用户具有查询Select权限,那么列权限可用,单击“列权限按钮,“列权限对话框出现,如图15.24所示。15.5 权限管理15.5 权限管理假设不进展设置,那么用户从其所属角色中承继权限。设置完列权限之后,单击“确定按钮封锁列权限对话框。8设置完权限之后,单击“确定按钮封锁属性页。另一种方法是经过设置用户或角色的权限来设置权限,请参考15.3.2节“创建用户自定义角色中的相关内容。15.5 权限管理2运用Tractans-SQL管理权限在SQL Server中运用GRANT、REVOKE和DE

35、NY 3种命令来管理权限。1GRANT用来把权限授予某一用户,以允许该用户执行针对该对象的操作,如UPDATE、SELECT、DELETE、EXECUTE。或允许其运转某些语句,如CREATE TABLE、CREATE DATABASE。其简化语法格式为:GRANT ALL PRIVILEGES | permission ( column ,.n ) ,.n ON class : securable TO principal ,.n WITH GRANT OPTION AS principal 15.5 权限管理【例15.19】授予用户“WangWei对数据库的CREATE TABLE权限。G

36、RANT CREATE TABLE TO WangWei【例15.20】授予用户“WangWei对数据库的CREATE VIEW权限并使该用户具有为其他主体授予CREATE VIEW的权限。GRANT CREATE VIEW TO WangWei WITH GRANT OPTION【例15.21】授予用户“WangWei对表“Person.Address的SELECT权限。GRANT SELECT ON OBJECT:Person.Address TO WangWei15.5 权限管理2REVOKE用于取消用户对某一对象或语句的权限,这些权限是经过GRANT语句授予的。其语法格式和GRANT一

37、致。【例15.22】从用户“WangWei以及“WangWei已授予VIEW DEFINITION权限的一切主体中吊销对数据库的VIEW DEFINITION权限。REVOKE VIEW DEFINITION FROM CarmineEs CASCADE【例15.23】撤销用户“WangWei对表“Person.Address的SELECT权限。REVOKE SELECT ON OBJECT:Person.Address FROM WangWei15.5 权限管理3DENY用来制止用户对某一对象或语句的权限,明确制止其对某一用户对象,执行某些操作。其语法格式和GRANT一致。【例15.24】回

38、绝用户“WangWei对数据库中表“Person.Address的“SELECT权限。DENY SELECT ON OBJECT:Person.Address TO WangWei15.6 数据库完好性概述强迫数据完好性可保证数据库中数据的质量。数据完好性是指数据的准确性和可靠性,例如,输入“employee_idemployee_id为主键值为123的雇员,那么该数据库不应允许其他雇员使器具有一样值的employee_id。假设想将“employee_rating列的值范围设定为15,那么数据库不应接受值6。数据完好性分为以下类别。1实体完好性实体完好性将行定义为特定表的独一实体。实体完好性

39、经过索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性,强迫表的标识符列或主键的完好性。15.6 数据库完好性概述2域完好性域完好性是指数据库表中的列必需满足某种特定的数据类型或约束。可以强迫域完好性限制类型经过运用数据类型、限制格式经过运用CHECK约束和规那么或限制值的范围经过运用FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规那么。3援用完好性援用完好性以外键与主键之间或外键与独一键之间的关系为根底经过FOREIGN KEY和CHECK进展约束。援用完好性确保键值在一切表中一致。这类一致性要求不能援用不存在的值,假设一个键值发

40、生更改,那么整个数据库中,对该键值的一切援用要一致进展更改。15.6 数据库完好性概述4用户定义完好性用户定义完好性运用户可以定义不属于其他任何完好性类别的特定业务规那么。SQL Server提供了一些工具来协助用户实现数据完好性,其中最主要的是约束、规那么、触发器,其中触发器在前面章节中曾经引见。15.7 约束的概念和类型约束是经过限制列中数据、行中数据和表之间数据来保证数据完好性的非常有效的方法。约束可以确保把有效的数据输入到列中,并维护表和表之间的特定关系。SQL Server 2021 提供了以下机制来强迫列中数据的完好性: PRIMARY KEY约束; FOREIGN KEY约束;

41、UNIQUE约束; CHECK约束; DEFAULT定义; 允许空值。15.7 约束的概念和类型定义约束时,既可以把约束放在一个列上,也可以把约束放在多个列上。假设把约束放在一个列上,该约束称为列级约束,由于它只能由约束所在的列援用;假设把约束放在多个列上,该约束称为表级约束,这时可以由多个列来援用该约束。在定义约束或修正约束的定义时,应该思索以下情况: 不用删除表,就可以直接创建、修正和删除约束; 必需在运用程序中添加错误检查机制,测试数据能否与约束相冲突; 向表上添加约束时,SQL Server系统将检查表中的数据能否与约束冲突。15.7 约束的概念和类型15.7.1 PRIMARY KE

42、Y约束表中包含独一标识表中每一行的一列或一组列作为PRIMARY KEY约束。一个表只能有一个PRIMARY KEY约束,并且PRIMARY KEY约束中的列不能接纳空值。其定义语法格式为:CONSTRAINT constraint_name PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTERED (column_name1, column_name2,column_name16)15.7 约束的概念和类型【例15.25】创建一个简单的学生表。CREATE TABLE student( StuID int PRIMARY KEY, StuName varchar(20) )或者将Primary key写到后面。CREATE TABLE student( StuID int, StuName varchar(20), CONSTRAINT pk_stu_ID PRIMARY KEY(stuID) ) 15.7 约束的概念和类型15.7.2 FOREIGN KEY约束外键FOREIGN KEY是用于建立和加强

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论