资源描述:
《sqlserver的一些练习》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、建立S_T数据库1.使用下面语句:CREATEDATABASES_T2.用菜单建立二、用CREATETABLE语句建立Student、Course和SC三张表(参见教材P82)1.Student(Sno,Sname,Ssex,Sage,Sdept)要求:Sno为主码,Sname取唯一值USES_TCREATETABLEStudent(SnoVARCHAR(9)PRIMARYKEY,/*列级完整性约束条件*/SnameVARCHAR(20)UNIQUE,/*Sname取唯一值*/SsexVARCHAR(2),SageINT,SdeptVARCHAR(20));2.Cour
2、se(Cno,Cname,Cpno,Ccredit)要求:Cno是主码;Cname不能为空;Cpno为先修课程编号,参照本表的CnoCREATETABLECourse(CnoVARCHAR(4)PRIMARYKEY,CnameVARCHAR(40)NOTNULL,CpnoVARCHAR(4),CcreditINT,FOREIGNKEY(Cpno)REFERENCESCourse(Cno));3.SC(Sno,Cno,Grade)要求:主码是Sno和Cno;Sno参照Student表中的Sno;Cno参照Course表中的CnoCREATETABLESC(SnoVARCHAR
3、(9),CnoVARCHAR(4),GradeINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno));一、用DROPTABLE语句将之前建立的三张表删除SQL Server 不支持 drop table ... cascade 语句,用户需要自己手动删除那些引用删除表的表。所以请注意删除表的顺序DROPTABLESC;DROPTABLEStudent;DROPTABLECourse;二、用菜单建立上面要求的三张表,在关系图中建立外码
4、参照关系。一、修改这三张表1.在Course表中加入一个属性列Cdept,记录开课的系名ALTERTABLECourseADDCdeptVARCHAR(20);2.增加课程名称必须取唯一值的约束条件ALTERTABLECourseADDUNIQUE(Cname);3.取消Student表中的Sname取唯一值的约束ALTERTABLEStudentDROPCONSTRAINT索引名称;说明:SQLSERVER不支持DROPUNIQUE,在表的设计窗口中查询索引名称,然后使用上面的语句。4.在表Student的设计窗口中,将Sage的默认值设置为0二、按照书上的数据,填充数据
5、表。三、用SQL的查询语句表达下列查询:1.检索李勇同学所学课程的课程号和课程名。SELECTCourse.Cno,CnameFROMStudent,Course,SCWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoANDSname='李勇'2.检索年龄大于18岁的男学生的学号和姓名。SELECTSno,SnameFROMStudentWHERESsex='男'ANDSage>181.检索选修了'2'号课程的女学生姓名SELECTSnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDCno='2'AN
6、DSsex='女'2.检索200215121同学不学的课程的课程号。SELECTCnoFROMCourseWHERECnoNOTIN(SELECTCnoFROMSCWHERESno='200215121')或者SELECTCnoFROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERECourse.Cno=SC.CnoANDSno='200215121')3.检索至少选修两门课程的学生学号。SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>=2;或者SELECTSnoFROMStudentWHERE2<=(Selec
7、tcount(*)FROMSCWHERESC.Sno=Student.SnoGROUPBYSno)1.每个学生选修的课程门数。SELECTSno,count(*)CcountFROMSCGROUPBYSno2.求选修'3'号课程的学生的平均分。SELECTAVG(Grade)AvggradeFROMSCWHERECno='3'3.求每个学生平均成绩。SELECTSno,AVG(Grade)AvggradeFROMSCGROUPBYSno4.统计每门课程的学生选修人数(超过1人的课程才统计)。查询结果按人数降序排列,