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

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

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

姓名: ____________________   日期: ____________

1.简单

哪条 SQL 语句向表中添加新行?

  1. AINSERT
  2. BUPDATE
  3. CALTER
  4. DSELECT
2.简单

WHERE country IN ('NL', 'BE', 'DE') 的作用是什么?

  1. A保留 country 不在列表中的行
  2. B保留 country 等于列表中任一值的行
  3. C按列表的顺序对行排序
  4. D保留 country 值同时包含这三个代码的行
3.简单

UNION 对两个 SELECT 查询的结果做什么?

  1. A只保留出现在第一个查询中而不在第二个查询中的行
  2. B只保留同时出现在两者中的行
  3. C按某个键把它们左右并排连接
  4. D把它们合并为一个结果并去除重复行
4.中等

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

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

关于 HAVING,下列哪项说法正确?

  1. A它用于对结果排序
  2. B它在 SELECT 语句中必须写在 WHERE 之前
  3. C它不能与 GROUP BY 一起使用
  4. D它可以使用聚合函数来过滤分组
6.中等

对于电话号码为 NULL 的客户,SELECT COALESCE(phone, 'unknown') FROM customers 返回什么?

  1. ANULL
  2. B空字符串
  3. C报错
  4. D'unknown'
7.困难

一个报表数据库把客户姓名复制到 orders 表中以避免连接。这种反规范化的主要代价是什么?

  1. A数据库不能再使用索引
  2. B每当客户数据变化时,都必须保持冗余副本的一致
  3. C不能再使用主键
  4. D对 orders 表的查询变慢
8.困难

分数为 90、90 和 80。RANK() OVER (ORDER BY score DESC) 给出哪些值?

  1. A2, 2, 3
  2. B1, 1, 2
  3. C1, 2, 3
  4. D1, 1, 3

答案

  1. 1. A · INSERT
  2. 2. B · 保留 country 等于列表中任一值的行
  3. 3. D · 把它们合并为一个结果并去除重复行
  4. 4. B · 用一个联结表,其中保存指向 students 和 courses 的外键
  5. 5. D · 它可以使用聚合函数来过滤分组
  6. 6. D · 'unknown'
  7. 7. B · 每当客户数据变化时,都必须保持冗余副本的一致
  8. 8. D · 1, 1, 3

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