数据库实验报告三_第1页
数据库实验报告三_第2页
数据库实验报告三_第3页
数据库实验报告三_第4页
数据库实验报告三_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库实验报告三数据库的安全性和完整性宋世波 | 计算机1406班 学号:20143753 | 2017/5/15实验题目:数据库的安全性和完整性实验内容及要求:一 熟练掌握SQL(续)1. 修改表Students,在其中加入一个字段性别sex char(1)2. 创建索引:在Students表的Sno上创建唯一聚簇索引, 在SC表的(Sno, Cno)上创建唯一索引. 查询Students表的内容, 记录的顺序有变化吗? 查询SC表的内容, 记录的顺序有变化吗?3. 创建视图§ 创建计算机系学生视图CS_Students,其中包括学号、年龄和性别。带with check opiti

2、on子句不带with check opition子句时各插入一计算机系学生记录, 通过视图查询插入的记录,结果如何?通过表Students查询插入的记录,查看所在系字段上的值?§ 创建一视图,表示学生的平均成绩,其中包括Sno,avgGrade。通过该视图插入一学生姓名和平均成绩,结果如何?通过该视图查找平均成绩在90分以上的学生的学号和平均成绩,结果又如何?二 了解和使用安全子系统1、将sql server的一合法帐户(user60)加入到你的数据库当中来,并给其授权,使之:具有创建表的权限具有对Students表查询的权限具有对Studetns表的年龄字段修改的权限2、用user

3、60/user60进入系统,完成权限验证:创建表dept(sd,mn,addr)创建视图s_view(Sno,Sage)在Students表上,实现select * from Students在course表上,实现select * from courseupdate Studetns set Sage=Sage+1update Students set Sdept=CS3、你是数据库的dbo,你来查看dept表,结果如何?使用set user命令使自己成为user60后,查看dept表,结果如何?三 完整性定义和检查1、创建表Studetns,要求学生的年龄在16和25岁之间,并且所在系的缺

4、省取值为CS在Studetns表上插入一学生记录(9921,cccc,MA,23,f)在Studetns表上插入一学生记录(9922,ddd,MA,27,m)在Studetns表上插入一学生记录(9923,eeeee,21,m)在Studetns表上插入一学生记录(9922,ddd,MA,23,m)2、创建表course,要求课号作为主键在course表上插入一课程记录(c9,40,cname1,1)在course表上插入一课程记录(c9,40,cname2,1)在course表上插入一课程记录(null,25,canme3,2)结果如何?3、修改表Studetns,指定学号为主键,然后插入一

5、记录(9908,shang,CI,20)插入一记录(9908,shang,CI,20)插入一记录(,liang,CS,18)插入一记录(,an,CS,19)结果如何?3、创建sc表,要求表sc中的学号参照表Studetns中的学号,sc中的课号参照course中的课号。参照约束创建完成后,向这三个表插入数据。先在sc表插入一个选课记录,看看有什么情况发生?先删除sc中的某个记录,看看有什么情况发生?将Studetns表中的学号9906改为9907,看看有什么情况发生?实验过程:一 熟练掌握SQL(续)1. 修改表Students,在其中加入一个字段性别sex char(1)alter 

6、;table Students add sex char(1); 2. 创建索引:在Students表的Sno上创建唯一聚簇索引, 在SC表的(Sno, Cno)上创建唯一索引. 查询Students表的内容, 记录的顺序有变化吗? 查询SC表的内容, 记录的顺序有变化吗?Create unique clustered index Student_sno on Students(Sno); Create unique index Sno_cno&

7、#160;on SC(Sno,Cno); Students表的内容, 记录的顺序有变化SC表的内容, 记录的顺序没有变化 3.创建视图§ 创建计算机系学生视图CS_Students,其中包括学号、年龄和性别。带with check opition子句不带with check opition子句时各插入一计算机系学生记录, 通过视图查询插入的记录,结果如何?通过表Students查询插入的记录,查看所在系字段上的值?create view CS_students1 as select Sno,Sage,sex from Students where Sdept=&#

8、39;CS' with check optionINSERT INTO CS_students1VALUES('20133333',19,'m');带with check opition子句的情况下插入失败create view CS_students2 as select Sno,Sage,sex from Students where Sdept='CS'§ 创建一视图,表示学生的平均成绩,其中包括Sno,avgGrade。通过该视图插入一学生姓名和平均成绩,结果如何?通过该视图查找平均成绩在90分以上的学生的学号和平均成绩

9、,结果又如何?create view Stuavggrade(sno,avggrade)as select Sno,avg(Grade)from SC group by SC.snoInsert into Stuavggradevalues('20143333',88)插入有错误,因为有聚簇索引存在select sno,avggradefrom Stuavggradewhere avggrade>=90二 了解和使用安全子系统1、将sql server的一合法帐户(user60)加入到你的数据库当中来,并给其授权,使之:1.具有创建表的权限2.具有对Students表查询

10、的权限3.具有对Studetns表的年龄字段修改的权限SP_grantdbaccess 'user63'grant Create table to user63;grant update(Sage) on Students to user63;命令成功执行。2、用user60/user60进入系统,完成权限验证:创建表dept(sd,mn,addr)创建视图s_view(Sno,Sage)在Students表上,实现select * from Studentsselect * from dbo.Students在course表上,实现select * from coursese

11、lect * from dbo.Coursesupdate Studetns set Sage=Sage+1update dbo.Students set Sage=Sage+1select Sage from dbo.Studentsupdate Students set Sdept=CSupdate dbo.Students set Sdept='CS'select * from dbo.Students3、你是数据库的dbo,你来查看dept表,结果如何?使用set user命令使自己成为user60后,查看dept表,结果如何?三 完整性定义和检查1、创建表Studet

12、ns,要求学生的年龄在16和25岁之间,并且所在系的缺省取值为CS1.在Studetns表上插入一学生记录(cccc,MA,23,f)2.在Studetns表上插入一学生记录(9922,ddd,MA,27,m)3.在Studetns表上插入一学生记录(9923,eeeee,21,m)4.在Studetns表上插入一学生记录(9922,ddd,MA,23,m)CREATE TABLE Students(Sno CHAR(9) not null,Sname CHAR(20) ,Sdept char(20) default'CS',Sage int check(Sage>=16

13、 and Sage<=25),Ssex char(2);insert into Students(Sno,Sname,Sdept,Sage,Ssex)values('9921','cccc','MA',23,'f');insert into Students(Sno,Sname,Sdept,Sage,Ssex)values('9922','ddd','MA',27,'m');insert into Students(Sno,Sname,Sage,Ssex)val

14、ues('9923','eeeee',21,'m');insert into Students(Sno,Sname,Sdept,Sage,Ssex)values('9922','ddd','MA',23,'m');数据表创建完成,插入数据第二条失败,其余三条均成功。2、创建表course,要求课号作为主键1.在course表上插入一课程记录(c9,40,cname1,1)2.在course表上插入一课程记录(c9,40,cname2,1)3.在course表上插入一课程记(null,

15、25,canme3,2)结果如何?create table course(cno char(10) primary key,ctime char(10),cname char(20),cscore char(10);insert into course(cno,ctime,cname,cscore)values('c9',40,'cname1',1);insert into course(cno,ctime,cname,cscore)values('c9',40,'cname2',1);insert into course(cno

16、,ctime,cname,cscore)values(null,25,'cname3',2);数据表创建成功,插入数据过程中,第一条插入成功,第二条第三条违反主键约束,插入均失败。3、修改表Studetns,指定学号为主键,然后1.插入一记录(9908,shang,CI,20)2.插入一记录(9908,shang,CI,20)3.插入一记录(,liang,CS,18)4.插入一记录(,an,CS,19)结果如何?ALTER TABLE Students ADD CONSTRAINT pk_Sno PRIMARY KEY(Sno)insert into Students(Sno,

17、Sname,Sdept,Sage)values('9908','shang','CI',20);insert into Students(Sno,Sname,Sdept,Sage)values('9908','shang','CI',20);insert into Students(Sno,Sname,Sdept,Sage)values('','liang','CS',18);insert into Students(Sno,Sname,Sdept,Sage)values('','an','CS',19);数据表修改主键成功,插入数据过程中,第一条第三条数据插入成功,另外两条违反主键约束,插入失败。4、创建sc表,要求表sc中的学号参照表Studetns中的学号,sc中的课号参照course中的课号。参照约束创建完成后,向这三个表插入数据。create table SC(Sno char(9),Cno char(10),Grade int,foreign key(Sno) references Students(Sno),foreign key(Cno) references cour

温馨提示

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

评论

0/150

提交评论