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

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

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

姓名: ____________________   日期: ____________

1.简单

WHERE price BETWEEN 10 AND 20 会选出哪些行?

  1. Aprice 在 10 到 20 范围之外的行
  2. B只有 price 等于 10 或 20 的行
  3. Cprice 在 10 到 20 之间的行,包括 10 和 20
  4. Dprice 大于 10 且小于 20 的行,不包括 10 和 20
2.简单

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

  1. ACREATE COLUMN
  2. BINSERT COLUMN
  3. CALTER TABLE
  4. DUPDATE TABLE
3.简单

INNER JOIN 返回:

  1. A两个表中的所有行
  2. B不匹配的行
  3. C左表中的所有行,没有匹配时以 NULL 填充
  4. D仅返回两个表中值相匹配的行
4.中等

哪个查询列出从未下过订单的客户?

  1. ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
  2. BSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
5.中等

在关系代数中,选择运算符(σ)对应于哪个 SQL 子句?

  1. ASELECT 列表
  2. BORDER BY
  3. CGROUP BY
  4. DWHERE
6.中等

当 WHERE 子句没有匹配任何行时,SELECT SUM(amount) FROM orders 返回什么?

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

为什么带有 WHERE YEAR(order_date) = 2025 的查询可能不会使用 order_date 上的索引?

  1. AYEAR 不是合法的 SQL
  2. B对列应用函数会妨碍简单的索引范围查找
  3. C索引永远不能用于日期
  4. Dorder_date 上的索引只用于 ORDER BY 子句,绝不用于 WHERE
8.困难

下列查询返回什么:SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?

  1. A报错,因为 WHERE 中不允许使用子查询
  2. B成绩高于平均成绩的学生
  3. C仅成绩最高的学生
  4. D所有学生的平均成绩

答案

  1. 1. C · price 在 10 到 20 之间的行,包括 10 和 20
  2. 2. C · ALTER TABLE
  3. 3. D · 仅返回两个表中值相匹配的行
  4. 4. C · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  5. 5. D · WHERE
  6. 6. A · NULL
  7. 7. B · 对列应用函数会妨碍简单的索引范围查找
  8. 8. B · 成绩高于平均成绩的学生

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