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

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

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

姓名: ____________________   日期: ____________

1.简单

列上的 UNIQUE 约束保证什么?

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

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

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

哪个关键字在查询中给列或表一个临时的别名?

  1. AAS
  2. BNAME
  3. CRENAME
  4. DALIAS
4.中等

SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results 返回什么?

  1. A每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
  2. B及格和不及格的学生人数
  3. C报错,因为 SELECT 中不允许使用 CASE
  4. D只返回及格的学生
5.中等

一个表在每一行订单上都存储了客户地址。只修改其中一行的地址而不修改其他行,这是哪种情况的例子?

  1. A更新异常
  2. B幻读
  3. C插入异常
  4. D删除异常
6.中等

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

  1. A30
  2. B15
  3. CNULL
  4. D10
7.困难

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

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

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

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

答案

  1. 1. D · 任何两行在该列中都没有相同的非 NULL 值
  2. 2. B · LIMIT 10
  3. 3. A · AS
  4. 4. A · 每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
  5. 5. A · 更新异常
  6. 6. B · 15
  7. 7. A · 根本不返回任何行
  8. 8. B · 对列应用函数会妨碍简单的索引范围查找

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