1.简单
在 PostgreSQL 和 MySQL 中,哪个子句只返回结果的前 10 行?
- AFIRST 10 ONLY
- BLIMIT 10
- CMAX 10
- DTOP ROWS 10
2.简单
GROUP BY 在查询中起什么作用?
- A按公共列连接两个表
- B把具有相同值的行放入同一组,从而按组计算聚合
- C按字母顺序对结果行排序
- D删除含有 NULL 值的行
3.简单
哪个关键字用于对查询结果排序?
- AGROUP BY
- BARRANGE
- CSORT
- DORDER BY
4.中等
哪个查询返回每个部门的最高工资?
- ASELECT dept, MAX(salary) FROM emp GROUP BY dept
- BSELECT MAX(dept), salary FROM emp GROUP BY salary
- CSELECT dept, salary FROM emp WHERE salary = MAX(salary)
- DSELECT dept, MAX(salary) FROM emp ORDER BY dept
5.中等
对于电话号码为 NULL 的客户,SELECT COALESCE(phone, 'unknown') FROM customers 返回什么?
- A空字符串
- B'unknown'
- CNULL
- D报错
6.中等
ROLLBACK TO SAVEPOINT s1 的作用是什么?
- A结束事务并提交所有内容
- B撤销保存点 s1 之后所做的更改,事务保持打开
- C删除该保存点以及此后更改过的所有表
- D从头撤销整个事务
7.困难
为什么带有 WHERE YEAR(order_date) = 2025 的查询可能不会使用 order_date 上的索引?
- Aorder_date 上的索引只用于 ORDER BY 子句,绝不用于 WHERE
- B对列应用函数会妨碍简单的索引范围查找
- CYEAR 不是合法的 SQL
- D索引永远不能用于日期
8.困难
表 b 的 y 列包含值 1、2 和 NULL。SELECT * FROM a WHERE x NOT IN (SELECT y FROM b) 返回什么?
- A返回 a 中 x 不是 1 或 2 的行
- B返回 a 的每一行
- C根本不返回任何行
- D只返回 a 中 x 为 NULL 的行
答案
- 1. B · LIMIT 10
- 2. B · 把具有相同值的行放入同一组,从而按组计算聚合
- 3. D · ORDER BY
- 4. A · SELECT dept, MAX(salary) FROM emp GROUP BY dept
- 5. B · 'unknown'
- 6. B · 撤销保存点 s1 之后所做的更改,事务保持打开
- 7. B · 对列应用函数会妨碍简单的索引范围查找
- 8. C · 根本不返回任何行
完整分步解答:请在 examproblems.com 上练习本主题。