数据库系统概念 第七版 中文答案 第3章 SQL介绍
3.1 将以下查询使用SQL语言编写,使用大学数据库模式。 (我们建议您实际在数据库上运行这些查询,使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明,请参阅上述网站。)

a. 查找计算机科学系中学分为3的课程的标题。
b. 查找所有由名为Einstein的教师教授的学生的ID;确保结果中没有重复项。
c. 查找任何教师的最高工资。
d. 查找所有薪水最高的教师(可能有多个薪水相同的教师)。
e. 查找在2017年秋季开设的每个课程部分的注册人数。
f. 查找2017年秋季所有部分中的最大注册人数。
g. 查找在2017年秋季拥有最大注册人数的部分。.
Answer:
a. 查找计算机科学系中学分为3的课程的标题。

b. 查找所有由名为Einstein的教师教授的学生的ID;确保结果中没有重复项。

c. 查找任何教师的最高工资。

d. 查找所有薪水最高的教师(可能有多个薪水相同的教师)。

e. 查找在2017年秋季开设的每个课程部分的注册人数。

或者

f. 查找2017年秋季所有部分中的最大注册人数。

g. 查找在2017年秋季拥有最大注册人数的部分。

3.2 假设你有一个关系grade_points(grade,points),它提供了从takes关系中的用字母表示的成绩等级到数值分数的转换;例如,“A”成绩可以被指定为对应于4分,而“A-”对应于3.7分,“B+”对应于3.3分,“B”对应于3分,依此类推。学生为提供的课程部分获得的成绩点定义为课程的学分乘以学生获得的成绩的数值点。
鉴于上述关系和我们的大学模式,请在SQL中编写以下每个查询。为简化起见,你可以假设takes关系中的元组没有成绩的空值。
a. 查找学生ID为'12345'的学生在所有选修的课程中获得的总成绩点。
b. 查找上述学生的平均绩点(GPA),即总成绩点除以相关课程的总学分。
c. 查找每个学生的ID和平均绩点。
d. 现在重新考虑前面部分的答案,假设某些成绩可能为null。解释你的解决方案是否仍然有效,如果无效,提供适当处理null的版本。
Answer:
a. 查找学生ID为'12345'的学生在所有选修的课程中获得的总成绩点。

在上面的查询中,没有上过任何课程的学生不会有任何元组,而我们期望得到0作为答案。解决这个问题的一种方法是使用外部连接操作,我们将在后面的第4章中学习。另一种确保我们得到0作为答案的方法是通过以下查询:

b. 查找上述学生的平均绩点(GPA),即总成绩点除以相关课程的总学分。

和以前一样,没有修过任何课程的学生不会出现在上述成绩中;我们可以通过使用这个问题前面部分修改过的查询来确保这样一个学生出现在结果中。然而,在这种情况下的另一个问题是,积分的总和也将为0,从而导致除以零的情况。事实上,在这种情况下,唯一有意义的定义GPA的方法是将其定义为null。通过在上面的查询中添加以下联合子句,我们可以确保这样的学生以零GPA出现在结果中。

c. 查找每个学生的ID和平均绩点。


d. 现在重新考虑前面部分的答案,假设某些成绩可能为null。解释你的解决方案是否仍然有效,如果无效,提供适当处理null的版本。
3.3 编写以下在数据库中使用大学模式的插入、删除或更新的SQL语句。
a. 将计算机科学系每位教师的薪水提高10%。
b. 删除所有从未开设过课程的课程(即在“section”关系中不存在的课程)。
c. 将总注册学分大于100的每位学生插入到相同系别作为教师,并设置薪水为$10,000。
Answer:
a. 将计算机科学系每位教师的薪水提高10%。

b. 删除所有从未开设过课程的课程(即在“section”关系中不存在的课程)。

c. 将总注册学分大于100的每位学生插入到相同系别作为教师,并设置薪水为$10,000。

3.4 考虑图3.17中的保险数据库,其中主键已被下划线标识。为该关系数据库构建以下SQL查询。
a. 查找在2017年其车辆出现交通事故的人的总数。
b. 删除属于ID为'12345'的人所有年份为2010的车辆。

Answer:
a. 查找在2017年其车辆出现交通事故的人的总数。

b. 删除属于ID为'12345'的人所有年份为2010的车辆。

3.5 假设我们有一个关系marks(ID, score),我们希望根据得分为学生分配成绩,规则如下:如果score < 40,则为F级别,如果40 <= score < 60,则为C级别,如果60 <= score < 80,则为B级别,如果80 <= score,则为A级别。编写SQL查询执行以下操作:
a. 根据marks关系显示每个学生的成绩。
b. 查找每个等级的学生数量。
Answer:
a.根据marks关系显示每个学生的成绩。
. 
b. 查找每个等级的学生数量.

3.6 SQL中的LIKE操作符在大多数系统中是区分大小写的,但是可以使用字符串的lower()函数来执行不区分大小写的匹配。为了演示如何做到这一点,请编写一个查询,找到部门名称中包含字符串“si”的子串,而不考虑大小写。
Answer:

3.7 考虑以下 SQL 查询
SELECT p.a1 FROM p, r1, r2
WHERE p.a1 = r1.a1 OR p.a1 = r2.a1
在什么条件下,前述查询选择了在 r1 或 r2 中的 p:a1 的值?请仔细分析在 r1 或 r2 可能为空的情况。
Answer:
该查询选择了 p.a1 的那些值,这些值等于 r1.a1 或 r2.a1 的某个值,当且仅当 r1 和 r2 均为非空时。如果 r1 和/或 r2 中有一个或两个为空,则 p、r1 和 r2 的笛卡尔积为空,因此查询的结果为空。如果 p 本身为空,则结果也为空。
3.8 考虑图 3.18 中的银行数据库,其中主键已经被下划线标示。构造如下 SQL 查询:

a. 查找银行中每个具有账户但没有贷款的客户的 ID。
b. 查找每个与客户 12345 同住在相同街道和城市的客户的 ID。
c. 查找每个至少有一个在银行拥有账户且住在“Harrison”的客户的分行的名称。
Answer:
a. a. 查找银行中每个具有账户但没有贷款的客户的 ID。

b. 查找每个与客户 12345 同住在相同街道和城市的客户的 ID。

c. 查找每个至少有一个在银行拥有账户且住在“Harrison”的客户的分行的名称。

3.9 考虑图 3.19 中的关系数据库,其中主键已被下划线标示。给出以下每个查询的 SQL 表达式。

a. 查找每个在“First Bank Corporation”工作的员工的 ID、姓名和居住城市。
b. 查找每个在“First Bank Corporation”工作且薪水超过 $10000 的员工的 ID、姓名和居住城市。
c. 查找每个不在“First Bank Corporation”工作的员工的 ID。
d. 查找每个收入高于“Small Bank Corporation”所有员工的员工的 ID。
e. 假设公司可以位于多个城市。查找每个位于“Small Bank Corporation”所在的每个城市的公司的名称。
f. 查找具有最多员工的公司(或在有最多员工并列的情况下的所有公司)的名称。
g. 查找每个员工平均工资高于“First Bank Corporation”平均工资的公司的名称。
Answer:
a. 查找每个在“First Bank Corporation”工作的员工的 ID、姓名和居住城市。

b. 查找每个在“First Bank Corporation”工作且薪水超过 $10000 的员工的 ID、姓名和居住城市。

c. 查找每个不在“First Bank Corporation”工作的员工的 ID。

如果允许人们出现在雇员中而不出现在作品中,解决方案就稍微复杂一些。也可以使用第4章中讨论的外连接。

d. 查找每个收入高于“Small Bank Corporation”所有员工的员工的 ID。

上如果人们可能为几家公司工作,我们希望考虑每个人的总收入,问题就复杂多了。但请注意事实上,ID是works的主键,这意味着情况并非如此。
e. 假设公司可以位于多个城市。查找每个位于“Small Bank Corporation”所在的每个城市的公司的名称。
方法1

方法2

f. 查找具有最多员工的公司(或在有最多员工并列的情况下的所有公司)的名称。

g. 查找每个员工平均工资高于“First Bank Corporation”平均工资的公司的名称。

3.10 考虑图3.19中的关系数据库。为以下每个情况提供一个SQL表达式:
a. 修改数据库,使员工ID为“12345”的员工现居住在“Newtown”。
b. 给“First Bank Corporation”的每位经理加薪10%,除非工资超过$100,000;在这种情况下,只加薪3%。
Answer:
a. 修改数据库,使员工ID为“12345”的员工现居住在“Newtown”。

b. 给“First Bank Corporation”的每位经理加薪10%,除非工资超过$100,000;在这种情况下,只加薪3%。

如果以相反的顺序执行上述更新,结果会有所不同。我们以下提供一种更安全的解决方案,使用CASE语句。
相关文章:
数据库系统概念 第七版 中文答案 第3章 SQL介绍
3.1 将以下查询使用SQL语言编写,使用大学数据库模式。 (我们建议您实际在数据库上运行这些查询,使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明,请参阅上述网站。) a. 查找计算机…...
什么是数通技术?以太网交换机在数通技术中的精要
什么是数通技术? 数通技术是指数字通信技术,它涵盖了数字信号处理、数据传输、网络通信等领域。通信工程师在数通技术中负责设计、建设和维护数字通信系统,以实现可靠、高效的信息传输。这涉及到数字信号的编解码、调制解调、数据压缩、网络…...
php 的数学常用函数
目录 1.常用列表 2.代码示例 1.常用列表 函数名描述输入输出abs()求绝对值数字绝对值数字ceil()进一法取整浮点数进一取整floor()舍去法求整浮点数直接舍去小数部分fmod()浮点数取余 两个浮点 数,x>y 浮点余数 pow()返回数的n次方基础数n次方乘方值round()浮点数四舍五入…...
Netty-Netty组件了解
EventLoop 和 EventLoopGroup 回想一下我们在 NIO 中是如何处理我们关心的事件的?在一个 while 循环中 select 出事 件,然后依次处理每种事件。我们可以把它称为事件循环,这就是 EventLoop 。 interface io.netty.channel. EventLoo…...
银行的压力测试如何进行?
为什么要进行压力风险测试? 压力风险测试的最终目的是测试银行在极度恶劣的市场环境中是否有足够的资本维持运转。 题主链接中的一级资本充足率(Tier 1 capital ratio) 亦即衡量标准,这个数字越大,表明银行资本约充裕,可以在停止…...
QtService、托盘程序使用
1、QtService 使用QtService实现Qt后台服务程序 用QT创建一个Windows Service以及踩到的若干坑 2、托盘程序 Qt之程序最小化托盘显示及操作 Qt系统托盘程序的实现...
使用Linux防火墙管理HTTP流量
在Linux系统中,防火墙是用于控制网络流量的重要工具。通过防火墙,你可以根据需要限制、过滤或允许特定的网络流量,从而提高系统的安全性。在处理HTTP流量时,防火墙可以帮助你实施访问控制、流量监控和其他安全策略。 iptables i…...
图鸟引入多套字体图标的方式教程
https://www.yuque.com/tuniao/qunyou/tgfvpg ①上传icon,生成iconfont.css 将css文件放这里 app.vue全局引入 适当改造iconfont.css的写法,方便调用...
在openEuler环境下快速编译GreatSQL RPM包
在上一篇中,已经介绍了在CentOS环境下编译GreatSQL RPM包的过程,本文再介绍如何在openEuler环境下编译GreatSQL RPM包。 运行环境是docker中的openEuler 22.03 x86_64: $ docker -v Docker version 20.10.10, build b485636$ docker run -itd…...
C语言基础语法跟练 day3
31、不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。 #include <stdio.h> int main() {int i 0;scanf("%d",&i);printf("%d",1<<i);return 0; } 32、问题:一年约有 3.…...
【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理地址对象 ❀ FortiGate 防火墙
【简介】在很多使用环境下,我们需要对指定国家的IP地址进行允许或禁止访问操作,例如只允许访问国内IP。以前只能手动添加IP地址对象到地址组,繁杂且效率低下,Fortinet提供了基于地理位置的IP库,就可以解决这个问题。 I…...
NX二次开发点通过云配准获取相同体
先找到体的参考方向(这个参考方向对于相同体重合之后是相同的),这个时候我们的思路是三个不共线的点确定一个坐标系,然后和绝对方向求转换矩阵。然后获取体的所有边的几何中心,把这些点通过转换矩阵转换之后存起来&…...
5.4 Android BCC环境搭建(eadb版 下)
四,BCC使用示例 这里以tcplife为例,来显示TCP会话的生命周期和吞吐量统计。 4.1 进入/bcc/tools目录 root@localhost:/bcc# cd tools/ root@localhost:/bcc/tools# ls CMakeLists.txt javacalls.sh rubystat_example.txt argdist.py javacalls_e…...
【AI视野·今日Robot 机器人论文速览 第七十四期】Wed, 10 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Wed, 10 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Hold em and Fold em: Towards Human-scale, Feedback-Controlled Soft Origami Robots Authors Immanuel Ampomah Mensah, Je…...
服务端性能测试——性能测试工具JMeter-L1
第一遍没学懂,后续文章会更新~ 目录: 1.JMeter介绍与安装Meter简介JMeter安装2.JMeter的运行JMeter运行、界面功能简介3.使用代理服务器录制请求录制压测脚本(一)Web端脚本录制方法4.测试计划5.线程组6.控制器7.JMeter采样器/取…...
C# OpenCvSharp DNN FreeYOLO 目标检测
目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 目标检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…...
U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题
一、使用U盘制作启动盘遇到问题 下载了windows原版镜像,验证了md5,确保文件没有损坏。使用ultroiso制作u盘启动盘,开始安装后出现下图的报错: 在网上搜索解决方案,主要有以下几种: 安装的时候,…...
正则表达式、文件访问(Python实现)
一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…...
ES高级查询
ES中提供了一种强大的检索数据方式,这种检索方式称为Query DSL,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.常见查询 1.1查询所有[match_all] match_all关键字:返回索引中的全部文档。 GET /products/_search { &…...
RT-Thread入门笔记6-空闲线程及两个常用的钩子函数
空闲线程 空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…...
从零到一:AI工程开源资源全栈指南与实战应用
从零到一:AI工程开源资源全栈指南与实战应用 【免费下载链接】aie-book [WIP] Resources for AI engineers. Also contains supporting materials for the book AI Engineering (Chip Huyen, 2025) 项目地址: https://gitcode.com/GitHub_Trending/ai/aie-book …...
高频电路布线十大实用技巧与EMC解决方案
1. 高频电路布线的基本概念与挑战高频电路通常指工作频率达到或超过45MHz~50MHz的数字逻辑电路,当这类电路占整个电子系统1/3以上比重时,就必须考虑高频特性带来的设计挑战。我在实际项目中多次遇到这样的场景:一个原本在低频下工作良好的电路…...
嵌入式Linux C++开发框架AppKit实战解析
1. 嵌入式Linux C开发框架AppKit深度解析在嵌入式Linux开发领域,C开发者经常面临一个尴尬局面:标准库功能有限,而ROS等框架又过于庞大。AppKit框架正是为解决这一痛点而生,它提供了恰到好处的中间层抽象。我在多个工业控制项目中实…...
如何在旧款Mac上安装最新macOS:OpenCore Legacy Patcher完整指南
如何在旧款Mac上安装最新macOS:OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方停止支持的老旧Ma…...
如何用Python免费下载B站4K大会员视频:bilibili-downloader完整指南
如何用Python免费下载B站4K大会员视频:bilibili-downloader完整指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为…...
5分钟搞定OpenCV摄像头实时监控(附Jupyter避坑指南)
5分钟搞定OpenCV摄像头实时监控(附Jupyter避坑指南) 在计算机视觉领域,实时摄像头监控是最基础也最实用的功能之一。无论是安防监控、人脸识别还是简单的视频采集,OpenCV都提供了简洁高效的接口。但对于Python初学者和Jupyter Not…...
大数据在电力行业应用案例解析 -【电力技术】(25)RPA 在电力业扩报装中的自动化应用与实现
目录 一、引言:业扩报装的效率瓶颈 二、RPA 技术特点与电力适用性 三、RPA 在业扩报装中的四大核心应用场景 3.1 预受理自动审核 3.2 批量用户信息自动导入 3.3 勘查工单自动派工 3.4 流程自动流转与归档 四、RPA 实施流程(标准化) 五、典型应用成效 六、完整可运行…...
Libre Barcode:终极免费条码字体解决方案,让条码生成变得简单高效
Libre Barcode:终极免费条码字体解决方案,让条码生成变得简单高效 【免费下载链接】librebarcode Libre Barcode: barcode fonts for various barcode standards. 项目地址: https://gitcode.com/gh_mirrors/li/librebarcode Libre Barcode 是一个…...
汇川小型机 H5U编写程序 设备采用回转hu小型机编写程序不含的硬件配置有ECT的总线
汇川小型机 H5U编写程序 设备采用回转hu小型机编写程序不含的硬件配置有ECT的总线,包括汇川660系列伺服驱动器以及Io模块。 设备程序分段明确采用梯形图编写更加方便,直观,易懂各个伺服轴密切配合,实现收放卷pid调节,以…...
实战向 Python 汽车推荐系统 Django框架 可视化 协同过滤算法 数据分析 大数据 机器学习(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
