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

目录
相关文章
|
8天前
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
|
5天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
117 72
|
6天前
|
存储 关系型数据库 MySQL
如何优化数据库查询?
如何优化数据库查询?
20 1
|
11天前
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age > 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
21 0
|
11天前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
20 0
|
11天前
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
37 0
|
11天前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
23 0
|
11天前
|
SQL 关系型数据库 MySQL
|
11天前
|
SQL 数据库 开发者
|
11天前
|
存储 SQL 数据库
自连接:数据库查询中的镜像技术
【8月更文挑战第31天】
8 0