1.简单
哪条 SQL 语句向表中添加新行?
- AALTER
- BSELECT
- CINSERT
- DUPDATE
2.简单
哪个关键字在查询中给列或表一个临时的别名?
- ARENAME
- BNAME
- CAS
- DALIAS
3.简单
哪个聚合函数用于统计行数?
- AMAX
- BCOUNT
- CSUM
- DAVG
4.中等
一个表在每一行订单上都存储了客户地址。只修改其中一行的地址而不修改其他行,这是哪种情况的例子?
- A更新异常
- B插入异常
- C删除异常
- D幻读
5.中等
什么是脏读?
- A读取另一个尚未提交的事务所写入的数据
- B不带 WHERE 子句读取数据
- C两次读取同一行并得到相同的值
- D从损坏的磁盘读取数据
6.中等
哪个查询列出从未下过订单的客户?
- ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
- BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- CSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
7.困难
EXPLAIN(或 PostgreSQL 中的 EXPLAIN ANALYZE)对一个查询显示什么?
- A查询中每个 SQL 关键字的含义
- B优化器选择的执行计划,例如扫描方式和连接方法
- C仅以关系代数表示法改写的查询
- D运行过该查询的用户列表
8.困难
为什么在生产查询中使用 NATURAL JOIN 被认为有风险?
- A它在所有同名列上连接,因此新增一列可能悄无声息地改变结果
- B它忽略主键和外键,只保留 NULL 行
- C没有任何数据库支持它
- D它总是返回笛卡尔积
答案
- 1. C · INSERT
- 2. C · AS
- 3. B · COUNT
- 4. A · 更新异常
- 5. A · 读取另一个尚未提交的事务所写入的数据
- 6. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 7. B · 优化器选择的执行计划,例如扫描方式和连接方法
- 8. A · 它在所有同名列上连接,因此新增一列可能悄无声息地改变结果
完整分步解答:请在 examproblems.com 上练习本主题。