第一范文网 - 专业文章范例文档资料分享平台

华工数据库实验题 (2)

来源:用户分享 时间:2020-06-22 本文由街风晚凉 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

IF(EXISTS(SELECT * FROM Students WHERE SNAME=@SNAME) AND EXISTS (SELECT * FROM Courses WHERE CNAME=@CNAME)) BEGIN

Insert into SC

select (SELECT TOP 1 SNO FROM Students WHERE SNAME=@SNAME), (SELECT TOP 1 CNO FROM Courses WHERE CNAME=@CNAME), @GRADE

END

3) PK_SC,FK_SC_SNO,FK_SC_CNO) (选做)

要求:首先删除SC中所有主键和外键定义,用触发器实现表SC上的主键(SNO,CNO)和外键SNO,CNO的约束定义。

3.为Student数据库设计安全机制。

要求:在该数据库系统中,有三类用户:

1) 学生,权限包括:查询所有的课程信息,根据学号和课程号来查询成绩。

但不允许修改任何数据。(必做)

只能查询自己的成绩,不能查询别人的成绩。(选做)

2)老师:权限包括:查询有关学生及成绩的所有信息,有关课程的所有信息,但不允许修改任何数据。

答:

CREATE TRIGGER secure_student BEFORE UPDATE OR DELETE ON database BEGIN

IF((select user from dual)='老师') THEN

RAISE_APPLICATION_ERROR(-20506,

'您没有权限对学生表进行修改.')

3)教务员:权限包括:查询和修改任何有关学生和课程的信息,但不允许查询和修改数据库中其它任何表,视图等数据库对象。 答:CREATE TRIGGER secure_student

BEFORE UPDATE OR DELETE ON database EXCEPT Students BEGIN

IF((select user from dual)='教务员') THEN

RAISE_APPLICATION_ERROR(-20506,

'您没有权限进行修改.')

要求:安全控制必须仅由数据库一端来实现,不考虑由应用程序来控制。 为此,需要创建三个用户,登录时密码验证;分别授予各类权限,并测试权限的控制是否有效。

实验三:SQL编程 实验要求:

1.采用实验一的建库脚本和数据插入脚本创建Student数据库。 2.在数据库中创建以下存储过程:

1) Add_Student (SNO,SNAME,SEX,BIRTHDAY,HEIGHT,DEPT) 要求:根据输入参数,插入一条学生记录。

答:create procedure Add_Student @SNO varchar(100), @SNAME varchar(100), @SEX varchar(10), @BIRTHDAY datetime, @HEIGHT decimal, @DEPT varchar(100) as

insert into Students values( @SNO, SNO, @SNAME, @SEX, @BIRTHDAY, @HEIGHT, @DEPT

)

2) Upd_Grade (SNO, CNO, GRADE)

要求:根据输入参数,修改某学生选课的成绩。 答:create procedure Upd_Grade

@SNO varchar(100), @CNO varchar(100), @GRADE INT as

UPDATE SC set SNO=@SNO, CNO=@CNO, GRADE=@GRADE

where SNO=@SNO and CNO=@CNO

3) Disp_Student (SNO,SUM_CREDIT output,AVG_GRADE output) 要求:根据SNO参数显示该学生的有关信息,包括:

a)学号,姓名,性别,年龄,身高,系别,所有选修的课程及成绩; b)显示输出参数SUM_CREDIT(表示选修课程的总学分)及AVG_GRADE (表示3学分以上的课程的平均成绩)。

答:create procedure Upd_Grade

@SNO varchar(100), @SUM_CREDIT INT output, @AVG_GRADE int output

as

select * from Students s inner join SC on sc.SNO=s.SNO

inner join Courses c on sc.CNO=c.CNO where s.SNO=@SNO

select @SUM_CREDIT=SumCredit from Credits where SNO=@SNO

select @AVG_GRADE=avg(SC.GRADE) from Students s inner join SC on sc.SNO=s.SNO where s.SNO=@SNO and SC.GRADE>3 group by s.SNO

4) CAL_GPA (SNO,GPA output)

要求:根据SNO参数, 输出并显示该学生的GPA值。计算方法如下: GRADE(G) GRADEPOINT(GP) G>=85 4 85>G>=75 3 75>G>=60 2 60>G 1

GPA= (∑GP*CREDIT)/ ∑CREDIT) 答:create procedure CAL_GPA

@SNO varchar(100), @GPA decimal output as

declare @SUM_CREDIT int,@AVG_GRADE int,@All_CREDIT int select @SUM_CREDIT=SumCredit from Credits where SNO=@SNO

select @AVG_GRADE=avg(case when SC.GRADE>=85 then 4 when 85>SC.GRADE and SC.GRADE>=75 then 3 when 75>SC.GRADE and SC.GRADE>=60 then 2 when 60>SC.GRADE then 1 end) from Students s inner join SC on sc.SNO=s.SNO where s.SNO=@SNO and SC.GRADE>3 group by s.SNO

select @GPA=(@AVG_GRADE*@SUM_CREDIT)/@All_CREDIT

3.选做题:

使用其它程序设计语言编程,连接数据库并提交SQL语句,显示查询结果。 要求:实现上题中的第3)小题要求,设计一个图形界面来输入查询的参数SNO,及显示查询的结果。(如采用VC++,VB等)

实验四:事务的管理(选作) 实验要求:

1. 采用实验一的建库脚本和数据插入脚本创建Student数据库。 2. 测试事务隔离级别,要求:

分别设置不同的隔离级别,包括:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL READ ONLY;

两个并发事务交错执行的程序,能分别显示每种隔离级别下,是否出现丢失更新,脏读,读值不可复现以及幻象四种情况。 3.备份与恢复

? 备份数据库 答:

BACKUP DATABASE test TO disk = 'c:\\test'

? 删除sc表

答:DROP TABLE SC

? 恢复到删除之前 答:

USE master GO

RESTORE DATABASE test_wt FROM disk = 'c:\\test_wt'

GO

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新幼儿教育华工数据库实验题 (2)全文阅读和word下载服务。

华工数据库实验题 (2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1093978.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top