数据库实验1-6参考答案 联系客服

发布时间 : 星期三 文章数据库实验1-6参考答案更新完毕开始阅读0be4002a0066f5335a812144

alter table student add check(sdept in('计算机系','数学系','信息系','物理系'))

4、触发器

(1)定义一个触发器,其基本功能是在SC表中增加或修改一个选课记录时,检查该课程的选课人数是否超过限定(可自行定义一个限定值,根据表中数据的情况而定)。若超过限定值,则拒绝操作。 触发器代码:

CREATE TRIGGER trig1 ON SC FOR INSERT,UPDATE AS

IF(SELECT COUNT(*) FROM SC WHERE CNO=(select CNO from INSERTED))>10 BEGIN

PRINT '选课人数超过上限' ROLLBACK END

(2)定义一个触发器,当删除Student表中数据时,先将删除的数据插入到另一个专门存放已删除数据的表中(实验时,首先定义一个与Student表结构相同的表用来存放删除的数据),然后执行删除操作。 触发器代码:

select top 0 * into s1 from student

create trigger trig2 on student for delete as

insert into s1 select * from deleted

5、用户权限控制

(1)在自己数据库中添加其他用户。

(2)为添加的用户进行授权和权限收回。相互检查是否获得了相应的权限。

sp_adduser 'rj107','rj107'

grant select on student to rj107

21

grant select,update(cname) on course to rj107 revoke select on course from rj107 sp_dropuser 'rj107'

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩 22

实验六 视图与存储过程

一、实验目的

1、掌握视图的定义及使用

2、掌握存储过程的建立和调用

二、实验预习

1、基本表与视图有什么不同?哪种视图可以更新?

2、视图定义语句格式:

3、什么是存储过程,其作用主要是什么?

三、实验内容和要求

1、视图(将执行的SQL语句写在下面)

(1)建立视图IS_STUDENT,视图中包含信息系全体学生的基本信息。 CREATE VIEW IS_STUDENT AS

SELECT * FROM STUDENT WHERE Sdept='信息系'

(2)建立视图CJ_STUDENT,视图中包含所有成绩不及格的学生的学号,姓名,课程名,成绩。

CREATE VIEW CJ_STUDENT AS

SELECT Student.Sno,Sname,Cname,Grade FROM STUDENT,Course,SC WHERE Grade<60 and Student.Sno=SC.Sno and Course.Cno=SC.Cno

23

(3)建立视图AVG_CJ,视图包括学生的学号以及他们的平均成绩,按成绩降序排列。

CREATE VIEW AVG_CJ(Sno,Gavg) AS

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno

SELECT * FROM AVG_CJ ORDER BY Gavg DESC

(4)修改视图IS_STUDENT,将年龄均加1。观察基本表Student中相应的数据是否发生变化。

UPDATE IS_STUDENT SET Sage=Sage+1

相应变化

(5)在视图IS_STUDENT中插入新的记录,学号为9531103,姓名为张玉,女,21岁。

INSERT INTO IS_STUDENT

VALUES('9531103','张玉','女',21,'')

(6)根据视图AVG_CJ,查询平均成绩大于60的学生的学号。 SELECT Sno FROM AVG_CJ WHERE Gavg>60

2、存储过程

(1)建立存储过程student_Grade1,功能是查询计算机系学生的成绩,包括学号,姓名,课程名,成绩,按学号升序排序。 存储过程代码:

CREATE PROC STUDENT_GRADE1 AS

SELECT STUDENT.SNO,SNAME,CNAME,GRADE FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO

AND SC.CNO=COURSE.CNO AND SDEPT='计算机系' ORDER BY STUDENT.SNO ASC

执行存储过程代码:EXEC STUDENT_GRADE1

(2)建立存储过程student_Grade2,功能是根据参数提供的系名,查询该系学生的成绩,包括学号,姓名,课程名,成绩,按学号升序排序。

24