数据库与 SQL练习卷(附答案)

免费可打印的数据库与 SQL练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。

教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。

姓名: ____________________   日期: ____________

1.简单

什么是候选键?

  1. A两个表共有的、用于关联其行的一组列
  2. B任何含有 NULL 值的列
  3. C等待成为外键的列
  4. D能唯一标识每一行的最小列集合
2.简单

WHERE price BETWEEN 10 AND 20 会选出哪些行?

  1. A只有 price 等于 10 或 20 的行
  2. Bprice 在 10 到 20 范围之外的行
  3. Cprice 大于 10 且小于 20 的行,不包括 10 和 20
  4. Dprice 在 10 到 20 之间的行,包括 10 和 20
3.简单

实体-联系(ER)图用于什么?

  1. A列出数据库的用户
  2. B测量数据库性能
  3. C显示查询是如何执行的
  4. D在设计数据库时为实体、实体的属性及其联系建模
4.中等

哪条语句删除表中的所有行、保留其结构,并且不能带 WHERE 子句?

  1. A带 WHERE 子句的 DELETE FROM
  2. BALTER TABLE
  3. CDROP TABLE
  4. DTRUNCATE TABLE
5.中等

学生可以选修多门课程,课程也有多名学生。在表中如何对此建模?

  1. A把课程 id 列表存储在一列中
  2. B用一个联结表,其中保存指向 students 和 courses 的外键
  3. C把 students 和 courses 合并成一个表
  4. D在 students 表中加一个指向 courses 的外键列 course_id
6.中等

当 WHERE 子句没有匹配任何行时,SELECT SUM(amount) FROM orders 返回什么?

  1. A报错
  2. BNULL
  3. C0
  4. D空字符串
7.困难

给定 R(A, B, C, D) 上的函数依赖 A → B、B → C 和 C → D,闭包 A+ 是什么?

  1. A{A, B, C}
  2. B{A, B}
  3. C{A}
  4. D{A, B, C, D}
8.困难

表 enrolment(student_id, course_id, student_name, grade) 的键是 (student_id, course_id)。它违反了哪个范式?

  1. A都不违反,它满足 BCNF
  2. B只违反第三范式,因为 grade 依赖于 student_name
  3. C第二范式,因为 student_name 只依赖于 student_id
  4. D第一范式,因为 grade 列的值不是原子的

答案

  1. 1. D · 能唯一标识每一行的最小列集合
  2. 2. D · price 在 10 到 20 之间的行,包括 10 和 20
  3. 3. D · 在设计数据库时为实体、实体的属性及其联系建模
  4. 4. D · TRUNCATE TABLE
  5. 5. B · 用一个联结表,其中保存指向 students 和 courses 的外键
  6. 6. B · NULL
  7. 7. D · {A, B, C, D}
  8. 8. C · 第二范式,因为 student_name 只依赖于 student_id

完整分步解答:请在 examproblems.com 上练习本主题。