数据库实验三 多表查询
实验三 多表查询
1.实验目的
1) 熟悉SQL Server 2008对象资源管理器环境。
2) 掌握基本的SELECT查询及其相关子句的使用。
3) 掌握复杂的SELECT查询,如多表查询、子查询、连接和联合查询。
2.实验内容
1) 启动SQL Server 2008 对象资源管理器环境。
2) 涉及多表的简单查询。
3) 涉及多表的复杂查询。
3. 实验步骤
1) 启动SQL Server对象资源管理器,打开“SQL对象资源管理器”窗口。
2) 在“SQL对象资源管理器”窗口中选择要操作的数据库,如“XSCJ”数据库。
3) 在KC表中查询学分低于3的课程信息,并按课程号升序排列。
在查询命令窗口中输入以下SQL查询命令并执行:
SELECT * FROM KC WHERE KC.学分<3 ORDER BY 课程号
4) 在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。
SELECT 学号,平均分=AVG(成绩) FROM XS_KC GROUP BY 学号 ORDER BY 平均分 DESC
5) 在XS_KC表中查询选修了3门以上课程的学生学号。
SELECT 学号 FROM XS_KC GROUP BY 学号 HAVING COUNT(*)>3
6) 按学号对不及格的成绩记录进行明细汇总。
SELECT 学号,课程号,成绩 FROM XS_KC WHERE 成绩<60 ORDER BY 学号 COMPUTE COUNT(成绩) BY 学号
7) 分别用子查询和连接查询,求107号课程不及格的学生信息。
用子查询:
SELECT 学号,姓名,联系电话 FROM XSQK WHERE 学号 IN ( SELECT 学号 FROM XS_KC WHERE 课程号=’107’AND 成绩<60)
用连接查询:
SELECT 学号,姓名,联系电话 FROM XSQK JOIN XS_KC ON XSQK.学号=XS_KC.学号 WHERE课程号=’107’AND 成绩<60
8) 用连接查询在XSQK表中查询住在同一寝室的学生,即其联系电话相同
SELECT A.学号,A.姓名,A.联系电话
FROM XSQK A JOIN XSQK B ON A.联系电话=B.联系电话
WHERE A.学号!=B.学号
请自已完成以下的查询:
9) 查询XSQK表中所有的系名。
SELECT DISTINCT 所在系 FROM XSQK
10) 查询有多少同学选修了课程。
SELECT COUNT(DISTINCT 学号) FROM XS_KC
11) 查询有多少同学没有选课。
SELECT COUNT(XSQK.学号) FROM XSQK WHERE XSQK.学号 NOT IN ( SELECT DISTINCT XSQK.学号 from XS_KC,XSQK WHERE XS_KC.学号 = XSQK.学号 )
12) 查询与杨颖同一个系的同学姓名。
SELECT 姓名 FROM XSQK WHERE 所在系=( SELECT 所在系 FROM XSQK WHERE XSQK.姓名='杨颖' ) AND 姓名 != '杨颖'
13) 查询选修了课程的学生的姓名、课程名与成绩。
SELECT DISTINCT 姓名,课程名,成绩 FROM XSQK,XS_KC,KC WHERE XS_KC.学号=XSQK.学号 AND XS_KC.课程号=KC.课程号
14) 统计每门课程的选课人数和最高分。
SELECT 课程号,COUNT(学号) AS 课程人数,MAX(成绩) AS 最高分 FROM XS_KC GROUP BY 课程号
15) 统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。
SELECT XSQK.学号 AS 学号,COUNT(XS_KC.课程号) AS 选课门数,SUM(XS_KC.成绩) AS 总成绩 FROM XSQK FULL OUTER JOIN XS_KC ON XSQK.学号 = XS_KC.学号 GROUP BY XSQK.学号 ORDER BY 选课门数 DESC
本文来自博客园,作者:guoyuxin3,转载请注明原文链接:https://www.cnblogs.com/guoyuxin3/p/15067315.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现