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

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete