1.简单
在 SQL 中 NULL 表示什么?
- A空字符串
- B布尔值 false
- C缺失或未知的值
- D数值列中的数字零
2.简单
哪个关键字在查询中给列或表一个临时的别名?
- ANAME
- BAS
- CALIAS
- DRENAME
3.简单
WHERE price BETWEEN 10 AND 20 会选出哪些行?
- Aprice 在 10 到 20 范围之外的行
- Bprice 大于 10 且小于 20 的行,不包括 10 和 20
- C只有 price 等于 10 或 20 的行
- Dprice 在 10 到 20 之间的行,包括 10 和 20
4.中等
当 WHERE 子句没有匹配任何行时,SELECT SUM(amount) FROM orders 返回什么?
- A0
- B报错
- C空字符串
- DNULL
5.中等
公用表表达式(WITH name AS (...))提供什么?
- A一个可在一条语句中使用的命名临时结果
- B某列上的索引
- C一个新的数据库用户
- D一个永久表,在被删除之前一直存储在磁盘上
6.中等
ROLLBACK TO SAVEPOINT s1 的作用是什么?
- A结束事务并提交所有内容
- B撤销保存点 s1 之后所做的更改,事务保持打开
- C从头撤销整个事务
- D删除该保存点以及此后更改过的所有表
7.困难
哪个窗口函数在每个分区内为行分配 1、2、3……且不出现并列?
- ARANK()
- BROW_NUMBER()
- CDENSE_RANK()
- DCOUNT()
8.困难
在 customers LEFT JOIN orders 之后,为什么要用 COUNT(o.id) 而不是 COUNT(*) 来统计每个客户的订单数?
- A连接之后不允许使用 COUNT(*)
- B对没有订单的客户,COUNT(*) 会把用 NULL 填充的那一行计为 1
- CCOUNT(*) 会忽略含有 NULL 值的行
- DCOUNT(o.id) 只统计不同的客户
答案
- 1. C · 缺失或未知的值
- 2. B · AS
- 3. D · price 在 10 到 20 之间的行,包括 10 和 20
- 4. D · NULL
- 5. A · 一个可在一条语句中使用的命名临时结果
- 6. B · 撤销保存点 s1 之后所做的更改,事务保持打开
- 7. B · ROW_NUMBER()
- 8. B · 对没有订单的客户,COUNT(*) 会把用 NULL 填充的那一行计为 1
完整分步解答:请在 examproblems.com 上练习本主题。