数据库系统及应用教程(SQL Server 2008)习题1-8章答案 联系客服

发布时间 : 星期日 文章数据库系统及应用教程(SQL Server 2008)习题1-8章答案更新完毕开始阅读6252ab765901020207409ce3

WHERE SNAME=@S_NAME

GO

6.在教学管理数据库中,创建一个名为GRADE_INFO的存储过程,其功能是查询某门课程的所有学生成绩。显示字段为:CNAME,SNO,SNAME,GRADE。

解:

USE JXGL GO

CREATE PROCEDURE GRADE_INFO @C_NAME VARCHAR(50)

AS

SELECT CNAME,SC.SNO,SNAME,GRADE

FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND CNAME=@C_NAME

GO

7.在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程!”的提示信息。

解:

CREATE TRIGGER TR_C_INSERT ON C FOR INSERT

AS

PRINT '你插入了一门新的课程!'

GO

8-8 在教学管理数据库中,创建一个AFTER触发器,要求实现以下功能:在SC表上创建一个插入、更新类型的触发器TR_GRADE_CHECK,当在GRADE字段中插入或修改成绩后,触发该触发器,检查分数是否在0~100之间。

解:

CREATE TRIGGER TR_GRADE_CHECK ON SC FOR

INSERT,UPDATE

AS

DECLARE @SC_grede tinyint SELECT @SC_grade=SC.grade FROM SC

IF (@SC_grade NOT BETWEEN 0 AND 100)

PRINT '你插入的成绩不在0~100之间!'

GO

9.在教学管理数据库中,创建用户定义函数C_MAX,根据输入的课程名称,输出该门课程最高分数的同学学号。

解:

USE JXGL GO

25

CREATE FUNCTION C_MAX (@C_NAME CHAR(8)) RETURNS REAL AS

BEGIN

DECLARE @S_MAX REAL SELECT @S_MAX=MAX(GRADE)

FROM SC JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME RETURN @S_MAX

END GO

10.在教学管理数据库中,创建用户定义函数SNO_INFO,根据输入的课程名称,输出选修该门课程的学生学号、姓名、性别、系部、成绩。

解:

USE JXGL GO

CREATE FUNCTION SNO_INFO (@C_NAME CHAR(8)) RETURNS TABLE AS

RETURN(SELECT S.SNO,SNAME,SEX,SDEPT,GRADE

FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME)

GO

26