文章目录

  • 表格示例
  • 习题
    • 3.1
    • 3.3
    • 3.11
    • 3.12
    • 3.13
    • 3.14
    • 3.23
    • 3.24

答案仅供参考,有错误望在评论区提出

大学模式数据库的表格:

表格示例

习题

3.1

# a.
SELECT title
FROM course
WHERE dept_name='Comp. Sci.' AND credits=3;# b.
SELECT DISTINCT takes.ID
FROM (instructor NATURAL JOIN teaches) JOIN takes
WHERE `name` = 'Einstein' AND teaches.course_id = takes.course_id AND teaches.sec_id = takes.sec_id AND teaches.semester = takes.semester AND teaches.year = takes.year; # c.
SELECT MAX(salary)
FROM instructor# d.
SELECT NAME
FROM instructor
WHERE salary = (
SELECT MAX(salary)
FROM instructor)# e.
SELECT takes.course_id, takes.sec_id, COUNT(*)
FROM section NATURAL JOIN takes
WHERE takes.semester = 'Fall' AND takes.year = 2009
GROUP BY takes.course_id, takes.sec_id# f.
SELECT MAX(stu_num)
FROM (
SELECT COUNT(*) AS stu_num
FROM section NATURAL JOIN takes
WHERE takes.semester = 'Fall' AND takes.year = 2009
GROUP BY takes.course_id, takes.sec_id
) AS stu_nums# g.
WITH stu_nums AS(
SELECT COUNT(*) AS stu_num, takes.course_id, takes.sec_id
FROM section NATURAL JOIN takes
WHERE takes.semester = 'Fall' AND takes.year = 2009
GROUP BY takes.course_id, takes.sec_id
)
SELECT course_id, sec_id
FROM stu_nums
WHERE stu_num = (
SELECT MAX(stu_num)
FROM stu_nums)

3.3

# a.
UPDATE instructor
SET salary = 1.1*salary
WHERE dept_name = 'Comp. Sci.'# b.
DELETE FROM course
WHERE course_id NOT IN(
SELECT course_id
FROM section)# c.
INSERT INTO instructor
SELECT ID, `name`, dept_name, 10000
FROM student
WHERE tot_cred > 100

3.11

# a.
SELECT `name`
FROM student NATURAL JOIN takes NATURAL JOIN course
WHERE dept_name = 'Comp. Sci.'# b.
SELECT `ID`, `name`
FROM student
EXCEPT
SELECT `ID`, `name`
FROM student NATURAL JOIN takes
WHERE `year` < 2009  # c.
SELECT `dept_name`, MAX(salary)
FROM instructor
GROUP BY dept_name#d.
SELECT MAX(salary)
FROM
(SELECT `dept_name`, MAX(salary)
FROM instructor
GROUP BY dept_name)

3.12

# a.
INSERT INTO course
VALUES('CS-001', 'Weekly Seminar', 'Comp. Sci.', 0)# b.
INSERT INTO section(`year`, semester, sec_id)
VALUES('2009', 'Fall', 1)# c.
INSERT INTO takes
SELECT ID, 'CS-001', 1, 'Fall', '2009', NULL
FROM student
WHERE dept_name = 'Comp. Sci.'# d.
DELETE FROM takes
WHERE course_id = 'CS-001' AND sec_id = 1 AND semester = 'Fall' AND `year` = 2009
AND ID IN
(SELECT ID
FROM student
WHERE `name` = 'Chavez')# e.
DELETE FROM takes
WHERE course_id = 'CS-001'DELETE FROM section
WHERE course_id = 'CS-001'DELETE FROM course
WHERE course_id = 'CS-001'#上面的顺序不能改变,因为takes的course_id外码依赖于section,
# section的course_id外码依赖于course,改变顺序会导致外码冲突# f.
DELETE FROM takes
WHERE course_id IN
(SELECT course_id
FROM course
WHERE LOWER(title) LIKE '%database%')  

3.13


CREATE TABLE person
(driver_id VARCHAR(50),
`name` VARCHAR(50),
address VARCHAR(50),
PRIMARY KEY (driver_id))CREATE TABLE car
(license VARCHAR(50),
model VARCHAR(50),
`year` INTEGER,
PRIMARY KEY (license))CREATE TABLE accident
(report_number INTEGER,
`date` DATE,
location VARCHAR(50),
PRIMARY KEY (report_number))CREATE TABLE owns
(driver_id VARCHAR(50),
license VARCHAR(50),
PRIMARY KEY (driver_id,license)
foriegn KEY (driver_id) REFERENCES person
foriegn KEY (license) REFERENCES car)CREATE TABLE participated
(report_number INTEGER,
license VARCHAR(50),
driver_id VARCHAR(50),
damage_amount INTEGER,
PRIMARY KEY (report_number,license)
foriegn KEY (license) REFERENCES car
foriegn KEY (report_number) REFERENCES accident))

3.14

# a.
SELECT COUNT(DISTINCT report_number)
FROM person NATURAL JOIN owns NATURAL JOIN participated NATURAL JOIN accident
WHERE `name` = 'John Smith'
# 这里用distinct是因为同一个事故可能有多个人参与,而一辆车有可能被多个人多拥有(owns)# b.
UPDATE participated
SET damage_amount = 3000
WHERE report_number = 'AR2197' AND license = 'AABB2000'

3.23



# 再自然连接一个section表也不会对结果产生影响,原因有二:
# 1.select语句后跟的前四个属性都来自takes表,且它们都外码依赖于section表,所以自然连接之后,不会使原来不连接时的元组少
# 2.上面四个属性是section表的主码,具有唯一性,因此连接section之后不会增加结果原来元组的数目

3.24



上面代码的意思是找出这些院系,它们各自的总工资比院系的平均工资多或者相等。(找出有钱的院系)

# 使用标量子查询
SELECT DISTINCT dept_name
FROM instructor i1
WHERE
(SELECT SUM(salary)
FROM instructor i2
WHERE i2.dept_name = i1.dept_name)
>=
(SELECT AVG(s)
FROM
(SELECT SUM(salary) AS s
FROM instructor
GROUP BY dept_name))

SQL学习03---数据库系统概念第6版第3章习题答案相关推荐

  1. 数据库系统概念第六版 第五章练习题 2 4

    数据库系统概念第六版 第五章练习题 2 4 5.2 写一个使用JDBC元数据特性的JAVA函数,该函数用ResultSet作为输入参数,并把结果输出为用合适的名字作为列名的表格形式. (对JAVA不太 ...

  2. 数据库系统概念第六版 第四章练习题 12 14 18

    数据库系统概念第六版 第四章练习题 12 14 18 4.12 对于图中的数据库,写出一个查询来找到那些没有经理的雇员.注意一个雇员可能只是没有列出其经理或者可能有null经理.使用外连接书写查询,然 ...

  3. python核心教程第二版答案_python核心编程第二版第4章习题答案.docx

    python核心编程第二版第4章习题答案.docx 4-1.Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 答案: 所有的 Python 对象都拥有三个特性:身 ...

  4. Java2实用教程第五版+第六章习题答案

    这是<Java2实用教程第五版>的试题答案,需要的同学评论关注加点赞 有问题可以在评论区提出 1.问答题 (1)接口中能声明变量吗? 不能 (2)接口中能定义非抽象方法吗? 不能 可以把实 ...

  5. 数据库系统概念第六版 第七章练习题 15 22

    数据库第七章理论习题 7.15 为医院构造一个包含一组病人和一组医生的E-R图.为每个病人关联一组不同的检查和化验记录. 说明:医生和病人间存在联系,同时病人有特有的检查和化验记录,病人有病床,医生属 ...

  6. 数据库概念 第六版 中英文 带目录+习题答案

    链接下载:https://pan.baidu.com/s/1J7AAccNK9DRNbsDM93bzfQ

  7. Java2实用教程第五版+第五章习题答案

    这是<Java2实用教程第五版>的试题答案,需要的同学评论关注加点赞 有问题可以在评论区提出 1.问答题 (1)子类可以有多个父类吗? 不可以.Java是单继承的,只能继承一个父类. (2 ...

  8. Java2实用教程第五版+第四章习题答案

    这是<Java2实用教程第五版>的试题答案,需要的同学评论关注加点赞 有问题可以在评论区提出 1.问答题 (1)面向对象语言有哪三个特性? 封装.继承和多态 (2)类名应当遵守怎样的编程风 ...

  9. 《Python编程从入门到实践》(第2版)第二章 习题答案

    练习2-1:简单消息 将一条消息赋给变量,并将其打印出来. message = "Hello World!" print(message) Hello World! 练习2-2:多 ...

  10. 大学计算机基础课后题答案中国铁道出版社,大学计算机基础 铁道出版社 2015年第1版 第7章 习题答案...

    习题7答案 一.单项选择题 1.D 2.A 3.B 4.A 5.B 二.多项选择题 1.A.B.C.D 2.B.C.D 3.A.B.C.D 4.A.B.C.E 5.A.B.D.E 三.判断题 1. 2 ...

最新文章

  1. 在 Windows Server 2008 中通过组策略向计算机或用户部署网络打印机
  2. 本地服务器文件恢复,本地服务器文件恢复
  3. 利用卷积神经网络对脑电图解码及可视化
  4. l2_norm opencv torch比较
  5. 正则表达式,解决要么有要有没有,但必须开头
  6. 介绍一种Fiori标准应用的增强方式
  7. javascript实例——鼠标特效篇(包含2个实例)
  8. 又是绩效考核时,KPI 和 OKR 到底怎么考?
  9. 时间O(n)/空间O(1)实现长n字符串前m个移到末尾
  10. SPSS 相关性的选择
  11. CrossPHP 1.5.5 发布了
  12. 非常好用的354款Procreate新型笔刷
  13. android 8187驱动 win7,RTL8187 无线网卡在win7下的驱动问题
  14. 服务器机械硬盘坏了怎么修复,硬盘修复软件:如何修复硬盘错误?
  15. 我要注册一个邮箱,如何注册邮箱正确格式?
  16. 例题 9-27 方块消除(Blocks, UVa10559)
  17. 如何保证用log4J 写log 的时间和系统设置的timezone 保持一致
  18. 苹果Mac字体设计编辑工具:Glyphs
  19. 关于if 判断中null为什写前边和在使用equals方法进行判断是为什么要 “1“.equals(str)
  20. 2021-11-05 奈氏准则,香农定理(考研中的第一波知识点)

热门文章

  1. java酒店管理系统毕业论文
  2. AdapterView 及其子类
  3. 软件测试必读的经典书籍
  4. 【入门必看-算法基础知识讲解】小白都也能看得懂
  5. 2018年北京市POI数据各类型POI
  6. 软件测试期末考试复习题
  7. 2022年电子商务概论(农)之章节课后题
  8. 计算机专业认识实习目的,计算机专业实习目的及意义
  9. 关于计算机动画制作的过程,关于计算机制作动画的过程
  10. 在Ubuntu下实现PDG文件的观看