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

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

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

姓名: ____________________   日期: ____________

1.简单

一个客户可以下很多订单,但每个订单只属于一个客户。这是哪种联系?

  1. A零对零
  2. B一对多
  3. C一对一
  4. D多对多
2.简单

什么是候选键?

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

哪条语句向已有的表中添加新列?

  1. AALTER TABLE
  2. BUPDATE TABLE
  3. CINSERT COLUMN
  4. DCREATE COLUMN
4.中等

哪个 ACID 特性意味着并发事务看不到彼此尚未完成的更改?

  1. A隔离性
  2. B原子性
  3. C持久性
  4. D可用性
5.中等

对于一行,WHERE EXISTS (subquery) 在什么情况下为真?

  1. A子查询恰好返回一行时
  2. B子查询至少返回一行时
  3. C子查询返回一个大于零的数时
  4. D子查询不返回 NULL 值时
6.中等

哪个 ACID 特性保证已提交的更改在系统崩溃后仍然存在?

  1. A一致性
  2. B隔离性
  3. C持久性
  4. D原子性
7.困难

一个应用执行 UPDATE item SET qty = 4, version = 8 WHERE id = 1 AND version = 7,如果没有行被更新就报告冲突。这是哪种技术?

  1. A预写日志
  2. B数据库分片
  3. C带行锁的严格两阶段锁
  4. D乐观并发控制
8.困难

查询 FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' 意外地丢掉了没有订单的客户。为什么?

  1. A连接应该使用 USING 而不是 ON
  2. BLEFT JOIN 从不保留不匹配的行
  3. C对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接
  4. Dstatus 是保留字

答案

  1. 1. B · 一对多
  2. 2. A · 能唯一标识每一行的最小列集合
  3. 3. A · ALTER TABLE
  4. 4. A · 隔离性
  5. 5. B · 子查询至少返回一行时
  6. 6. C · 持久性
  7. 7. D · 乐观并发控制
  8. 8. C · 对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接

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