1(答案不唯一,此篇仅供参考)练习题:1.某个学籍数据库有如下表结构:学生(学号,姓名,性别,出生日期,班级)课程(课程号,课程名称,课程类别,课时)选课(学号,课程号,成绩)请完成下列查询要求。①查询出“软件041”班的所有男生的学号和姓名。select学号,姓名from学生where班级=‘软件041’and性别=‘男’②查询出课程名称中含有“语言”一词的课程的所有信息。select*from课程where课程名称like‘%语言%’③查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。selecttop5学生.学号,姓名from学生,课程,选课where学生.学号=选课.学号and选课.课程号=课程.课程号and课程名称=‘C语言’orderby成绩desc④查询出各班级学生人数。select班级,count(*)from学生groupby班级⑤查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。select学生.学号,姓名from学生,课程,选课where学生.学号=选课.学号and课程名=‘计算机应用基础’and成绩(select成绩from选课where学号=(select学号from学生where姓名=‘张三’))2.编写一个自定义函数,功能是求一个长方体的体积并调用此函数求长为3,宽为7,高为9的长方体的体积。createfunctionV(@lengthint,@widthint,@hightint)returnsintasbegindeclare@volumeintset@volume=@length*@width*@hight2endgo--调用declare@volumeselect@volume=dbo.@volume(3,7,9)3.用T-SQL语句建立一个名为Student的数据库(数据文件名为Student_data,大小为10MB,最大值为50MB,增长度为5MB,日志文件名为Student_log,大小为5MB,最大值为25MB,增长度为10%,数据库的路径为D:\Database)。createdatabaseStudenton(name=‘Student_data’,filename=‘D:\Database\Student_data.mdf’,size=10MB,maxsize=50MB,filegrowth=5MB)logon(name=‘Student_log’,filename=‘D:\Database\Student_log.ldf’,size=5MB,maxsize=25MB,filegrowth=10%)4.创建触发器Stu_Insert,只要表StuTest表发生插入,先检查字段Sage是否大于18如果大于18则插入数据表StuTest中,否则不允许插入。createtriggerStu_InsertonStuTestasbeginif(selectSagefrominserted)18InsertintoStuTestselect*frominsertedelseprint‘Sage小于或等于18,不允许插入’end5.创建一个名为StuScore的视图,功能①查询StuInfo表中字段Sdept值为‘CS’并且字段Math、English、Computer的总分不低于240分的同学信息(包括字段Stu_Name,Stu_NO);②具有检查功能。createviewStuScore3asselectStu_Name,Stu_NOfromStuInfowhereSdept=‘CS’andMath+English+Computer!240withcheckoption6.已知如下3个表:student表(学生表)学号姓名性别年龄系别1李明男20计算机系2张然女19经管系3许晴女18电子系course表(课程表)课程号课程名学分1SQLServer42VB33专业英语2sc表(选课表)学号课程号成绩1190218522763370(1)把course表中课程号为2的课程的学分修改为4,然后在student表中查询年龄大于18的学生的所有信息,并按学号降序排列。updatecourseset学分=4where课程号=‘2’goselect*fromstudentwhere年龄18orderby学号descgo(2)在以上三个表中查询选的课程的“学分”为4,并且成绩大于80的学生的学号、姓名和性别。selectstudent.学号,姓名,性别fromstudentwherestudent.学号=sc.学号andcourse.课程号=student.课程号4and学分=4and成绩80(3)创建一存储过程getDetailByName,通过输入参数学生姓名(如“张然),筛选出该学生的基本信息,对不存在此学生姓名的输入值,必须作一检测,打印信息“不存在此学生”。createproceduregetDetailByName@StuNamechar(8)asifexists(select*fromstudentwhere姓名=@StuName)select*fromstudentwhere姓名=@StuNameelseprint‘不存在此学生’7.假设已经定义了学生表(表名为xs)(列包括学号char(6),姓名char(8),性别bit,出生日期datetime,专业char(18))、课程表(kc)(列包括课程号char(3),课程名char(18))。(1)请写出xs表和kc表的联系表——选修表(表名xs_kc)的定义语句并定义参照完整性(xs_kc包含3列,第3列为成绩),并向数据库XSCJ中插入以下记录:091101,张林,女,计算机091102,刘明,男,数学091101,101,87091101,102,98101,数据库原理102,SQLServer2005请同学们写出各条记录的SQL语句。createtablexs_kc(学号char(6)notnull,课程号char(3)notnull,成绩float,foreignkey(学号)refrencesxs(学号),foreignkey(课程号)refrenceskc(课程号))goinsertintoxsvalues(‘091101’,‘张林’,‘0’,null,‘计算机’)goinsertintoxsvalues(‘091102’,‘刘明’,‘1’,null,‘数学’)goinsertintoxs_kcvalues(‘091101’,‘101’,87)5goinsertintoxs_kcvalues(‘091101’,‘102’,92)goinsertintokcvalues(‘101’,‘数据库原理’)goinsertintokcvalues(‘102’,‘SQLServer2005’)go(2)用SQL语句实现以下功能:①查询XSCJ数据库XS表中计算机系的所有女同学的信息。select*fromxswhere性别=‘0’and专业=‘计算机’②求选修101课程的学生的平均成绩。selectavg(成绩)fromxs_kcwhere课程号=‘101’③更新xs_kc表中所有成绩,更新后的成绩为原成绩的80%。updatexs_kcset成绩=成绩*0.8④删除xs表中数学系所有学生的记录。deletefromxswhere专业=‘数学’⑤定义一个的存储过程,功能为求小于30岁学生的所有信息,并执行此存储过程。createprocedurestuTestasselect*fromxswhere年龄30go--执行executestuTestgo