问答题 已知关系模式:S(SNO, SNAME)学生关系,SNO为学号,SNAME为姓名;C(CNO, CNAME, CTEACHER)课程关系,CNO为课程号,CNAME为课程名,CTEACHER为任课教师;SC(SNO, CNO,SCGRADE)选课关系,SCGRADE为成绩。
问答题 找出没有选修过“李明”老师讲授课程的所有学生姓名;
【正确答案】SELECT SNAME FROM S WHERE NOT EXISTS( SELECT * FROM SC, C WHERE SC. CNO=C. CNO AND CNAME='李明' AND SC. SNO=S. SNO)
【答案解析】
问答题 列出有两门以上(含两门)不及格课程的学生姓名及其平均成绩;
【正确答案】select s. sno, avg(scGrade) from S, SC where s. sno in( select sc. sno from sc inner Join c on c. cno=sc. cno where sc. scGrade<60 group by sno having count(*)>=2) and s. sno=sc. sno group by s. sno
【答案解析】
问答题 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名。
【正确答案】select S. SNO, S. SNAME from sc, s where cno=1 and sc. sno in(select sno from sc where cno=2)and s. sno=sc. sno
【答案解析】
问答题 在SQL Server 2000中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售时间为主码,销售价格为本次销售商品的单价。现要求每当在销售表中插入前4列数据时(假设一次只插入一行数据),系统自动计算本次销售产生的利润,并将该利润赋给销售表的第5列“本次利润”。请编写实现上述功能的后触发型触发器代码。
【正确答案】CREATE TRIGGER update_sale ON 销售表 FORUPDATE FOREACHROW ASBEGIN UPDATE Table_sale SET 本次利润=销售价格-(SELECT 进货价格 FROM 产品表) END CREATE TRIGGER Insert_sale ON 销售表 FOR INSERT FOREACHROW ASBEGIN INSERT INTO 销售表 VALUES(new. 商品号,new. 销售时间,new. 销售数量,new. 销售价格) END
【答案解析】