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

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

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

姓名: ____________________   日期: ____________

1.简单

哪个聚合函数返回数值列的平均值?

  1. AMEAN
  2. BAVG
  3. CMEDIAN
  4. DSUM
2.简单

在 LIKE 模式中,通配符 % 代表什么?

  1. A任意一个数字
  2. B字符串该位置上恰好一个字符
  3. C字符串的结尾
  4. D任意零个或多个字符组成的序列
3.简单

什么是候选键?

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

LEFT JOIN 返回:

  1. A仅返回两个表中匹配的行
  2. B仅返回右表的所有行
  3. C左表的所有行以及右表中匹配的行,无匹配处填充 NULL
  4. D在两个表中都不匹配的行
5.中等

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

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

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

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

x 为 NULL,y = 1。条件 (x > 5 OR y = 1) 的值是什么?

  1. ANULL,因此该行总是被拒绝
  2. BTRUE
  3. CUNKNOWN
  4. DFALSE
8.困难

在 customers LEFT JOIN orders 之后,为什么要用 COUNT(o.id) 而不是 COUNT(*) 来统计每个客户的订单数?

  1. A对没有订单的客户,COUNT(*) 会把用 NULL 填充的那一行计为 1
  2. BCOUNT(*) 会忽略含有 NULL 值的行
  3. C连接之后不允许使用 COUNT(*)
  4. DCOUNT(o.id) 只统计不同的客户

答案

  1. 1. B · AVG
  2. 2. D · 任意零个或多个字符组成的序列
  3. 3. B · 能唯一标识每一行的最小列集合
  4. 4. C · 左表的所有行以及右表中匹配的行,无匹配处填充 NULL
  5. 5. B · 它可以使用聚合函数来过滤分组
  6. 6. A · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  7. 7. B · TRUE
  8. 8. A · 对没有订单的客户,COUNT(*) 会把用 NULL 填充的那一行计为 1

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