1.简单
哪个子句在分组之前过滤行?
- AGROUP BY
- BHAVING
- CORDER BY
- DWHERE
2.简单
CREATE、ALTER 和 DROP 等语句属于 SQL 的哪一部分?
- A数据操纵语言(DML)
- B数据控制语言(DCL)
- C事务控制语言(TCL)
- D数据定义语言(DDL)
3.简单
什么是复合键?
- A由数据库生成的键
- B存储在单独表中的键
- C由两列或更多列组成的键
- D允许重复值的键
4.中等
一个表在每一行订单上都存储了客户地址。只修改其中一行的地址而不修改其他行,这是哪种情况的例子?
- A插入异常
- B删除异常
- C更新异常
- D幻读
5.中等
哪个查询返回 customers 表中不同城市的数量?
- ASELECT SUM(DISTINCT city) FROM customers
- BSELECT COUNT(DISTINCT city) FROM customers
- CSELECT DISTINCT COUNT(city) FROM customers
- DSELECT COUNT(city) FROM customers GROUP BY city
6.中等
第二范式(2NF)消除了:
- A所有 NULL 值
- B非键列对复合键一部分的部分依赖
- C外键
- D非键列之间通过另一个非键列形成的传递依赖
7.困难
查询 FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' 意外地丢掉了没有订单的客户。为什么?
- Astatus 是保留字
- B对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接
- CLEFT JOIN 从不保留不匹配的行
- D连接应该使用 USING 而不是 ON
8.困难
哪个窗口函数在每个分区内为行分配 1、2、3……且不出现并列?
- ADENSE_RANK()
- BRANK()
- CROW_NUMBER()
- DCOUNT()
答案
- 1. D · WHERE
- 2. D · 数据定义语言(DDL)
- 3. C · 由两列或更多列组成的键
- 4. C · 更新异常
- 5. B · SELECT COUNT(DISTINCT city) FROM customers
- 6. B · 非键列对复合键一部分的部分依赖
- 7. B · 对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接
- 8. C · ROW_NUMBER()
完整分步解答:请在 examproblems.com 上练习本主题。