实验:数据库综合查询(13页).doc

上传人:1595****071 文档编号:35962400 上传时间:2022-08-24 格式:DOC 页数:13 大小:295.50KB
返回 下载 相关 举报
实验:数据库综合查询(13页).doc_第1页
第1页 / 共13页
实验:数据库综合查询(13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《实验:数据库综合查询(13页).doc》由会员分享,可在线阅读,更多相关《实验:数据库综合查询(13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-实验六:数据库综合查询一、实验目的1. 掌握SELECT语句的基本语法和查询条件表示方法;2. 掌握查询条件种类和表示方法;3. 掌握连接查询的表示及使用;4. 掌握嵌套查询的表示及使用;5. 了解集合查询的表示及使用。二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1. 了解SELECT语句的基本语法格式和执行方法;2. 了解连接查询的表示及使用;3. 了解嵌套查询的表示及使用;4. 了解集合查询的表示及使用;5. 完成实验报告;五、实验内容及步骤以数据库原理实验5数据为基础,请使用T-SQL 语句实现进

2、行以下操作:1. 查询以DB_开头,且倒数第3个字符为s的课程的详细情况;USE studentSELECT 课程号=Cno,课程名=Cname,先行课号=Cpno,学分=CcreditFROM courseWHERESUBSTRING(Cname,1,3)=DB_ ANDSUBSTRING(RIGHT(RTRIM(Cname),3),1,1)=s2. 查询名字中第2个字为阳的学生姓名和学号及选修的课程号、课程名;USE studentSELECT 姓名=student.Sname,学号=student.Sno,课程号=course.Cno,课程名=course.CnameFROM stude

3、nt,course,scWHEREstudent.Sno=sc.Sno ANDcourse.Cno=sc.Cno ANDSUBSTRING(LTRIM(student.Sname),2,1)=阳3. 列出选修了数学或者大学英语的学生学号、姓名、所在院系、选修课程号及成绩;USE studentSELECT学号=student.Sno,姓名=student.Sname,所在院系=student.Sdept,课程号=sc.Cno,成绩=sc.GradeFROM student,course,scWHEREstudent.Sno=sc.Sno ANDcourse.Cno=sc.Cno AND(cou

4、rse.Cname=数学 OR course.Cname=大学英语)4. 查询缺少成绩的所有学生的详细情况;USE studentSELECT student.*FROM student,scWHEREstudent.Sno=sc.Sno ANDsc.Grade IS NULL5. 查询与张力(假设姓名唯一)年龄不同的所有学生的信息;USE studentSELECT *FROM studentWHERESname!=张力 ANDSage!=(SELECT Sage FROM student WHERE Sname=张力)6. 查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩

5、;USE studentDECLARE ZL_AVG INTSET ZL_AVG=(SELECT AVG(sc.Grade)FROM sc,studentWHERE sc.Sno=student.Sno AND student.Sname=张力GROUP BY sc.Sno,student.Sno)SELECT DISTINCT学号=student.Sno,姓名=student.Sname,平均成绩=AVG(sc.Grade)FROM student,scWHERE sc.Sno=student.SnoGROUP BY sc.Sno,student.Sno,student.SnameHAVIN

6、G AVG(sc.Grade)ZL_AVG7. 按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;USE studentSELECT DISTINCT学号=student.Sno,姓名=student.Sname,所在院系=student.Sdept,已修学分=SUM(CASE WHEN sc.Grade=60 THEN course.Ccredit*1 ELSE 0 END)FROM student,sc,courseWHERE sc.Sno=student.Sno AND sc.Cno=course.CnoGROUP BY stu

7、dent.Sno,student.Sname,student.Sdept8. 列出只选修一门课程的学生的学号、姓名、院系及成绩;USE studentSELECT学号=student.Sno,姓名=student.Sname,院系=student.Sdept,成绩=sc.GradeFROM student,scWHERE student.Sno=sc.Sno ANDstudent.Sno=ANY(SELECT Sno FROM sc GROUP BY Sno HAVING COUNT(Cno)=1)9. 查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;USE studentSE

8、LECT学号=student.Sno,姓名=student.Sname,课程号=sc.CnoFROM student,scWHERE student.Sno=sc.Sno ANDstudent.Sname!=张力 ANDsc.Cno=ANY(SELECT sc.Cno FROM sc,student WHERE sc.Sno=student.Sno AND student.Sname=张力)10. 只选修“数据库”和“数据结构”两门课程的学生的基本信息;USE studentSELECT学号=student.Sno,姓名=student.Sname,学院=student.Sdept,选修课程=

9、course.CnameFROM student,sc,course,course bWHERE student.Sno=sc.Sno ANDcourse.Cno=sc.Cno ANDb.Cno=course.Cno AND(sc.Sno=ANY(SELECT Sno FROM sc GROUP BY Sno HAVING COUNT(Cno)=1) AND(course.Cname=数据库 OR course.Cname=数据结构)OR(sc.Sno=ANY(SELECT Sno FROM sc GROUP BY Sno HAVING COUNT(Cno)=2) ANDb.Cname=数据库

10、 AND course.Cname=数据结构)11. 至少选修“数据库”或“数据结构”课程的学生的基本信息;USE studentSELECT DISTINCT学号=student.Sno,姓名=student.Sname,学院=student.SdeptFROM student,scWHERE student.Sno=sc.Sno ANDsc.Sno=ANY(SELECT sc.SnoFROM course,scWHERE course.Cno=sc.Cno AND(course.Cname=数据库 OR course.Cname=数据结构)12. 列出所有课程被选修的详细情况,包括课程号、

11、课程名、学号、姓名及成绩;USE studentSELECT课程号=sc.Cno,课程名=course.Cname,学号=sc.Sno,姓名=student.Sname,成绩=sc.GradeFROM sc,course,studentWHERE sc.Cno=course.Cno AND sc.Sno=student.SnoORDER BY sc.Cno ASC13. 查询只被一名学生选修的课程的课程号、课程名;USE studentSELECT课程号=sc.Cno,课程名=course.CnameFROM sc,courseWHERE sc.Cno=course.CnoGROUP BY s

12、c.Cno,course.CnameHAVING COUNT(sc.Sno)=1ORDER BY sc.Cno ASC14. 检索所学课程包含学生张向东所学课程的学生学号、姓名;USE studentSELECT DISTINCT学号=sc.Sno,姓名=student.SnameFROM sc,studentWHERE sc.Sno=student.Sno ANDstudent.Sname!=张向东 ANDsc.Cno=ANY(SELECT sc.Cno FROM sc,studentWHERE sc.Sno=student.Sno AND student.Sname=张向东)15. 使用嵌

13、套查询列出选修了“数据结构”课程的学生学号和姓名;USE studentSELECT DISTINCT学号=sc.Sno,姓名=student.SnameFROM sc,student,courseWHERE sc.Sno=student.Sno ANDsc.Cno=course.Cno ANDsc.Sno=ANY(SELECT sc.Sno FROM sc,course WHERE sc.Cno=course.Cno AND course.Cname=数据结构)16. 使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;USE studentSELECT姓名=Sname,

14、年龄=Sage,院系=SdeptFROM studentWHERE Sdept!=CS AND SageANY(SELECT TOP 4 Sage FROM student WHERE Sdept=CS)17. 使用ANY、ALL 查询,列出其他院系中比CS系所有学生年龄小的学生;USE studentSELECT *FROM studentWHERE Sdept!=CS AND Sage19ORDER BY Sage ASCGOSELECT *FROM studentWHERE Sdept=CSEXCEPTSELECT *FROM studentWHERE Sage!19ORDER BY S

15、age ASC21. 使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;USE studentSELECT student.*FROM student,scWHERE sc.Sno=student.Sno AND sc.Cno=1INTERSECTSELECT student.*FROM student,scWHERE sc.Sno=student.Sno AND sc.Cno=222. 思考题:按照课程名顺序显示各个学生选修的课程(如200515001 数据库 数据结构 数学);一种笨拙的循环方法:USE studentDECLARE SNumber INTDECLARE T

16、mpSno INTSET SNumber=0WHILE SNumber15BEGINSET TmpSno=(SELECT DISTINCT TOP (SNumber+1) SnoFROM scEXCEPT SELECT DISTINCT TOP (SNumber) SnoFROM sc)SELECT 学号=Sno,姓名=Sname,第一门=(SELECT TOP 1 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSno),第二门=(SELECT TOP 2 course.CnameFROM sc,courseWH

17、ERE sc.Cno=course.Cno AND sc.Sno=TmpSnoEXCEPT SELECT TOP 1 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSno),第三门=(SELECT TOP 3 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSnoEXCEPT SELECT TOP 2 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSno

18、),第四门=(SELECT TOP 4 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSnoEXCEPT SELECT TOP 3 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSno),第五门=(SELECT TOP 5 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSnoEXCEPT SELECT TOP 4 course.CnameFROM sc,courseWHERE sc.Cno=course.Cno AND sc.Sno=TmpSno)FROM studentWHERE Sno=TmpSnoSET SNumber=SNumber+1END六、出现问题及解决办法如:某些查询操作无法执行,如何解决?-第 13 页-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁