广东海洋大学计算机科学与技术数据库实验4文档格式.docx
《广东海洋大学计算机科学与技术数据库实验4文档格式.docx》由会员分享,可在线阅读,更多相关《广东海洋大学计算机科学与技术数据库实验4文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
Bit
1
出生日期
smalldatetime
2
专业名
10
所在系
联系电话
char
11
Y
CREATETABLEXSQK(
学号CHAR(6)NOTNULL,
姓名CHAR(8)NOTNULL,
性别BITNOTNULL,
出生日期smalldatetime,
专业名CHAR(10),
所在系Char(10),
联系电话char(11)
);
课程表(KC)
课程号
3
课程名
20
教师
开课学期
Tinyint
学时
学分
CREATETABLEKC(
课程号Char(3)NOTNULL,
课程名Char(20)NOTNULL,
教师Char(10),
开课学期Tinyint,
学时Tinyint,
学分TinyintNOTNULL
成绩表(XS_KC)
成绩
Smallint
CREATETABLEXS_KC(
学号Char(6)NOTNULL,
课程名Char(3)NOTNULL,
成绩Smallint
⑵数据的实体完整性实验V
①用SSMS分别将学生情况表(XSQK)的学号字段、课程表(KC)的课程号字段设置为主健
②用T-SQL语句将成绩表(XS_KC)的学号、课程号字段设置为主健
ALTERTABLEXS_KCADDCONSTRAINTXS_KC_KEYPRIMARYKEY(学号,课程号)
⑶数据的参照完整性实验
①用SSMS为成绩表(XS_KC)创建外键FK_XSQK_ID,外键FK_XSQK_ID参照学生情况表(XSQK)表的学号
②用T-SQL语句成绩表(XS_KC)创建外键FK_KC_ID,外键FK_KC_ID参照课程表(KC)
表的课程号
ALTERTABLEXS_KCADDCONSTRAINTFK_KC_IDFOREIGNKEY(课程号)REFERENCESKC(课程号);
⑷数据的用户定义完整性实验
用T-SQL语句为学生情况表(XSQK)的姓名列创建一个唯一约束
ALTERTABLEXSQKADDCONSTRAINTFK_XSQK_UNIQUEUNIQUE(姓名)
②用SSMS为学生情况表(XSQK)的性别列创建一个检查约束,使得性别的值为男或女
③用T-SQL语句为成绩表(XS_KC)的成绩列创建一个检查约束,使得成绩的值在(0~100)之间
ALTERTABLEXS_KCADDCONSTRAINTGRADEchkCHECK(成绩BETWEEN0AND100);
④用SSMS语句课程表(KC)的学时列创建一个缺省约束,缺省值为60
⑤用T-SQL语句课程表(KC)的学分列创建一个缺省约束,缺省值为2
ALTERTABLEKCADDCONSTRAINTFK_KC_DEFAULTDEFAULT2FOR学分
2.将如下数据分别转换成文本数据或Excel的格式,并分别将其导入数据库的各个表中:
专业
020101
杨颖
1980-7-20
计算机应用
计算机
88297147
020102
方露露
1981-1-15
020103
俞奇军
1980-2-20
信息管理
88297151
020104
胡国强
1980-11-7
020105
薛冰
1980-7-29
水利工程
水利系
88297152
020201
秦盈飞
1981-3-10
电子商务
经济系
88297161
020202
董含静
1980-9-25
88297062
020203
陈伟
1980-8-7
88297171
020204
陈新江
房建
学生情况表(XSQK):
课程表(KC):
101
计算机原理
陈红
45
102
计算方法
王颐
103
操作系统
徐格
60
4
104
数据库原理及应用
应对刚
75
5
105
网络基础
吴江江
106
高等数学
孙中文
90
107
英语
陈刚
108
VB程序设计
赵红韦
70
成绩表(XS_KC):
85
87
88
58
63
76
55
80
57
71
3.理解默认值的概念和作用
①用语句创建名为Xi_default,值为“计算机系”的默认值
CREATEDEFAULTXi_defaultAS'
计算机系'
②将默认值Xi_default绑定到学生表中的所在系的属性列上
sp_bindefault'
Xi_default'
'
XSQK.所在系'
③解除学生表所在系的属性列上的默认值
sp_unbindefault'
④删除默认值Xi_default
DropdefaultXi_default
4.理解规则的概念和作用
①用语句创建规则“rule_kkxq”,用以限制插入该规则所绑定的列中的值只能取1、2、3、4、5、6
CREATERULErule_kkxqAS@INTCLUOMNIN(1,2,3,4,5,6)
②将“rule_kkxq”规则绑定到课程表的开课学期属性上,并执行以下语句,看看能否正
常执行,为什么:
Insertinto课程表
Values(109,'
C语言'
'
李方'
8,64,4)
sp_bindrulerule_kkxq,'
KC.开课学期'
不能正常执行,因为数值8不在规则rule_kkxq所绑定的数据范围内
③不解除规则,能否将规则rule_kkxq直接删除?
不能,需先解除规则才能删除规则rule_kkxq:
sp_unbindrule'
DROPRULErule_kkxq
5.数据的安全性实验:
(1)设置身份验证模式
①写出查看当前SQLServer身份验证模式的过程,即查看当前SQLServer系统到底是采用Windows身份验证还是混合身份验证模式。
服务器->
右键"
属性"
->
选择"
安全性"
即可查看当前SQLServer系统的服务器验证模式
②将系统设置为Windows身份验证模式,重启SQLServer,使之生效并验证
③将系统设置为混合身份验证模式,重启SQLServer,使之生效并验证
⑵创建和管理登录账户
1)用对象资源管理器创建、查看、删除SQLServer登录账户
①分别创建两个登录帐户LoginA、LoginA1,其登录密码分别为:
123456、456,并指定LoginA登录默认的数据库为学生成绩数据库(XSCJ),指定LoginA1登录默认的数据库为master数据库。
②查看登录账户LoginA、LoginA1
③删除登录账户LoginA1
2)用T-SQL语句创建、查看、删除SQLServer登录账户
①用系统存储过程,分别创建两个登陆帐户LoginB、LoginB1,其登录密码分别为:
666、888,登录后然后所连接到的数据库均为学生成绩数据库(XSCJ)。
sp_addlogin'
LoginB'
666'
XSCJ'
LoginB1'
888'
②使用系统存储过程sp_helplogins查看SQLServer登录账户
注:
查看登录账户的格式:
execsp_helplogins
③使用系统存储过程sp_droplogin从SQLServer中将登录账户LoginB1删除
sp_droplogin@loginame='
⑶创建和管理数据库用户
1)用对象资源管理器创建、查看、删除数据库用户
①在学生成绩数据库(XSCJ)中创建数据库用户UserA,使其所对应的帐号为LoginA
②能否再创建一个数据库用户ABC,使其对应登录的帐号为LoginA,若不能写出其原因?
不能,同一个数据库的数据库用户只能有一个登录账户
“该登陆已用另一开立账户用户名”
2)用语句创建、查看、删除数据库用户
①用系统存储过程sp_grantdbaccess在学生成绩数据库(XSCJ)中创建一个数据库用户UserB,使其所对应的登录帐号为LoginB
sp_grantdbaccess'
UserB'
②用系统存储过程sp_helpuser查看数据库用户
sp_helpuser'
③用系统存储过程sp_revokedbaccess删除数据库用户ABC1
sp_revokedbaccess'
ABC1'
无法对用户'
执行删除,因为它不存在,或者您没有所需的权限。
⑷创建和管理角色
1)服务器角色的管理
①用对象资源管理器将登录帐户LoginA加到sysadmin的角色中。
②用系统存储过程sp_addsrvrolemember将登录帐户LoginB加到sysadmin的角色中。
sp_addsrvrolemember'
sysadmin
③用系统存储过程sp_dropsrvrolemember删除登录账户LoginA的服务器角色sysadmin
sp_dropsrvrolemember'
LoginA'
2)数据库角色的管理
①用对象资源管理器将数据库用户UserA添加到db_owner数据库的角色中
②用系统存储过程sp_addrolemember将数据库用户UserB添加到db_owner数据库角色中。
sp_addrolemember'
db_owner'
UserB
③用系统存储过程sp_droprolemember删除数据库用户UserB的db_owner数据库角色
sp_droprolemember'
3)用户自定义角色的管理
①在学生成绩数据库(XSCJ)中创建一个角色RoleB
CREATEROLERoleB
②将用户UserB加入到自定义的RoleB这个角色中
sp_addrolemember'
RoleB'
③将学生成绩数据库(XSCJ)中学生表的Select权限授予RoleB
GRANTSELECT
ONXSQK
TORoleB
④用帐户LoginB身份登陆,并学生成绩数据库(XSCJ)中执行
CreateTableTest(aavarchar(10))
Select*from学生情况表
Select*from成绩表
并查看以上各语句能否正常执行,为什么?
如何才能使不能执行的语句执行?
不行,因为UserB没有CreateTable权限
GRANTCREATETABLETOUserB
如果用帐号LoginA登陆,上面的语句能否执行。
可以
⑤从角色RoleB中去除用户UserB
⑥从学生成绩数据库(XSCJ)中删除用户UserB
sp_dropuserUserB
⑦从学生成绩数据库(XSCJ)中删除角色RoleB
sp_droproleRoleB
⑧从SQLServer中删除登陆帐户LoginB
sp_droplogin'
⑸权限的授予与回收
1)权限的授予
①把查询XSQK表的权限授予用户UserA
ONXSQK
TOUserA
②把对KC表全部操作权限授予用户UserA
GRANTSELECT,INSERT,UPDATE,DELETE
ONKC
③把对XS_KC表的查询权限授予所有用户
GRANTSELECT
ONXS_KC
TOPUBLIC
④把删除XSQK表和修改学生学号的权限授予用户UserA
GRANTDELETE
ONXSQK
TOUserA
⑤把插入XSQK表的权限授予用户UserA,并允许将此权限再授予其它用户
GRANTINSERT
WITHGRANTOPTION
⑥把在学生成绩数据库(XSCJ)中建立表的权限授予用户UserA
GRANTCREATETABLE
2)权限的回收
①撤销用户UserA修改学号的权限
REVOKEUPDATE(Sno)
FROMUserA
②撤销所有用户对XS_KC表的查询权限
REVOKESELECT
ONXS_KC
FROMPUBLIC
③撤销用户UserA对XSQK表的插入权限
REVOKEINSERT
FROMUserACASCADE
实训思考题
一个用户要访问数据库须要经过哪几个安全认证阶段?
答:
三个阶段及相应的安全认证过程:
第一阶段:
用户首先要登录到SQLServer实例。
在登录时,系统要对其进行身份验证,被认为合法才能登录到SQLServer实例。
第二阶段:
用户在每个要访问的数据库里必须获得一个用户账号。
SQLServer实例将SQLServer登录映射到数据库用户账号上,在这个数据库的用户账号上定义数据库的管理和数据对象的访问的安全策略。
第三阶段:
用户访问数据库。
用户访问数据库对象时,系统要检查用户是否具有访问数据库对象、执行动作的权限,经过语句许可权限的验证,才能实现对数据的操作。
简述登录账户和用户账户间区别与联系
登录账户是登录SQLServer实例的账户;
用户账户是访问数据库的账户.
用户、角色和权限的职能,以及它们之间的关系
1.权限
系统的所有权限信息。
权限具有上下级关系,是一个树状的结构。
2.
用户
应用系统的具体操作者,用户可以自己拥有权限信息,可以归属于0~n个角色,它的权限集是自身具有的权限、所属的各角色具有的权限、所属的各组具有的权限的合集。
它与权限、角色之间的关系都是n对n的关系。
3.
角色
可以对许多拥有相似权限的用户进行分类管理,具有上下级关系,可以形成树状视图,父级角色的权限是自身及它的所有子角色的权限的综合。
父级角色的用户、父级角色的组同理可推。
服务器角色有哪些,并分别简述其功能?
用户可以创建服务器角色吗?
服务器角色有:
sysadmin可以在SQLServer中执行任何活动。
serveradmin可以设置服务器范围的配置选项,关闭服务器。
setupadmin可以管理链接服务器和启动过程。
securityadmin可以管理登录和CREATEDATABASE权限,还可以读取错误日志和更改密码。
processadmin可以管理在SQLServer中运行的进程。
dbcreator可以创建、更改和除去数据库。
diskadmin可以管理磁盘文件。
bulkadmin可以执行BULKINSERT语句。
用户不可以创建服务器角色
数据库角色有哪些,并分别简述其功能?
用户可以创建数据库角色吗?
数据库角色有:
db_owner
在数据库中有全部权限。
db_accessadmin
可以添加或删除用户
ID。
db_securityadmin
可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin
可以发出
ALL
DDL,但不能发出
GRANT、REVOKE
或
DENY
语句。
db_backupoperator
DBCC、CHECKPOINT
和
BACKUP
db_datareader
可以选择数据库内任何用户表中的所有数据。
db_datawriter
可以更改数据库内任何用户表中的所有数据。
db_denydatareader
不能选择数据库内任何用户表中的任何数据。
db_denydatawriter
不能更改数据库内任何用户表中的任何数据。
用户可以创建数据库角色
6、什么是数据库的安全性,可以通过哪些措施来保证数据库的安全性?
数据库的安全性是指:
保护数据库以防止非法使用所造成的数据泄密、更改或破坏.
保证数据库的安全性的方法:
用户标识和鉴别、用户存取权限控制、定义视图、数据加密、安全审计以及事务管理和故障恢复等几类