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

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

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

姓名: ____________________   日期: ____________

1.简单

哪个子句在分组之前过滤行?

  1. AORDER BY
  2. BHAVING
  3. CWHERE
  4. DGROUP BY
2.简单

哪条语句删除整个表,包括其结构?

  1. AREMOVE TABLE
  2. BDELETE FROM
  3. CTRUNCATE ROWS
  4. DDROP TABLE
3.简单

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

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

哪个查询返回每个客户的订单数量?

  1. ASELECT customer_id FROM orders WHERE COUNT(*) > 0
  2. BSELECT DISTINCT COUNT(*) FROM orders
  3. CSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
  4. DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
5.中等

某列包含值 10、20 和 NULL。AVG(col) 返回什么?

  1. A15
  2. B10
  3. C30
  4. DNULL
6.中等

EXCEPT(在 Oracle 中称为 MINUS)返回什么?

  1. A第二个查询中不出现在第一个查询中的行
  2. B两个查询中都出现的行
  3. C第一个查询中不出现在第二个查询中的行
  4. D两个查询的所有行,去除重复
7.困难

R(A, B, C, D) 有函数依赖 A → B 和 C → D。候选键是什么?

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

SELECT day, SUM(amount) OVER (ORDER BY day) FROM sales 计算的是什么?

  1. A每一行上所有金额的总和
  2. B每天一行,只有当天的总额
  3. C按 day 排序的 amount 累计总和
  4. D每天的平均金额

答案

  1. 1. C · WHERE
  2. 2. D · DROP TABLE
  3. 3. A · 保留 country 等于列表中任一值的行
  4. 4. D · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  5. 5. A · 15
  6. 6. C · 第一个查询中不出现在第二个查询中的行
  7. 7. D · {A, C}
  8. 8. C · 按 day 排序的 amount 累计总和

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