1.简单
在 WHERE 子句中,哪个运算符用于简单的文本模式匹配?
- ACONTAINS
- BMATCH
- CSIMILAR
- DLIKE
2.简单
哪个 SQL 关键字用于去除结果中的重复行?
- ADISTINCT
- BSINGLE
- CUNIQUE
- DDIFFERENT
3.简单
在 SQL 中 NULL 表示什么?
- A缺失或未知的值
- B布尔值 false
- C空字符串
- D数值列中的数字零
4.中等
为什么一个表只能有一个聚集索引?
- ASQL 标准禁止一个表上有多个索引
- B聚集索引占用太多内存
- C行在物理上只能按一种顺序存储
- D聚集索引只能建在主键上
5.中等
employees 表有一列 manager_id,引用另一名员工。如何在每名员工旁边列出其经理的姓名?
- A使用 UNION ALL 和 WHERE 过滤把该表与自身合并
- B用两个别名把 employees 表与它自身连接
- C只使用 GROUP BY manager_id
- D在磁盘上创建该表的第二个副本
6.中等
一个表中有些行的 col 为 NULL。WHERE col = NULL 返回哪些行?
- A在每种数据库中都报错
- B不返回任何行,因为比较结果是未知
- C只返回 col 为 NULL 的行,与 IS NULL 相同
- D返回表中的所有行
7.困难
相关子查询(correlated subquery)是指:
- A引用外层查询的列,并针对外层的每一行进行求值的子查询
- B只在外层查询之前运行一次,并将结果缓存供每一行使用
- C只使用聚合函数的子查询
- D通过外键连接两个表的子查询
8.困难
一个表有一百万行,布尔列 is_active 中有 95% 为 TRUE。为什么对于 WHERE is_active = TRUE,优化器可能不使用 is_active 上的索引?
- A优化器从不在 WHERE 子句中使用索引
- B索引把 TRUE 当作 NULL 处理
- C大多数行都匹配,因此全表扫描比大量索引查找更便宜
- D不能在布尔列上创建索引
答案
- 1. D · LIKE
- 2. A · DISTINCT
- 3. A · 缺失或未知的值
- 4. C · 行在物理上只能按一种顺序存储
- 5. B · 用两个别名把 employees 表与它自身连接
- 6. B · 不返回任何行,因为比较结果是未知
- 7. A · 引用外层查询的列,并针对外层的每一行进行求值的子查询
- 8. C · 大多数行都匹配,因此全表扫描比大量索引查找更便宜
完整分步解答:请在 examproblems.com 上练习本主题。