文档详情

万常选版数据库系统原理与设计第9章课后习题答案.pdf

发布:2025-02-04约1.29万字共8页下载文档
文本预览下载声明

万常选版数据库系统原理与设计第9章课后习题答案--第1页

USEScoreDB

GO

--9.6在学生成绩管理数据库ScoreDB中完成。

--(1)在班级表Class中,分别使用列级和元组级约束保证班级人数classNum属性的取值在

(0,50)之间。

--为避免误删Class表的数据,另建两表演示,演示后删除

--列级约束

CREATETABLEClass1(

classNochar(6)PRIMARYKEY,/*班级编号*/

classNamevarchar(30)NOTNULL,/*班级名称*/

institutevarchar(30)NOTNULL,/*所属学院*/

gradesmallintNOTNULL/*年级*/

DEFAULT0,

classNumtinyintNULL/*班级人数*/

CHECK(classNumgt;=0ANDclassNumlt;=50)

)

--元组级约束

CREATETABLEClass2(

classNochar(6)PRIMARYKEY,/*班级编号*/

classNamevarchar(30)NOTNULL,/*班级名称*/

institutevarchar(30)NOTNULL,/*所属学院*/

gradesmallintNOTNULL/*年级*/

DEFAULT0,

classNumtinyintNULL,/*班级人数*/

CONSTRAINTCK_Class_classNumCHECK(classNumgt;=0ANDclassNumlt;=50)

)

--删除演示表

DROPTABLEClass1

DROPTABLEClass2

GO

--(2)在学生表Student中,限制籍贯为上海或北京的学生的年龄必须在17岁以上。

--需要使用触发器

CREATETRIGGERStudent_birthday

ONStudent

FORINSERT,UPDATE

AS

IFEXISTS(SELECT*FROMinsertedWHEREYEAR(GETDATE())-YEAR(birthday)lt;17)

ROLLBACK

GO

--(3)对于某门课程,保证如果没有选修其先修课程,则不能选修该课程。

万常选版数据库系统原理与设计第9章课后习题答案--第1页

万常选版数据库系统原理与设计第9章课后习题答案--第2页

CREATETRIGGERScore_courseNo

ONScore

FORINSERT

AS

IFNOTEXISTS(SELECT*FROMScoreWHEREcourseNo=(

SELECTcourseNoFROMCourseWHEREpriorCourse=(SELECTcourseNoFROMinserted)))

ROLLBACK

GO

--(4)如果在学生表中修改了学号,则自动修改成绩表中的学号。

CREATETRIGGERStudent_studentNo

ONStudent

显示全部
相似文档