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

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

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

姓名: ____________________   日期: ____________

1.简单

CROSS JOIN 返回什么?

  1. A只有第一个表的行
  2. B只有不匹配的行
  3. C两个表中行的所有组合
  4. D只有在共享键列上匹配的行
2.简单

UNION ALL 与 UNION 有何不同?

  1. AUNION ALL 只适用于一个表
  2. BUNION ALL 去除重复行
  3. CUNION ALL 会对结果排序
  4. DUNION ALL 保留重复行
3.简单

列上的 UNIQUE 约束保证什么?

  1. A该列在插入后不能被修改
  2. B任何两行在该列中都没有相同的非 NULL 值
  3. C该列自动成为表的主键
  4. D该列的值是排好序的
4.中等

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

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

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

  1. ADROP TABLE
  2. B带 WHERE 子句的 DELETE FROM
  3. CTRUNCATE TABLE
  4. DALTER TABLE
6.中等

第一范式(1NF)要求:

  1. A每列都包含原子值,且没有重复组
  2. B每个非键列都依赖于整个键,且只依赖于键
  3. C每个表恰好只有一列
  4. D没有外键
7.困难

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

  1. A2, 2, 3
  2. B1, 1, 2
  3. C1, 1, 3
  4. D1, 2, 3
8.困难

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

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

答案

  1. 1. C · 两个表中行的所有组合
  2. 2. D · UNION ALL 保留重复行
  3. 3. B · 任何两行在该列中都没有相同的非 NULL 值
  4. 4. C · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  5. 5. C · TRUNCATE TABLE
  6. 6. A · 每列都包含原子值,且没有重复组
  7. 7. C · 1, 1, 3
  8. 8. C · 按 day 排序的 amount 累计总和

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