数据库上机实验3 连接查询和分组查询

简介: 数据库上机实验3 连接查询和分组查询

一、实验目的

1、熟练掌握多表连接查询中内连接的两种语法。

2、理解外连接的含义,熟悉外连接的使用。

3、掌握分组查询和排序等语句。

二、实验内容

根据实验1中创建的学生作业管理数据库以及其中的学生表、课程表和学生作业表,进行以下操作。

1、查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。

1. select sno as 学号,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
2. from score
3. group by sno 
4. having count(*)>=3

2、查询每门被选课程的课程编号、课程名称、作业1平均分、作业2平均分和作业3平均分。

1. select course.cno as 课程编号,cname as 课程名称 ,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
2. from course,score
3. where course.cno=score.cno 
4. group by course.cno,cname

3、查询每门被选课程的课程编号、作业1的最高分和最低分、作业2的最高分和最低分、作业3的最高分和最低分。

1. select cno as 课程编号,max(cj1) as 作业1最高分,min(cj1) as 作业1最低分,max(cj2) as 作业2最高分,min(cj2) as 作业2最低分,max(cj3) as 作业3最高分,min(cj3) as 作业3最低分
2. from score
3. group by cno

4、查询作业1平均分、作业2平均分和作业3平均分均在75分以上(含75分)的学生学号和作业1平均分、作业2平均分和作业3平均分。

1. select sno as 学号,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
2. from score
3. group by sno
4. having avg(cj1)>=75 and avg(cj2)>=75 and avg(cj3)>=75

5、查询与“张志国”同一班级的学生信息(使用连接查询)。

1. select a.* from student a, student b
2. where a.major=b.major and b.sname='张志国'

6、查询比“计算机应用基础”学时多的课程信息(使用连接查询)。

1. select a.* from course a,course b
2. where a.stime>b.stime and b.cname='计算机应用基础'

7、查询选修课程号为K002的学生的学号、姓名(使用连接查询)。

1. select student.sno,sname from student,score
2. where student.sno=score.sno and cno='K002'

8、查询于兰兰的选课信息,列出学号、姓名、课程名,并按照课程名进行升序排序(使用两种连接查询的方式)。

1. (1)select student.sno,sname,cname
2. from student,course,score
3. where student.sno=score.sno and course.cno=score.cno and sname='于兰兰'
4. order by cname
5. (2)select student.sno,sname,cname
6. from student
7. inner join score on student.sno=score.sno 
8. inner join course on course.cno=score.cno 
9. where sname='于兰兰'
10. order by cname

三、实验指导

1、启动SQL Server2012软件。

2、通过分离附加的方法,将实验1所创建的作业管理数据库恢复到该软件中。

3、SQL Server中,程序不区别大小写,特别要注意程序中的标点符号,一定要在英文半角状态下输入,否则会出错。

4、注意统计函数的用法,AVG求平均值,SUM求和,MAX求最大值,MIN求最小值,COUNT按列值统计行数。

5、注意HAVING子句和WHERE子句的区别:HAVING子句是对分组后的数据进行条件的筛选,而WHERE子句是对原始数据时行条件的筛选;HAVING子句中可以有统计函数,WHERE子句中不能有统计函数。

6、多表连接查询中一定要有连接条件,对N个表进行查询要有N-1个连接条件。

7、注意多表连接查询的两种写法。

目录
相关文章
|
5月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
588 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
115 13
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
873 11
|
7月前
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
4月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
413 0
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
425 14

热门文章

最新文章