《上机实验指导_实验内容和思考参考答案_SQL_Server_2024实践教程学习.docx》由会员分享,可在线阅读,更多相关《上机实验指导_实验内容和思考参考答案_SQL_Server_2024实践教程学习.docx(45页珍藏版)》请在第壹文秘上搜索。
1、数据库技术与应用实践教程一SQ1.Server2024上机试验指导(试验思索)一参考答案试验1.安装及管理工具运用略。试验2:SQ1.SerVer数据库的管理二、试验内容及步骤4 .单击“新建查询”打开查询设计器窗口,在查询设计器窗口中运用Transact-SQ1.语句CREATEDATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。CREATEDATABASEstudbON(NAME=studb_dat,FI1.ENAME=C:DataBasestudb.mdf*)EXECsp_helpdb5 .在查询设计器中运用Transact-SQ1.语句A
2、1.TERDATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。A1.TERDATABASEstudb5MB,MODIFYFI1.E(NAME=studb_data,SIZEMAXSIZE=20MB,FI1.EGROWTH=1MB)6 .在查询设计器中为StiIdb数据库增加一个日志文件,命名为StUdb_1.og2,大小为5MB,最大文件大小为IoMB。A1.TERDATABASEstudbADD1.OGFI1.E(NAME=studbJog2,FI1.ENAME=StudbJoglJdf,SIZE=5MB,MAXSIZE=10M
3、B)8 .运用Transact-SQ1.语句DROPDATABASE删除student_db数据库。DROPDATABASEstudent.db试验3SQ1.Server数据表的管理二、试验内容及步骤9 .运用Transact-SQ1.语句CREATETAB1.E在Studentsdb数据库中创建grade表。CREATETAB1.Egrade(学号cha(4)NU1.1.,课程编号cha(4)NU1.1.,分数char(5)NU1.1.)ONPRIMARY10 运用Transact-SQ1.语句INSERTINTO.VA1.UES向Studentsdb数据库的grade表插入数据:学号为00
4、04,课程编号为OOO1.分数为80。INSERTgradeVA1.UES(,0004,0001,80,)11 运用Transact-SQ1.语句A1.TERTAB1.E修改curriculum表的“课程编号”歹!b使之为非空。A1.TERTAB1.EcurriculumA1.TERCO1.UMN课程编号NOTNU1.1.12 .运用Transact-SQ1.语句A1.TERTAB1.E修改grade表的“分数”列,使其数据类型为real。A1.TERTAB1.EgradeA1.TERCO1.UMN分数realXl.运用Transact-SQ1.语句A1.TERTAB1.E修改StUdeIIJ
5、ilIfo表的“姓名”列,使其列名为“学生姓名”,数据类型为VaChar(10),非空。altertablestudent_infoadd学生姓名varchar(10)NOTNU1.1.;updatestudent_infoset学生姓名二姓名;altertablestudent_infodropcolumn姓名;12 .分别运用SQ1.Server管理平台和Transact-SQ1.语句DE1.ETE删除Studentsdb数据库的grade表中学号为0004的成果记录。DE1.ETEgradeWHERE学号=000413 .运用Transact-SQ1.语句UPDATE修改Students
6、db数据库的grade表中学号为OOO3、课程编号为OOo5、分数为90的成果记录。UPDATEgradeSET分数=90WHERE学号=,0003,and课程编号ToOO5,14 .运用Transact-SQ1.语句A1.TER.ADD为Studentsdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)oA1.TERTAB1.EgradeADD备注VARCHAR(20)NU1.1.15 .分别运用SQ1.Server管理平台和Transact-SQ1.语句DROPTAB1.E删除Studentsdb数据库中grade表。DROPTAB1.Estudent
7、sdb.dbo.grade三、试验思索X.运用Transact-SQ1.语句删除在Studentsdb数据库的grade表添加的“备注”数据列。A1.TERTAB1.EgradeDROPCO1.UMN备注试验4数据查询二、试验内容及步骤2 .在Studentsdb数据库中运用SE1.ECT语句进行基本查询。(1)在StudentJnfo表中,查询每个学生的学号、姓名、诞生日期信息。SE1.ECT学号,姓名,诞生日期FROMStudentJnfo(2)查询学号为OOO2的学生的姓名和家庭住址。SE1.ECT姓名,家庭住址FROMStudentJnfoWHERE学号=,0002,(3)找出全部男同
8、学的学号和姓名。SE1.ECT学号,姓名FROMStudentJnfoWHERE性别=男3 .运用SE1.ECT语句进行条件查询(1)在grade表中查找分数在8090范围内的学生的学号和分数。SE1.ECT学号,分数FROMgradeWHERE(分数BETWEEN80AND90)(2)在grade表中查询课程编号为OOo3的学生的平均分。SE1.ECTavg(分数)AS平均分FROMgradeWHERE(课程编号=,0003,)(3)在grade表中查询学习各门课程的人数。SE1.ECT课程编号,COUNT(*)AS人数FROMgradeGROUPBY课程编号(4)将学生按诞生日期由大到小排
9、序。SE1.ECT*FROMStudentJnfoORDERBY诞生日期DESC(5)查询全部姓“张”的学生的学号和姓名。SE1.ECT*FROMStudentJnfoWHERE姓名1.lKE张4 .对StIIdent_iIIfo表,按性别依次列出学生的学号、姓名、性别、诞生日期及家庭住址,性别相同的按学号由小到大排序。SE1.ECT学号,姓名,性别,诞生日期,家庭住址FROMStudentJnfoORDERBY性别,学号5 .运用GRoUPBY查询子句列出各个学生的平均成果。SE1.ECT学号,SUM(分数)/CoUNT(*)AS平均成果FROMgradeGROUPBY学号6 .运用UNIO
10、N运算符将StudentJnfo表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为ii_编号、ii_名称,如图1-8所示。U_编号1.名称1OOOi大学计算机基础20002C语言程序设计30002张卫民40003SQ1.SerVer数据库及应用50004英语60005高等数学70008张明华图1-8联合查询结果集SE1.ECT学号ASu_编号,姓名ASu_名称FROMStudentJnfoWHERE(姓名1.lKE,张,)UNIONSE1.ECT课程编号ASu_编号,课程名称ASu_名称FROMcurriculum7 .嵌套查询(1)在stude
11、nt_info表中查找与“刘卫平”性别相同的全部学生的姓名、诞生日期。SE1.ECT姓名,诞生日期FROMStudentJnfoWHERE性别=(SE1.ECT性另JFROMStudentJnfoWHERE姓名T刘卫平,)(2)运用IN子查询查找所修课程编号为OOO2、OOO5的学生学号、姓名、性别。SE1.ECT学号,姓名,性别FROMStudentJnfoWHEREStildentJlIfO学号IN(SE1.ECT学号FROMgradeWHERE课程编号IN(,0002,0005,)(3)列出学号为OOOl的学生的分数比0002号的学生的最低分数高的课程编号和分数。SE1.ECT课程编号,
12、分数FROMgradeWHERE学号=OoorAND分数ANY(SE1.ECT分数FROMgradeWHERE学号=OOO2,)(4)列出学号为OOOl的学生的分数比学号为0002的学生的最高成果还要高的课程编号和分数。SE1.ECT课程编号,分数FROMgradeWHERE学号=OoorAND分数(SE1.ECTMAX(分数)FROMgradeWHERE学号=Ooo2,)8 .连接查询(1)查询分数在80-90范围内的学生的学号、姓名、分数。SE1.ECTStIIdeIItJnfo学号,姓名,分数FROMStudentJnfo,gradeWHEREstudent_info.学号=grade.
13、学号AND分数BETWEEN80AND90(2)查询学习“C语言程序设计”课程的学生的学号、姓名、分数。SE1.ECTStildeIItJnfo.学号,姓名,分数FROMstudent_infoINNERJOINgradeONStUdent_info.学号=grade.学号INNERJOINcurriculumON课程名称二(语言程序设计,(3)查询全部男同学的选课状况,要求列出学号、姓名、课程名称、分数。SE1.ECTa.学号,a.姓名,c.课程名称,b分数FROMStudentJnfoaINNERJOINgradebONa.学号=b.学号INNERJOINcurriculumcONb.课程
14、编号=C.课程编号WHERE(a.性别=,男,)(4)查询每个学生的所选课程的最高成果,要求列出学号、姓名、课程编号、分数。SE1.ECTa.学号,c.姓名,a.课程编号,a.分数FROMgradeaINNERJOINStudentJnfocONa.学号=C.学号WHERE(a.分数=(SE1.ECTMAX(b.分数)FROMgradebWHEREb.学号=&学号)(5)查询全部学生的总成果,要求列出学号、姓名、总成果,没有选修课程的学生的总成果为空。提示:运用左外连接。SE1.ECTa.学号,a.姓名,b.总成果FROMStudentJnfoa1.EFTOUTERJOIN(SE1.ECT学号
15、,SUM(分数)AS总成果FROMgradeGROUPBY学号)bONa.学号=b.学号(6)为grade表添加数据行:学号OOO4、课程编号为OOO6、分数为76o查询全部课程的选修状况,要求列出课程编号、课程名称、选修人数,CiiiTiciihim表中没有的课程列值为空。提示:运用右外连接。INSERTINTOgrade(学号,课程编号,分数)VA1.UES(0004,000676)SE1.ECTa.课程编号,a.课程名称,b.选修人数FROMcurriculumaRIGHTOUTERJOIN(SE1.ECT课程编号,COUNT(*)AS选修人数FROMgradeGROUPBY课程编号)bONa.课程编号=b.课程编号三、试验思索1 .查询全部没有选修课程的学生信息,返回结果包括学号、姓名、性别。SE1.ECT学号,姓名,性别F