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

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

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

姓名: ____________________   日期: ____________

1.简单

在 SQL 中 NULL 表示什么?

  1. A空字符串
  2. B布尔值 false
  3. C缺失或未知的值
  4. D数值列中的数字零
2.简单

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

  1. ANAME
  2. BAS
  3. CALIAS
  4. DRENAME
3.简单

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

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

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

  1. A0
  2. B报错
  3. C空字符串
  4. DNULL
5.中等

公用表表达式(WITH name AS (...))提供什么?

  1. A一个可在一条语句中使用的命名临时结果
  2. B某列上的索引
  3. C一个新的数据库用户
  4. D一个永久表,在被删除之前一直存储在磁盘上
6.中等

ROLLBACK TO SAVEPOINT s1 的作用是什么?

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

哪个窗口函数在每个分区内为行分配 1、2、3……且不出现并列?

  1. ARANK()
  2. BROW_NUMBER()
  3. CDENSE_RANK()
  4. DCOUNT()
8.困难

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

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

答案

  1. 1. C · 缺失或未知的值
  2. 2. B · AS
  3. 3. D · price 在 10 到 20 之间的行,包括 10 和 20
  4. 4. D · NULL
  5. 5. A · 一个可在一条语句中使用的命名临时结果
  6. 6. B · 撤销保存点 s1 之后所做的更改,事务保持打开
  7. 7. B · ROW_NUMBER()
  8. 8. B · 对没有订单的客户,COUNT(*) 会把用 NULL 填充的那一行计为 1

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