H埋土数据库实验(三到四)

2024-02-23 17:50
文章标签 数据库 实验 埋土 三到

本文主要是介绍H埋土数据库实验(三到四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验三 :数据库的嵌套查询实验

(1)掌握SQL嵌套查询语法。

(2)掌握SQL Server查询分析器的使用方法;

               1、在SQL Server查询分析器中使用IN、比较符、ANY、SOME或ALL和EXISTS操作符进行嵌套查询操作。

       1.找出2009年秋和2010春同时开课的所有课程的集合

2.找出至少选修了一门Comp.Sci.系课程的学生姓名,保证结果中没有重复的姓名

3.找出所有没有选修在2009年春季之前开设的任何课程的学生的ID和姓名

4.使用标量子查询,显示所有教师的列表,列出他们的ID、姓名以及所讲授课程段的编号。对于没有讲授任何课程段的教师,课程段编号显示为0。

5.使用外连接实现任务4的查询。

6.找出工资高于Comp.Sci.系每个教师的所有教师的ID、姓名、所在院系

7.找出工资最高的所有教师及教师所在教学楼

8.找出名叫Einstein的教师所教授的所有学生的ID、姓名及获得的学分

1. SQL查询语句分析与设计。

2. 查询分析器中撰写语句

3. 查询并观察执行结果

4. 撰写查询报告

5. 完成上述8个查询实验(截图并说明,有SQL语句,有运行结果)

PC机,SQL Server 2019

DXJG数据库。

第一步

先还原数据库:

1、找出2009年秋和2010春同时开课的所有课程的集合

select course_id
from section
where semester='Fall' and year='2009' and course_id in
(select course_id
from section
where semester='Spring' and year='2010');

2.找出至少选修了一门Comp.Sci.系课程的学生姓名,保证结果中没有重复的姓名

select distinct student.name
from student , takes , course
where student.dept_name='Comp.Sci.';

3.找出所有没有选修在2009年春季之前开设的任何课程的学生的ID和姓名

select distinct ID,name
from student
where id in
(select distinct ID
from takes
where year>=2009);

 4.使用标量子查询,显示所有教师的列表,列出他们的ID、姓名以及所讲授课程段的编号。对于没有讲授任何课程段的教师,课程段编号显示为0。

select ID,name,
(select count(*)
from teaches T
where T.id=I.id) as Number
from instructor I; 

5.使用外连接实现任务4的查询。

SELECT i.id,i.name,COUNT(course_id)as Number
FROM instructor as i
LEFT OUT JOIN teaches t
ON i.id=t.id
GROUP BY NAME,i.id;

6.找出工资高于Comp.Sci.系每个教师的所有教师的ID、姓名、所在院系

select ID,name,dept_name
from instructor
where sallary>all(select salary
from instructor
where dept_name='Comp.Sci.');

7.找出工资最高的所有教师及教师所在教学楼

with id(course_id)as(
select course_id
from teaches
where teaches.ID in (select ID
from instructor
where salary in (select max (salary)
from instructor)))
select building,
(select name
from instructor
where salary in (select max (salary)
from instructor)
)as name
from section join id on section.course_id=id.course_id;

8.找出名叫Einstein的教师所教授的所有学生的ID、姓名及获得的学分

select ID,name,tot_cred
from student
where student.ID in (select s_ID
from advisor join instructor
on i_ID in(
select ID
from instructor
where name='Einstein'));

实验四:数据库的组合、统计查询实验

  1. 掌握SQL组合、统计查询语法。

(2)掌握SQL Server查询分析器的使用方法;

  1. 分组查询实验。

2、统计查询实验      

1.找出2010秋学期讲了课的教师数量

           2.显示每个系教师平均工资

           3.统计在2009年春开课,但不在2010年春开课的课程的数量

           4. 找出学生总数,他们选修了ID为10100教师所授的课程段

           5.找出平均工资最高的系

           6.找出选修了Computer Science系开设的所有课程的学生

           7.找出所有在2009年最多开设一次的课程

           8.找出系平均工资超过42000元的那些系中教师平均工资

1. SQL查询语句分析与设计。

2. 查询分析器中撰写语句

3. 查询并观察执行结果

4. 撰写查询报告

5. 完成上述8个查询实验(截图并说明,有SQL语句,有运行结果)

PC机,SQL Server 2019

DXJG数据库。

1、找出2010秋学期讲了课的教师数

select count(distinct ID)
from teaches
where semester='Fall' and year=2010;

2、显示每个系教师平均工资

select dept_name,avg(salary)as salary_avg
from instructor
group by dept_name;

3、统计在2009年春开课,但不在2010年春开课的课程的数量

with count_c(num) as(
(select course_id
from section
where semester='Spring' and year=2009)
except
(select course_id
from section
where semester='Spring' and year=2010)
)
select count(num)as Course_Number
from count_c;

4.找出学生总数,他们选修了ID为10100教师所授的课程段

select count (distinct ID)
from takes
where course_id in(
select course_id
from teaches
where teaches.ID=10100)
and sec_id in (
select sec_id
from teaches
where teaches.ID=10100)
and semester in (
select semester
from teaches
where teaches.ID=10100)
and year in (
select year
from teaches
where teaches.ID=10100)

5.找出平均工资最高的系

select dept_name
from instructor
group by dept_name
having avg(salary)>=all(select avg(salary) from instructor
group by dept_name);

6.找出选修了Computer Science系开设的所有课程的学生

select ID, name
from student
where not exists ((select course_id from course
where dept_name='Computer Science')
except
(select course_id from takes where student.Id=takes.ID)
);

7.找出所有在2009年最多开设一次的课程

select C.course_id
from course as C
where 1>= (select count(S.course_id)
from section as S
where C.course_id=S.course_id and S.year=2009);

8.找出系平均工资超过42000元的那些系中教师平均工资

select dept_name, salary_avg
from (select dept_name,avg(salary) as salary_avg 
from instructor
group by dept_name)as dept_avg
where salary_avg>42000
order by salary_avg desc;

 以上就是实验三四的内容,可能会有拼写错误,改一改应该没啥大事。

这篇关于H埋土数据库实验(三到四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739424

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方