数据库上机实验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、注意多表连接查询的两种写法。

目录
相关文章
|
10天前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
24天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
2天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
40 25
|
29天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
96 6
|
29天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
52 2
|
29天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
239 0
|
2月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
43 6
|
2月前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
46 0
|
3月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
11天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
86 42

热门文章

最新文章