1.简单
WHERE country IN ('NL', 'BE', 'DE') 的作用是什么?
- A保留 country 等于列表中任一值的行
- B按列表的顺序对行排序
- C保留 country 不在列表中的行
- D保留 country 值同时包含这三个代码的行
2.简单
哪个 SQL 关键字用于去除结果中的重复行?
- ADIFFERENT
- BUNIQUE
- CDISTINCT
- DSINGLE
3.简单
CREATE、ALTER 和 DROP 等语句属于 SQL 的哪一部分?
- A事务控制语言(TCL)
- B数据控制语言(DCL)
- C数据操纵语言(DML)
- D数据定义语言(DDL)
4.中等
employees 表有一列 manager_id,引用另一名员工。如何在每名员工旁边列出其经理的姓名?
- A使用 UNION ALL 和 WHERE 过滤把该表与自身合并
- B用两个别名把 employees 表与它自身连接
- C在磁盘上创建该表的第二个副本
- D只使用 GROUP BY manager_id
5.中等
哪个查询列出从未下过订单的客户?
- ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- BSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
- DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
6.中等
一个表在每一行订单上都存储了客户地址。只修改其中一行的地址而不修改其他行,这是哪种情况的例子?
- A更新异常
- B插入异常
- C幻读
- D删除异常
7.困难
如果 col 中所有值都是 NULL 且表有 10 行,SELECT COUNT(col) FROM t 的结果是什么?
- ANULL
- B报错
- C10
- D0
8.困难
对于一个查询,什么是覆盖索引?
- A每晚重建一次的索引
- B只建在主键上的索引
- C包含查询所需全部列的索引,因此不必读取表本身
- D覆盖每个表每一列的索引
答案
- 1. A · 保留 country 等于列表中任一值的行
- 2. C · DISTINCT
- 3. D · 数据定义语言(DDL)
- 4. B · 用两个别名把 employees 表与它自身连接
- 5. A · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 6. A · 更新异常
- 7. D · 0
- 8. C · 包含查询所需全部列的索引,因此不必读取表本身
完整分步解答:请在 examproblems.com 上练习本主题。