某学生选课数据库,库中包括学生、课程和选课3个表,其表结构为: 学生(学号,姓名,性别,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩)。 用Transact—SQL完成下列操作。 1)建立学生选课数据库。 2)建立学生、课程

admin2013-03-12  63

问题 某学生选课数据库,库中包括学生、课程和选课3个表,其表结构为:
学生(学号,姓名,性别,年龄,所在系);
课程(课程号,课程名,先行课);
选课(学号,课程号,成绩)。
用Transact—SQL完成下列操作。
1)建立学生选课数据库。
2)建立学生、课程和选课表。
3)建立各表以主码为索引项的索引。
4)建立学生性别只能是“男”或“女”的规则,性别为“男”的缺省,并将它们绑定到学生表上。
5)建立在对选课表输入或更改数据时,必须服从参照完整性约束的INSERT和UPDATE触发器。
6)建立在删除学生记录时,同时也要把相应的选课记录删除的触发器。
7)列出学生学号、姓名及学习情况。学习情况用好、较好、一般或较差表示。当平均成绩大于85分时,学习情况为好;当平均成绩在70—85分之间。学习情况为较好;当平均成绩在60—70分之间。学习情况为一般;当平均成绩在60分以下,学习情况为较差。

选项

答案1)CREATE DATABASE学生选课库ON PRIMARY (NAME:学生选课库,FILENAME=‘c:\msSQL\data\学生选课.mdf’ SIZE=4MB,MAX—SIZE:6MB,FILEROWHT:2MB) GO 2)CREATE TABIJE学生(学号CHAR(10)Pill—MARY KEY CIMSTERED,姓名 CHAR(8),性别CHAR(2),年龄 SMALLlNT,所在系 VARCHAR(50)) GO CREATE 。TAB[.E 课程(课程号CHAR(IO)PRIMARY KEY CLUSTERED 课程名VARCHAR(50),先行课 VARCHAR(50))GO CRE—ATE。I’ABLE 选课(学号 CHAR(10),课程号VARCHAR(50),成绩 SMALlJNT,CONSTRAINT cPRIMARY KEY(学号课程,课程号),CONSTRAINT C2 PRIMARY KEY(学号)REFERENCES 学生(学号),CONSTRAINT FOREIGN KEY(课程号) REFFRENCES课程(课程号)) GO 3)CREATE INDEX student—ind ON 学生(学号)GO CREATE INDEX class—ind ON课程(课程号) GO CREATE INDEX select—ind ON选课(学号.课程号)GO 4)CREATE RULE value~rule ASVAI,UE lN(‘男’,‘女’) GO CREATE DEFAULT性别缺省.AS‘男’GO EXEC sp—bindrule‘value—rude’,‘学生.性别’GO EXEC 8p—binddefault‘性别缺省’,‘学生.性别’GO 5)CREATE TRIGGER sc—insert ON 选课 FORINSEW[’AS IF(SELECT COUNT(*)FROM学生.inserted,课程WHERE学生.学号=inserted.学号AND课程.课程号=in~rted.课程号)=0 ROLLBACK TRANSACTION GO CREATE TRIGGER sc—up—date ON FOR UPDATE AS IF(SELECT COUNT(})FROM学生,updated,课程WHERE学生.学号=updated.学号AND课程.课程号=updated.课程号)=0 ROLLBACK TRANSACTION GO 6)CREATE TRIGGER delete—all ON学生 FORDELETE As DELETE FROM 选课 WHERE选课.学号=deleted.学号GO 7)SELECT选课.学号,学生.姓名,学习情况中:CASE WHEN AVG(成绩)>=85 THEN‘好’ WHEN AVG(成绩)>=70 AND AVG(成绩)<85THEN‘较好’ WHEN AVG(成绩)>=60 AND AVG(成绩)<70 THEN‘一般’ WHEN AVG(成绩)<60 THEN‘较差’ FROM学生选课WHERE学生.学号=选课.学号GROUP BY选课.学号GO

解析 主要考查了T—SQL.的数据查询功能、数据定义功能和数据操纵功能。与标准SQL类似。
转载请注明原文地址:https://kaotiyun.com/show/nDAZ777K
0

最新回复(0)