1.简单
在事务中,COMMIT 的作用是什么?
- A锁定整个数据库
- B撤销自事务开始以来所做的全部更改
- C使事务中的所有更改永久生效
- D新建一个表
2.简单
哪条语句删除整个表,包括其结构?
- ADELETE FROM
- BTRUNCATE ROWS
- CDROP TABLE
- DREMOVE TABLE
3.简单
CROSS JOIN 返回什么?
- A两个表中行的所有组合
- B只有在共享键列上匹配的行
- C只有第一个表的行
- D只有不匹配的行
4.中等
orders 表有 5 行,每行都引用一个已存在的客户。customers 表有 3 行。在 customer_id 上做 INNER JOIN 返回多少行?
- A8
- B5
- C3
- D15
5.中等
哪个查询列出从未下过订单的客户?
- ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT 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 NULL
6.中等
第三范式(3NF)消除了:
- A建立在不属于任何键的列上的冗余索引
- B原子值
- C非键属性之间的传递依赖
- D复合键
7.困难
对于一个查询,什么是覆盖索引?
- A包含查询所需全部列的索引,因此不必读取表本身
- B只建在主键上的索引
- C覆盖每个表每一列的索引
- D每晚重建一次的索引
8.困难
查询 FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' 意外地丢掉了没有订单的客户。为什么?
- ALEFT JOIN 从不保留不匹配的行
- B对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接
- Cstatus 是保留字
- D连接应该使用 USING 而不是 ON
答案
- 1. C · 使事务中的所有更改永久生效
- 2. C · DROP TABLE
- 3. A · 两个表中行的所有组合
- 4. B · 5
- 5. D · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 6. C · 非键属性之间的传递依赖
- 7. A · 包含查询所需全部列的索引,因此不必读取表本身
- 8. B · 对 o 的 WHERE 条件拒绝了用 NULL 填充的行,使其变成了内连接
完整分步解答:请在 examproblems.com 上练习本主题。