1.简单
CROSS JOIN 返回什么?
- A只有第一个表的行
- B只有不匹配的行
- C两个表中行的所有组合
- D只有在共享键列上匹配的行
2.简单
UNION ALL 与 UNION 有何不同?
- AUNION ALL 只适用于一个表
- BUNION ALL 去除重复行
- CUNION ALL 会对结果排序
- DUNION ALL 保留重复行
3.简单
列上的 UNIQUE 约束保证什么?
- A该列在插入后不能被修改
- B任何两行在该列中都没有相同的非 NULL 值
- C该列自动成为表的主键
- D该列的值是排好序的
4.中等
哪个查询返回每个客户的订单数量?
- ASELECT DISTINCT COUNT(*) FROM orders
- BSELECT customer_id FROM orders WHERE COUNT(*) > 0
- CSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- DSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
5.中等
哪条语句删除表中的所有行、保留其结构,并且不能带 WHERE 子句?
- ADROP TABLE
- B带 WHERE 子句的 DELETE FROM
- CTRUNCATE TABLE
- DALTER TABLE
6.中等
第一范式(1NF)要求:
- A每列都包含原子值,且没有重复组
- B每个非键列都依赖于整个键,且只依赖于键
- C每个表恰好只有一列
- D没有外键
7.困难
分数为 90、90 和 80。RANK() OVER (ORDER BY score DESC) 给出哪些值?
- A2, 2, 3
- B1, 1, 2
- C1, 1, 3
- D1, 2, 3
8.困难
SELECT day, SUM(amount) OVER (ORDER BY day) FROM sales 计算的是什么?
- A每天的平均金额
- B每一行上所有金额的总和
- C按 day 排序的 amount 累计总和
- D每天一行,只有当天的总额
答案
- 1. C · 两个表中行的所有组合
- 2. D · UNION ALL 保留重复行
- 3. B · 任何两行在该列中都没有相同的非 NULL 值
- 4. C · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- 5. C · TRUNCATE TABLE
- 6. A · 每列都包含原子值,且没有重复组
- 7. C · 1, 1, 3
- 8. C · 按 day 排序的 amount 累计总和
完整分步解答:请在 examproblems.com 上练习本主题。