数据库系统概念 第七版 中文答案 第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语句。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pwn】cmcc_simplerop --rop链的构造

程序保护情况检查 32位程序&#xff0c;堆栈不可执行 主函数&#xff1a; 左边又是一堆函数&#xff0c;file看一下 发现是静态链接&#xff0c;那ret2libc不用考虑了&#xff0c;接着看一下有没有int 80 那可以考虑利用rop链调用execve函数&#xff0c;用系统调用的函数参数是…

弹性布局(Flex)

目录 1、概述 2、基本概念 3、布局方向 4、布局换行 5、主轴对齐方式 6、交叉轴对齐方式 6.1、容器组件设置交叉轴对齐 6.2、子组件设置交叉轴对齐 7、内容对齐 8、自适应拉伸 9、相关实例 1、概述 弹性布局&#xff08;Flex&#xff09;提供更加有效的方式对容器中…

《GreenPlum系列》GreenPlum初级教程-03GreenPlum系统管理

文章目录 第三章 GreenPlum系统管理1.关于GreenPlum数据库发布版本号2.启动和停止GreenPlum数据库2.1 启动数据库2.2 重启数据库2.3 仅重新载入配置文件更改2.4 停止GreenPlum数据库2.5 停止客户端进程 3.GreenPlum数据库状态查询4.访问GreenPlum数据库4.1 数据库会话参数4.2 支…

C++力扣题目106,105--中序和后序,前序和中序遍历构造二叉树

106.从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&am…

Gateway反向代理配置

前言 一般而言&#xff0c;反向代理都是在Nginx中来实现的&#xff0c;其实Gateway也可以作为反向代理服务&#xff0c;不过一般不会这么做&#xff0c;只不过最近的项目&#xff0c;在通过Nginx反向代理之后&#xff0c;iPhone手机访问接口代理地址会异常&#xff0c;安卓手机…

【服务器】服务器管理 - cockpit开启

开启cockpit #!/bin/bashsed -i s/is():where()/is(*):where(*)/ /usr/share/cockpit/static/login.jssystemctl enable --now cockpit.socket #开启cockpit服务systemctl start cockpit.socket 登录 https://ip:9090

MFC 记录字段交换(RFX)学习

MFC ODBC 数据库类可自动移动数据源与记录集对象之间的数据。 从 CRecordset 派生类且不使用批量取行时,数据将通过记录字段交换 (RFX) 机制进行传输。 如果已在派生的 CRecordset 类中实现批量取行,则此框架将使用批量记录字段交换(批量 RFX)机制来传输数据。 RFX 类似于…

jQuery文字洗牌动效

html代码 效果展示 jQuery文本洗牌效果插件 <div class"container"><p class"lead">文本洗牌动画特效</p><h1 id"basic">A time to seek,</h1><h1 id"custom">and a time to lose;</h1> &…

Unity Shader 开发入门3 —— 坐标空间变换

文章目录 一、变换矩阵1.1 齐次坐标1.2 平移矩阵1.3 旋转矩阵1.4 缩放矩阵1.5 复合变换 二、世界空间变换三、观察空间变换四、裁剪空间变换4.1 视椎体4.2 齐次裁剪空间4.3 视椎体投影方式 五、屏幕空间变换 ​ 在 Shader 开发中存在不同的坐标空间&#xff0c;包括&#xff1a…

Open3D 截取感兴趣的点云部分

import time import open3d as o3d; import numpy as np; import matplotlib.pyplot as plt from scipy.signal import find_peaks#坐标 mesh_coord_frame o3d.geometry.TriangleMesh.create_coordinate_frame(size355, origin[0, 0, 0]) #mesh_coord_frame mesh_coord_frame…

云服务器十大服务商——云服务器哪家好用

云服务器哪家便宜&#xff1f;2024最新整理你要的都在这&#xff01;头部云厂商阿里云、腾讯云、华为云、京东云、UCloud等都在降价&#xff0c;阿腾云atengyun.com分享2024年云服务器租用价格给你惊喜&#xff01; 便宜云服务器阿里云腾讯云华为云 2024年便宜云服务器汇总&…

性能测试分析案例-定位服务吞吐量下降

环境准备 预先安装 docker、curl、wrk、perf、FlameGraph 等工具 sudo yum groupinstall Development Tools # 安装火焰图工具 git clone https://github.com/brendangregg/FlameGraph # 安装wrk git clone https://github.com/wg/wrk cd wrk && make && sud…

Oracle导入导出dump

创建目录&#xff1a; create directory *** as /bak; #***名称可以随便命名 需要手工创建/bak,并且此目录oracle用户有读取&#xff0c;目录地址空间要够用。 查看所有目录 select * from DBA_DIRECTORIES;---查询导入导出的目录 导入 impdp ****/**** direc…

【C语言】一.数据的存储(整数浮点数在内存中的存储||大小端||原码反码补码)

0x00. 引言 相比其他的博客&#xff0c;本博客就主打一个简单干练&#xff0c;精华萃取。话不多说&#xff0c;直接开搞 0x01. 整数在内存中的存储 我们先来看一个例子 int a10; long long b20;这里定义了两个变量a和b&#xff0c;从右向左看10赋值给变量a&#xff0c;a的类…

创建了使用说明书之后,怎样才能监测用户的行为和反馈?

在当今数字化的时代&#xff0c;了解用户的行为和反馈对于产品和服务的质量提升至关重要。对于使用说明书而言&#xff0c;仅仅创建出来是远远不够的&#xff0c;还需要持续地监测用户的行为和反馈&#xff0c;以便不断优化和改进。那怎样才能有效地监测用户的行为和反馈呢&…

vue3打包后页面空白解决方法

vue3打包后页面空白解决方法 问题解决方法 问题 最近写一个小项目 没有打包的时候一切正常 技术栈用的vue3 vite 我用的是npm创建的项目 npm init vuelatest问题一 &#xff1a;打包后页面空白&#xff0c;什么都没有 问题二&#xff1a;刷新页面后找不到资源 把url的inde…

最佳解决方案:如何在网络爬虫中解决验证码

Captcha&#xff08;全自动区分计算机和人类的公开图灵测试&#xff09;是广泛应用的安全措施&#xff0c;用于区分合法的人类用户和自动化机器人。它通过呈现复杂的挑战&#xff0c;包括视觉上扭曲的文本、复杂的图像或复杂的拼图等方式&#xff0c;要求用户成功解决这些挑战以…

5、MAE:探索视觉预训练模型

目录 1、论文 2、背景与动机 3、回答的问题 4、创新与卖点 5、实现细节 模型框架 具体步骤 简单代码示例 6、一些资料 1、论文 Masked Autoencoders Are Scalable Vision Learnershttps://arxiv.org/pdf/2111.06377.pdf 2、背景与动机 在深度学习和计算机视觉的领域中…

Centos7,Python3.7.6安装模块Crypto,pycryptodome,ibm_db,requests,requests_pkcs12

Centos7,Python3.7.6安装模块Crypto&#xff0c;pycryptodome&#xff0c;ibm_db&#xff0c;requests,requests_pkcs12 Python版本&#xff1a;python3.7.6 对应的各种模块 前言&#xff1a;把python项目放到linux上运行时&#xff0c;提示缺少各种模块&#xff0c;安装命令…

【NetApp数据恢复】NetApp存储中Oracle数据库数据恢复案例

NetApp数据恢复环境&#xff1a; NetApp某型号存储&#xff0c;存储中有数十块SAS硬盘&#xff0c;该型号NetApp存储硬盘是扇区大小是520字节。存储中的lun都映射给小型机使用&#xff0c;存放Oracle数据库文件&#xff0c;采用ASM裸设备存储方式。 NetApp存储故障&#xff1a…