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

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

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

姓名: ____________________   日期: ____________

1.简单

在 PostgreSQL 和 MySQL 中,哪个子句只返回结果的前 10 行?

  1. AFIRST 10 ONLY
  2. BLIMIT 10
  3. CMAX 10
  4. DTOP ROWS 10
2.简单

GROUP BY 在查询中起什么作用?

  1. A按公共列连接两个表
  2. B把具有相同值的行放入同一组,从而按组计算聚合
  3. C按字母顺序对结果行排序
  4. D删除含有 NULL 值的行
3.简单

哪个关键字用于对查询结果排序?

  1. AGROUP BY
  2. BARRANGE
  3. CSORT
  4. DORDER BY
4.中等

哪个查询返回每个部门的最高工资?

  1. ASELECT dept, MAX(salary) FROM emp GROUP BY dept
  2. BSELECT MAX(dept), salary FROM emp GROUP BY salary
  3. CSELECT dept, salary FROM emp WHERE salary = MAX(salary)
  4. DSELECT dept, MAX(salary) FROM emp ORDER BY dept
5.中等

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

  1. A空字符串
  2. B'unknown'
  3. CNULL
  4. D报错
6.中等

ROLLBACK TO SAVEPOINT s1 的作用是什么?

  1. A结束事务并提交所有内容
  2. B撤销保存点 s1 之后所做的更改,事务保持打开
  3. C删除该保存点以及此后更改过的所有表
  4. D从头撤销整个事务
7.困难

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

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

表 b 的 y 列包含值 1、2 和 NULL。SELECT * FROM a WHERE x NOT IN (SELECT y FROM b) 返回什么?

  1. A返回 a 中 x 不是 1 或 2 的行
  2. B返回 a 的每一行
  3. C根本不返回任何行
  4. D只返回 a 中 x 为 NULL 的行

答案

  1. 1. B · LIMIT 10
  2. 2. B · 把具有相同值的行放入同一组,从而按组计算聚合
  3. 3. D · ORDER BY
  4. 4. A · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  5. 5. B · 'unknown'
  6. 6. B · 撤销保存点 s1 之后所做的更改,事务保持打开
  7. 7. B · 对列应用函数会妨碍简单的索引范围查找
  8. 8. C · 根本不返回任何行

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