问答题 学校教学箭理数据席中有三个基本表:
S({{U}}SNO{{/U}},SNAME,SDEPT,SAGE)
C({{U}}CNO{{/U}},CNAME,TEACHER)
SC({{U}}SNO{{/U}},CNO,GRADE)
各属性含义为:SNO学号,SNAME学生姓名,SDEPT所在系,SAGE年龄;
CNO,课程号,CNAME课程名,TEACHER教师;GRADE成绩。
打下划线表示为各关系的关键字。SC巾的属性SNO和CNO也为外码,参照S和C的关键字。
问答题 写出此三个关系的SQL定义语句;
【正确答案】Create table S(SNO CHAR(9)PRIMARY KEY, SNAME CHAR(8), SDEPT CHAR(40), SAGE NUMBER(3)); Create table C(CNO CHAR(4)PRIMARY KEY, CNAME CHAR(30), TEACHER CHAR(8)); Create table SC(SNO CHAR(9), CNO CHAR(4), GRADE NUMBER(3), PRIMARY KEY(SNO,CNO#), FOREIGN KEY(SNO) REFERENCES S(SNO), FOREIGN KEY(CNO) REFERENCES C(CNO));
【答案解析】
问答题 要求存删除S中一个元组时,把关系SC中具有相同SNO值的元组全部删除,则SC的定义心作如何修改:若要求修改S中的SNO时,SC中相同的SNO值也要修改,则SC应应作如何修改。
【正确答案】要求在删除S中一个元组时,把关系SC中具有相同SNO值的元组全部删除,则SC定义应作修改如下: FOREIGN KEY(SNO) REFERENCES S(SNO)oN DELETE RESTRICT; 若要求修改S中的SNO时,SC中相同的SNO值也要修改,则SC定义应作修改如下: FOREIGN KEY(SNO)REFERENCES S(SNO)ON UPDATE CASCADE
【答案解析】
问答题 设计一个触发器,使得在修改SC的成绩时,要求修改后的成绩一定不能比原成绩低。
【正确答案】CREATE TRIGGER up_permit afterupdate of G on SC REFERENCING old row as orow.new as llrow For each row When(orow.G>nrow.G) Update SC SET G=OROW.G WHERE CNO=nrow.CNO
【答案解析】