【正确答案】1)CREATE DATABASE 学生选课库ON PRIMARY (NAME=学生选课库,FILENAME=‘C:/msSQL/data/学生选课.mdf’SIZE =4MB,MAX-SIZE=6MB,FILEROWHT=2MB) CO 2)CREATE TABLE 学生(学号CHAR(10)PRI-MARY KEY CLUSTERED,姓名 CHAR(8),性别CHAR(2),年龄 SMALLINT,所在系 VARCHAR(50))GO CREATE TABLE 课程(课程号CHAR(10)PRIMARY KEY CLUSTERED 课程名VARCHAR(50),先行课 VARCHAR(50))GO CRE-ATE TABLE 选课(学号 CHAR(10),课程号VARCHAR(50),成绩 SMALLINT,CONSTRAINT C1 PRIMARY KEY(学号课程,课程号),CONSTRAINT C2 PRIMARY KEY(学号)REFERENCES 学生(学号),CONSTRAINT FOREIGN KEY(课程号)REFERENCES课程(课程号))GO 3)CREATE INDEX student_ind ON 学生(学号)GO CREATE INDEX class_ind ON 课程(课程号)GO CREATE INDEX select_ind ON选课(学号,课程号)C0 4)CREATE RULE value_rule AS @ VALUF IN(‘男’,‘女’)CO CREATE DEFAULT性别缺省AS‘男’ GO FJXEC sp_bindrule‘value_rude’,‘学生.性别’ GO EXEC sp_binddefault ‘性别缺省’,‘学生.性别’ GO 5)CREATE rFRIGCER sc_insert ON 选课 FOR INSERT AS IF(SELECT COUNT(*)FROM学生,insened,课程 WHERE 学生,学号=inserted.学号AND课程,课程号=inserted.课程号)=0 ROLL-BACK TRANSACTION GO CREATE TRICGER sc_up-date ON FOR UPDATE AS IF (SELECT COUNT(*) FROM学生,updated,课程WHFRE学生.学号=updated.学号AND课程’.课程号=updated.课程号)=0 ROLLBACK TRANSACTION GO 6)CREArrE TRICGER delete_all ON 学生 FORDELETE AS DELETE FROM 选课 WHERE选课,学号= deleted.学号GO 7)SELECT选课,学号,学生,姓名, 学习情况中=CASE WHEN AVC(成绩)>=85 THEN‘好’WHFN AVG(成绩)>=70 AND AVG(成绩)<85THEN ‘较好’ WHEN AVG(成绩)>=60 AND AVG(成绩)<70 THEN‘一般’ WHEN AVG(成绩)<60THEN ‘较差’ FROM学生选课 WHERE学生.学号=选课.学号CROUP BY选课.学号GO