问答题
某数据库中有关系Student(Sno,Sname,Ssex,Sage,Sdept),各属性分别表示学号,姓名,性别,年龄以及所在的系;Course(Cno,Cname,Credit)属性分别表示课程号,课程名,学分;SC(Sno,Cno,Grade)为学生选课表,各属性分别表示为学号,课程号和分数;完成下列的SQL语句:
①查询其他系中比计算机科学(CS)某一学生年龄小的学生姓名和年龄。
②建立信息系(IS)选修了1号课程的学生的视图IS_S1
③定义一个AFTER的行级触发器Print_f,当往成绩表(SC)中插入的成绩小于60就打印不及格
【正确答案】
【答案解析】①SELECT Sname,Sage
FROM Student
WHERE Sage<ANY(SELECT Sage
FROM Student
WHERE Sdept="CS")
AND Sdept<>"CS"
②CREATE VIEW IS_S1(Sno,Sname,Grade) AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Sdept="IS" AND
Student.Sno=SC.Sno AND
SC.Cno="1";
③CREATE TRIGGER Print_f
AFTER INSERT ON Student
FOR EACH ROW
AS BEGIN
IF(new.Grade<60)THEN
PRINT"不及格"
END IF
END;
[解析] 创建视图用CTREATE VIEW,而创建触发器是用CREATE TRIGGER,触发器分为行级触发器和语句级触发器,FOR EACH ROW是行级触发器。