1.简单
WHERE price BETWEEN 10 AND 20 会选出哪些行?
- Aprice 在 10 到 20 范围之外的行
- B只有 price 等于 10 或 20 的行
- Cprice 在 10 到 20 之间的行,包括 10 和 20
- Dprice 大于 10 且小于 20 的行,不包括 10 和 20
2.简单
哪条语句向已有的表中添加新列?
- ACREATE COLUMN
- BINSERT COLUMN
- CALTER TABLE
- DUPDATE TABLE
3.简单
INNER JOIN 返回:
- A两个表中的所有行
- B不匹配的行
- C左表中的所有行,没有匹配时以 NULL 填充
- D仅返回两个表中值相匹配的行
4.中等
哪个查询列出从未下过订单的客户?
- 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 IS NULL
- DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
5.中等
在关系代数中,选择运算符(σ)对应于哪个 SQL 子句?
- ASELECT 列表
- BORDER BY
- CGROUP BY
- DWHERE
6.中等
当 WHERE 子句没有匹配任何行时,SELECT SUM(amount) FROM orders 返回什么?
- ANULL
- B0
- C报错
- D空字符串
7.困难
为什么带有 WHERE YEAR(order_date) = 2025 的查询可能不会使用 order_date 上的索引?
- AYEAR 不是合法的 SQL
- B对列应用函数会妨碍简单的索引范围查找
- C索引永远不能用于日期
- Dorder_date 上的索引只用于 ORDER BY 子句,绝不用于 WHERE
8.困难
下列查询返回什么:SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?
- A报错,因为 WHERE 中不允许使用子查询
- B成绩高于平均成绩的学生
- C仅成绩最高的学生
- D所有学生的平均成绩
答案
- 1. C · price 在 10 到 20 之间的行,包括 10 和 20
- 2. C · ALTER TABLE
- 3. D · 仅返回两个表中值相匹配的行
- 4. C · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 5. D · WHERE
- 6. A · NULL
- 7. B · 对列应用函数会妨碍简单的索引范围查找
- 8. B · 成绩高于平均成绩的学生
完整分步解答:请在 examproblems.com 上练习本主题。