1.简单
哪条 SQL 语句向表中添加新行?
- AINSERT
- BUPDATE
- CALTER
- DSELECT
2.简单
WHERE country IN ('NL', 'BE', 'DE') 的作用是什么?
- A保留 country 不在列表中的行
- B保留 country 等于列表中任一值的行
- C按列表的顺序对行排序
- D保留 country 值同时包含这三个代码的行
3.简单
UNION 对两个 SELECT 查询的结果做什么?
- A只保留出现在第一个查询中而不在第二个查询中的行
- B只保留同时出现在两者中的行
- C按某个键把它们左右并排连接
- D把它们合并为一个结果并去除重复行
4.中等
学生可以选修多门课程,课程也有多名学生。在表中如何对此建模?
- A把 students 和 courses 合并成一个表
- B用一个联结表,其中保存指向 students 和 courses 的外键
- C把课程 id 列表存储在一列中
- D在 students 表中加一个指向 courses 的外键列 course_id
5.中等
关于 HAVING,下列哪项说法正确?
- A它用于对结果排序
- B它在 SELECT 语句中必须写在 WHERE 之前
- C它不能与 GROUP BY 一起使用
- D它可以使用聚合函数来过滤分组
6.中等
对于电话号码为 NULL 的客户,SELECT COALESCE(phone, 'unknown') FROM customers 返回什么?
- ANULL
- B空字符串
- C报错
- D'unknown'
7.困难
一个报表数据库把客户姓名复制到 orders 表中以避免连接。这种反规范化的主要代价是什么?
- A数据库不能再使用索引
- B每当客户数据变化时,都必须保持冗余副本的一致
- C不能再使用主键
- D对 orders 表的查询变慢
8.困难
分数为 90、90 和 80。RANK() OVER (ORDER BY score DESC) 给出哪些值?
- A2, 2, 3
- B1, 1, 2
- C1, 2, 3
- D1, 1, 3
答案
- 1. A · INSERT
- 2. B · 保留 country 等于列表中任一值的行
- 3. D · 把它们合并为一个结果并去除重复行
- 4. B · 用一个联结表,其中保存指向 students 和 courses 的外键
- 5. D · 它可以使用聚合函数来过滤分组
- 6. D · 'unknown'
- 7. B · 每当客户数据变化时,都必须保持冗余副本的一致
- 8. D · 1, 1, 3
完整分步解答:请在 examproblems.com 上练习本主题。