实验四数据的完整性、安全性一、实验目的1.掌握数据安全性和完整性的概念,以及如何保证数据库中数据安全及完整性。
2.掌握SQL Server中有关用户、角色及操作权限的管理方法.3.学会创建和使用规则、缺省。
二、实验内容1 数据库的安全性实验,通过SSMS设置SQL Server的安全认证模式.实现对SQL Server 的用户和角色管理,设置和管理数据操作权限.2数据库的完整性实验。
使用Transact-SQL设计规则、缺省、约束和触发器。
三、实验要求1.数据的完整性实验⑴用SQL语句创建一学生成绩数据库(XSCJ),包括学生(XSQK)、课程(KC)和成绩表(XS_KC):学生情况表(XSQK)列名数据类型长度是否允许为空值学号Char 6 N姓名Char 8 N性别Bit 1 N出生日期smalldatetime 2专业名Char 10所在系Char 10联系电话char 11 Y课程表(KC)列名数据类型长度是否允许为空值课程号Char 3 N课程名Char 20 N教师Char 10开课学期Tinyint 1学时Tinyint 1学分Tinyint 1 N成绩表(XS_KC)列名数据类型长度是否允许为空值学号Char 6 N课程号成绩CharSmallint32N⑵数据的实体完整性实验用SSMS分别将学生情况表(XSQK)的学号字段、课程表(KC)的课程号字段设置为主健②用T-SQL语句将成绩表(XS_KC)的学号、课程号字段设置为主健⑶数据的参照完整性实验①用SSMS为成绩表(XS_KC)创建外键FK_ XSQK_ID,外键FK_ XSQK_ID参照学生情况表(XSQK)表的学号②用T-SQL语句成绩表(XS_KC)创建外键FK_ KC_ID,外键FK_ KC _ID参照课程表(KC)表的课程号⑷数据的用户定义完整性实验用T-SQL语句为学生情况表(XSQK)的姓名列创建一个唯一约束②用SSMS为学生情况表(XSQK)的性别列创建一个检查约束,使得性别的值为男或女③用T-SQL语句为成绩表(XS_KC)的成绩列创建一个检查约束,使得成绩的值在(0~100)之间④用SSMS语句课程表(KC)的学时列创建一个缺省约束,缺省值为60⑤用T-SQL语句课程表(KC)的学分列创建一个缺省约束,缺省值为22.将如下数据分别转换成文本数据或Excel的格式,并分别将其导入数据库的各个表中:学生情况表(XSQK):课程表(KC ):成绩表(XS_KC ):学号 姓名 性别 出生日期 专业 所在系 联系电话 020101 杨颖 0 1980-7-20 计算机应用 计算机 020102 方露露 0 1981-1-15 计算机应用 计算机 020103 俞奇军 1 1980-2-20 信息管理 计算机 020104 胡国强 1 1980-11-7 信息管理 计算机 020105 薛冰 1 1980-7-29 水利工程 水利系 020201 秦盈飞 0 1981-3-10 电子商务 经济系 020202 董含静 0 1980-9-25 电子商务 经济系 020203 陈伟 1 1980-8-7 电子商务 经济系 020204陈新江11980-7-20房建水利系课程号 课程名教师 开课学期 学时 学分 101 计算机原理 陈红 2 45 3 102 计算方法 王颐 3 45 3 103 操作系统 徐格 2 60 4 104 数据库原理及应用 应对刚 3 75 5 105 网络基础 吴江江 4 45 3 106 高等数学 孙中文 1 90 6 107 英语 陈刚 1 90 6 108VB 程序设计赵红韦37053. 理解默认值的概念和作用①用语句创建名为Xi_default,值为“计算机系”的默认值②将默认值Xi_default绑定到学生表中的所在系的属性列上③解除学生表所在系的属性列上的默认值学号课程号成绩④删除默认值Xi_default注:创建默认值的格式:create default 默认值名as ‘默认值’默认值绑定的格式:sp_bindefault 默认值名, <’表名.列名’︱自定义数据类型名称>解除默认值绑定格式:sp_unbindefault <’表名.列名’︱自定义数据类型名称>删除默认值格式:Drop default 默认值名4.理解规则的概念和作用①用语句创建规则“rule_kkxq”,用以限制插入该规则所绑定的列中的值只能取1、2、3、4、5、6②将“rule_ kkxq”规则绑定到课程表的开课学期属性上,并执行以下语句,看看能否正常执行,为什么:Insert into 课程表Values(109,'C语言','李方',8,64,4)不能正常执行,因为数值8不在规则rule_kkxq所绑定的数据范围内③若不解除规则,能否将规则rule_ kkxq直接删除?不能,需先解除规则才能删除规则rule_ kkxq注:创建规则的格式:create rule 规则名as @列名约束条件规则绑定的格式:sp_bindrule 规则名, <’表名.列名’︱自定义数据类型名称>解除规则绑定格式:sp_unbindrule <’表名.列名’︱自定义数据类型名称>删除规则格式:Drop rule 规则名5.数据的安全性实验:(1)设置身份验证模式①写出查看当前SQL Server身份验证模式的过程,即查看当前SQL Server系统到底是采用Windows身份验证还是混合身份验证模式。
服务器->右键"属性"->选择"安全性",即可查看当前SQL Server系统的服务器验证模式②将系统设置为Windows身份验证模式,重启SQL Server,使之生效并验证③将系统设置为混合身份验证模式,重启SQL Server,使之生效并验证⑵创建和管理登录账户1)用对象资源管理器创建、查看、删除SQL Server登录账户①分别创建两个登录帐户LoginA、LoginA1,其登录密码分别为:123456、456,并指定LoginA登录默认的数据库为学生成绩数据库(XSCJ),指定LoginA1登录默认的数据库为master 数据库。
②查看登录账户LoginA、LoginA1③删除登录账户LoginA12)用T-SQL语句创建、查看、删除SQL Server登录账户①用系统存储过程,分别创建两个登陆帐户LoginB、LoginB1,其登录密码分别为:666、888,登录后然后所连接到的数据库均为学生成绩数据库(XSCJ)。
注:创建新的SQL Server登录账号和登录密码的语句为:sp_addlogin [ @loginame = ] 'login' //登录的名称[ , [ @passwd = ] 'password' ] //登录密码。
[ , [ @defdb = ] 'database' ] //登录的默认数据库(登录后登录所连接到的数据库)。
默认设置为master。
例:创建一个登陆帐户Login,登录密码为:A,登录后然后所连接到的数据库为master数据库。
sp_addlogin 'Login','A','master'或sp_addlogin @loginame ='Login', @passwd ='A', @defdb ='master'②使用系统存储过程sp_helplogins查看SQL Server登录账户注:查看登录账户的格式:exec sp_helplogins③使用系统存储过程sp_droplogin从SQL Server中将登录账户LoginB1删除注:删除登录账户的格式:sp_droplogin [ @loginame = ] '登录名称'⑶创建和管理数据库用户1)用对象资源管理器创建、查看、删除数据库用户①在学生成绩数据库(XSCJ)中创建数据库用户UserA,使其所对应的帐号为LoginA②能否再创建一个数据库用户ABC,使其对应登录的帐号为LoginA,若不能写出其原因?不能,同一个数据库的数据库用户只能有一个登录账户2)用语句创建、查看、删除数据库用户①用系统存储过程sp_grantdbaccess在学生成绩数据库(XSCJ)中创建一个数据库用户UserB,使其所对应的登录帐号为LoginB注:为SQL Server登录在当前数据库中添加一个安全用户的语句为:sp_grantdbaccess [@loginame =] 'login' //当前数据库中的登录账号[,[@name_in_db =] 'name_in_db' //数据库中帐户的用户名②用系统存储过程sp_helpuser查看数据库用户注:查看数据库用户的格式:sp_helpuser [[@name_in_db = ] 'security_account']③用系统存储过程sp_ revokedbaccess删除数据库用户ABC1注:删除数据库用户的格式:sp_ revokedbaccess [@name_in_db = ] ' name '⑷创建和管理角色1)服务器角色的管理①用对象资源管理器将登录帐户LoginA加到sysadmin的角色中。
②用系统存储过程sp_addsrvrolemember将登录帐户LoginB加到sysadmin的角色中。
注:为登录账户指定服务器角色的系统存储过程sp_addsrvrolemember的格式为:sp_add srv rolemember '登录账号',服务器角色名称③用系统存储过程sp_dropsrvrolemember删除登录账户LoginA的服务器角色sysadmin注:删除登录账户的服务器角色的系统存储过程sp_dropsrvrolemember的格式为:sp_dropsrvrolemember '登录账号',服务器角色名称2)数据库角色的管理①用对象资源管理器将数据库用户UserA添加到db_owner数据库的角色中②用系统存储过程sp_addrolemember将数据库用户UserB添加到db_owner数据库角色中。
注:为数据库用户指定数据库角色的系统存储过程sp_addrolemember的格式为:sp_addrolemember [@rolename=]'role',//当前数据库角色的名称[ @membername= ] security_account/*添加到角色的安全帐户。