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


 

  • 22
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库系统概念(杨冬青)习题答案Chapter 1 provides a general overview of the nature and purpose of database systems. The most important concept in this chapter is that database systems allow data to be treated at a high level of abstraction. Thus, database systems differsignificantly from the file systemsand general purpose programming environments with which students are already familiar. Another important aspect of the chapter is to provide motivation for the use of database systems as opposed to application programs built on top of file systems. Thus, the chapter motivates what the student will be studying in the rest of the course. The idea of abstraction in database systems deserves emphasis throughout, not just in discussion of Section 1.3. The overview of the structure of databases is, of necessity, rather brief, and is meant only to give the student a rough idea of some of the concepts. The student may not initially be able to fully appreciate the concepts described here, but should be able to do so by the end of the course. The specifics of the E-R, relational, and object-oriented models are covered in later chapters. These models can be used in Chapter 1 to reinforce the concept of abstraction, with syntactic details deferred to later in the course. If students have already had a course in operating systems, it is worthwhile to point out how the OS and DBMS are related. It is useful also to differentiate between concurrency as it is taught in operating systems courses (with an orientation towardsfiles, processes,and physical resources)and database concurrency control (with an orientation towards granularity finer than the file level, recoverable transactions, and resources accessed associatively rather than physically). If students are familiar with a particular operating system, that OS’s approach to concurrent file access may be used for illustration.
### 回答1: 《数据库系统概念第七版pdf》是一本介绍数据库系统概念的书籍,该书对于学习数据库系统的人来说是非常有用的。该书从数据库基本概念入手,涵盖了数据库设计、数据模型、数据规范化等基本内容,并介绍了关系型数据库、对象型数据库、文本型数据库等多种数据库类型。 书中详细介绍数据库管理系统,涵盖了数据存储、数据查询、数据修改、事务处理等方面。此外,书中还介绍数据库安全性、并发性、分布式数据库等内容,这些是数据库系统中非常重要的问题。 该书使用简单易懂的语言,配合实例和图表,能够更好地帮助读者学习和理解数据库系统的基本概念。该书结构清晰,架构合理,节之间内容严密衔接。此外,书后还附有练习题、答案,方便读者复习和检测学习效果。 总之,《数据库系统概念第七版pdf》是一本深入浅出、权威性强的数据库书籍,可以帮助读者快速掌握数据库的基本概念,提高数据库设计、开发和管理的能力。不仅适合数据库工程师、数据分析师、数据仓库开发人员等专业人士阅读,也适合学生和初学者跟着书中的内容进行自学。 ### 回答2: 《数据库系统概念第七版pdf》是一本关于数据库系统相关概念和技术的高质量教材,是数据管理和数据库领域的重要参考书。本书首先介绍数据库系统的基本概念和操作原理,如数据库系统结构、数据模型、数据完整性、事务处理和并发控制等。同时,还介绍了一些常见的数据库实现方式和技术,如关系型数据库SQL语言、数据仓库、数据挖掘和分布式数据库等。 本书涵盖了从基础知识到高级概念的内容,内容丰富全面,给读者提供了一个完整深入的学习体系。每个节结合具体实例详细讲解数据库系统相关的知识点,引导读者深入了解数据库系统的实际操作和应用。 本书还特别强调了数据库系统的“安全性”与“可靠性”,并介绍了一些最新的安全性和可靠性保障措施,如数据备份、恢复、加密、访问控制等。这些措施可以有效降低数据库系统出现问题的风险,保证数据库系统的正常运行。 因此,该书对于计算机信息、软件工程、数据科学等相关领域的学生和研究者具有很高的参考价值,也是企业员工学习数据库系统知识的重要参考资料。 ### 回答3: 数据库系统概念第七版是一本关于数据库系统的经典教材。该书介绍数据库系统的基本概念、技术和理论,并提供了实践案例,可以帮助读者深入理解数据库系统。 该教材从数据库概念入手,系统地介绍数据库系统的组成部分,包括数据模型、关系型数据管理系统、查询处理、事务处理和并发控制等关键技术。此外,该教材还介绍了对象关系型数据库、NoSQL数据库和分布式数据库等最新领域的知识,帮助读者了解目前数据库系统的最新进展。 除了理论学习,该书还提供了大量的实践案例,帮助读者将理论应用到实际项目中。这些实践案例涵盖了数据库设计、查询优化、事务处理等多个方面,通过这些案例,读者可以更好地掌握数据库系统的实际应用。 总之,数据库系统概念第七版是一本非常优秀的数据库系统教材,对于计算机科学相关专业的学生和从业人员都有很大的参考价值。无论是学习数据库系统的基础知识,还是深入研究数据库系统的最新技术,都可以从该书中获得丰富的知识和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值