1.简单
WHERE price BETWEEN 10 AND 20 会选出哪些行?
- Aprice 在 10 到 20 之间的行,包括 10 和 20
- Bprice 大于 10 且小于 20 的行,不包括 10 和 20
- Cprice 在 10 到 20 范围之外的行
- D只有 price 等于 10 或 20 的行
2.简单
在 LIKE 模式中,通配符 % 代表什么?
- A任意一个数字
- B字符串的结尾
- C任意零个或多个字符组成的序列
- D字符串该位置上恰好一个字符
3.简单
列上的 UNIQUE 约束保证什么?
- A该列在插入后不能被修改
- B任何两行在该列中都没有相同的非 NULL 值
- C该列自动成为表的主键
- D该列的值是排好序的
4.中等
学生可以选修多门课程,课程也有多名学生。在表中如何对此建模?
- A把 students 和 courses 合并成一个表
- B把课程 id 列表存储在一列中
- C用一个联结表,其中保存指向 students 和 courses 的外键
- D在 students 表中加一个指向 courses 的外键列 course_id
5.中等
某列包含值 10、20 和 NULL。AVG(col) 返回什么?
- ANULL
- B15
- C30
- D10
6.中等
SQL 中的视图(view)是:
- A数据库客户端中用于浏览各个表的界面
- B表在磁盘上的副本
- C一个行为类似虚拟表的已存储查询
- D一种索引类型
7.困难
为什么在生产查询中使用 NATURAL JOIN 被认为有风险?
- A没有任何数据库支持它
- B它在所有同名列上连接,因此新增一列可能悄无声息地改变结果
- C它总是返回笛卡尔积
- D它忽略主键和外键,只保留 NULL 行
8.困难
哪个窗口函数在每个分区内为行分配 1、2、3……且不出现并列?
- ARANK()
- BCOUNT()
- CDENSE_RANK()
- DROW_NUMBER()
答案
- 1. A · price 在 10 到 20 之间的行,包括 10 和 20
- 2. C · 任意零个或多个字符组成的序列
- 3. B · 任何两行在该列中都没有相同的非 NULL 值
- 4. C · 用一个联结表,其中保存指向 students 和 courses 的外键
- 5. B · 15
- 6. C · 一个行为类似虚拟表的已存储查询
- 7. B · 它在所有同名列上连接,因此新增一列可能悄无声息地改变结果
- 8. D · ROW_NUMBER()
完整分步解答:请在 examproblems.com 上练习本主题。