1、-数据库原理与应用课程实验报告实验四 查询设计实验所在院(系): 班级: 学号: 姓名: -1.实验目的(1) 了解查询的目的,掌握 SELECT 语句的基本语法和查询条件的表示方法。(2) 掌握数据排序和数据联接查询的方法。(3) 掌握 SQL Server 查询分析器的使用方法。2.实验要求(1) 针对 “TM”数据库,在 SQL Server 查询分析器中,用 T-SQL 语句实现以下单表查询操作,并将将调试成功的 T-SQL 命令,填入实验报告中。a) 查询所有课程的详细情况。b) 查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。c) 查询选修了课程的学生学号(一人选了
2、多门课程的话,学号只显示一次)。d) 查询选修课程号为 07253001 的学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。e) 查询所有学生的学号、姓名和年龄。f) 查询选修课程号为 07253001 的成绩在 85-95 之间的学生学号和成绩,并将成绩乘以 0.7 输出。g) 查询数学与信息技术学院(DEPT_ID 为 07)或物理与电子工程学院(DEPT_ID 为 09)姓张的学生的信息。h) 查询所有核心课程(课程名中带*的)的情况。i) 查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。(2) 在 SQL Server 查询分析器中,用 T-SQ
3、L 语句实现下列数据联接查询操作:a) 查询每个学生的情况以及他(她)所选修的课程。b) 查询学生的学号、姓名、选修的课程名及成绩。c) 查询选修 C 语言程序设计且成绩为 85 分以上的学生学号、姓名及成绩。d) 查询和学生柏文楠是同一个民族的学生(用自身联接实现)。-e) 分别用等值联接和内联接查询有授课记录的老师的姓名。f) 用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该老师没有授课历史,在课程号和授课的学期中显示空值(3) 在 SQL Server Management Studio 中新建查询,完成以上查询
4、命令的同时,熟悉 SQL 编辑器工具栏中各快捷按钮的作用。(4) 按要求完成实验报告。3.实验步骤、结果和总结实验步骤/结果将调试成功的 T-SQL 语句写在下方(标明题号) 。1、针对 “TM”数据库,在 SQL Server 查询分析器中,用T-SQL 语句实现以下单表查询操作,并将将调试成功的 T-SQL 命令,填入实验报告中。(a)查询所有课程的详细情况:select * from Course表 1-a (b)查询来自江苏或山东的学生学号和姓名,并以中文名称-显示输出的列名。SELECT S_ID as 学号,S_Name as 姓名FROM STUDENT WHERE Birth_
5、Place=江苏 or Birth_Place=山东表 1-b(c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。select distinct S_ID from sc表 1-c(d)查询选修课程号为 07253001 的学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。select S_ID,EXAM_Grade from scwhere C_ID=07253001order by EXAM_Grade desc,S_ID asc-表1-d(e)查询所有学生的学号、姓名和年龄。SELECT S_ID,S_NAME, year(getdate()-
6、year(Date_of_Birth) as 年龄 FROM Student表 1-e(f)查询选修课程号为 07253001 的成绩在 85-95 之间的学生学号和成绩,并将成绩乘以 0.7 输出。Select S_ID,EXAM_Grade*0.7 as grade from SCwhere C_ID=07253001and EXAM_Grade between 85 and 95-表 1-f(g)查询数学与信息技术学院(DEPT_ID 为 07)或物理与电子工程学院(DEPT_ID 为 09)姓张的学生的信息。select *from Student where DEPT_ID in (
7、07, 09) and S_Name like 张%表 1-g(h)查询所有核心课程(课程名中带*的)的情况。SELECT * FROM Course WHERE C_Name like %*%表 1-h(i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。-select S_ID,C_ID from SC where EXAM_Grade IS NULLorder by C_ID表 1-i2、在 SQL Server 查询分析器中,用 T-SQL 语句实现下列数据联接查询操作:(a)查询每个学生的情况以及他(她)所选修的课程。Select Student.S_ID, S_Nam
8、e,Gender, Birth_Place,DEPT_ID, Class_ID, Course.C_name from Student join SC on Student.S_ID=SC.S_ID join Course on Course.C_ID=SC.C_ID表 2-a-(b)查询学生的学号、姓名、选修的课程名及成绩。select Student.S_ID, S_Name,C_Name, EXAM_Grade from Student inner join SC on Student.S_ID=SC.S_ID inner join Course on SC.C_ID=Course.C_
9、ID表 2-b(c)查询选修 C 语言程序设计且成绩为 85 分以上的学生学号、姓名及成绩。Select Student.S_ID,S_NAME,EXAM_Grade from Student,SC,Coursewhere Student.S_ID=SC.S_ID and Course.C_ID=SC.C_ID and C_Name=C语言程序设 计 and EXAM_Grade=85-表 2-c(d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。SELECT S_Name from Studentwhere Nationality=(select Nationality from S
10、tudent where S_Name=柏文楠)表 2-d(e)分别用等值联接和内联接查询有授课记录的老师的姓名。 等值联接select DISTINCT T_Name fromTeacher inner join TC on Teacher.T_ID=TC.T_ID 内联接select DISTINCT T_Name from Teacher,TC where Teacher.T_ID=TC.T_ID表 2-e(f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该老师没有授课历史,在课程-号和授课的学期中显示空值。select Teacher.T_ID,Teacher.T_Name,Teacher.Academic_Title,Department.DEPT_Name,TC.C_ID,TC.Semester from Teacher Right join TC on Teacher.T_ID=TC.T_ID join Department ON Department.DEPT_ID=Teacher.DEPT_IDorder by Department.DEPT_Name , Teacher.Academic_Title表 2-f4实验思考:联接查询中,输出列名时何时可以忽略列名前的表名,何时不能?
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。