第1页共9页仲恺农业工程学院实验报告纸计算科学(院、系)信息与计算科学专业144班数据库原理与应用课学号201421314431姓名张和杰实验日期2016-3-14教师评定实验二实验项目:数据导入以及单表查询、多表查询。实验目的:通过实验,要求学生掌握和使用在SQLServer2005导入数据和简单的单表查询。实验要求:成功导入数据以及实现简单的单表查询、多表查询。实验内容:1.将数据库myDataBase.MDF使用附加操作导进数据库中。2.对myDataBase.MDF使用T-SQL进行如下操作:1)在学生情况表中增加一个Email列,要求检查输入的是否为Emai;2)删除学生情况表中的备注列;3)对学生情况表增加约束条件,要求姓名唯一;4)对课程表增加约束,要求学分取值范围为1-4;5)删除课程表的学时约束;6)修改学生情况表的学号类型,改成char(11);第2页共9页7)为学生情况表的姓名创建一个唯一索引,按照姓名降序排列;8)查看三个表的所有索引。3.SM中四个表说明:教职工表Teacher(Tno,TName,age,sal,mgr,DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号;课程表为Course(Cno,CName,CCredits,CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分,类型为NUMERIC(2,0),CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键;学生表为Student(Sno,CLno,SName,SSex,SBir,Sage,Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期,Sage为学生年龄,Email为学生Email;学生选课表为SC(Sno,Cno,Score),其中Sno为学生学号,Cno为课程号,Score为分数,外键Sno和Cno分别来自表Student的Sno和Coures的Cno。对SM进行以下查询:单表查询:(1)查询所有教职工的情况。(2)查询所有教职工的职工编号、姓名。第3页共9页(3)查询所有教职工的工号和年薪,并且将输出结果中的列名显示为“教职工号”、“年薪”。(4)查询职工编号为0002的教职工情况。(5)查询教职工中年龄在30-40岁之间的教职工姓名。(6)查询在部门01、02、或03的教职工情况。第4页共9页(7)查询没有给出成绩的选课情况。(8)查询姓马的同学信息。(9)查询所有职工的姓名和年龄,按年龄从小到大的顺序排列。(10)查询课程号为001的成绩前五名的学生学号和成绩。第5页共9页多表查询:(1)查询选修了数据库的学生的学号;(2)查询数据库成绩不及格的学生名单(输出学号、姓名、成绩);(3)使用内连接查询每个学生及其选修课程情况;(4)使用左连接查询查询每个学生及其选修课程情况;第6页共9页(5)使用右连接查询查询每个学生及其选修课程情况;(6)在表Teacher中,查询职工张三的上级领导信息。源代码:altertable学生情况表addEmailchar(30),check(Emaillike'%@%'),altertable学生情况表dropcolumn备注;altertable学生情况表add第7页共9页Unique(姓名)altertable学生课程表addcheck([学分]=(1)AND[学分]=(4));ALTERTABLE学生情况表ALTERCOLUMN学号CHAR(11);execsp_helpconstraint学生课程表altertable学生课程表dropCK_学生课程createuniquenonclusteredindex姓名索引ON学生情况表(姓名desc);execsp_helpindex学生情况表execsp_helpindex学生成绩表execsp_helpindex学生课程表select*fromTeacher;selectTNo,TnamefromTeacher;selectTNo'教职工号',sal*12'年薪'fromTeacher;select*fromTeacherwhereTno='0002';selectTnamefromTeacherwhereagebetween30and40;select*fromTeacherwhereDNoin('01','02','03');select*fromSCwhereScoreisnull;第8页共9页select*fromStudentwhereSnamelike'马%'selectTname,agefromTeacherorderbyageselectstudent.SNofromStudent,sc,coursewhereStudent.SNo=sc.SNoandsc.CNo=course.CNoandcourse.CName='数据库'selectStudent.SName,Student.SNo,scorefromStudent,sc,coursewhereStudent.SNo=sc.SNoandsc.CNo=course.CNoandcourse.CName='数据库'andsc.Score60select*fromStudentinnerjoinsconStudent.SNo=sc.SNo;select*fromStudentleftjoinsconStudent.SNo=sc.SNo;select*fromStudentrightjoinsconStudent.SNo=sc.SNo;selectt1.Tno,t1.TName,t1.age,t1.sal,t1.DNo,t1.mgrfromTeachert1,Teachert2wheret2.TName='张三'andt1.Tno=t2.mgr;实验结果:结果见上图实验体会:本次实验可以说比上次顺畅了好多,基本没什么大问题,值得注意的是删除约束的时候要输入约束名,约束名要用exec查看,还有最后一题查上级之类的要自身表的条件查询的可以用自身连接。第9页共9页