1.简单
哪条语句向已有的表中添加新列?
- AINSERT COLUMN
- BALTER TABLE
- CCREATE COLUMN
- DUPDATE TABLE
2.简单
CROSS JOIN 返回什么?
- A只有在共享键列上匹配的行
- B只有第一个表的行
- C两个表中行的所有组合
- D只有不匹配的行
3.简单
UNION ALL 与 UNION 有何不同?
- AUNION ALL 保留重复行
- BUNION ALL 会对结果排序
- CUNION ALL 去除重复行
- DUNION ALL 只适用于一个表
4.中等
为什么 SELECT price * 2 AS double_price FROM t WHERE double_price > 10 在大多数数据库中会失败?
- AWHERE 在 SELECT 列表之前计算,此时别名还不存在
- B别名中不能包含下划线
- CWHERE 只能比较文本列
- DSELECT 列表中不允许进行算术运算
5.中等
一个表中有些行的 col 为 NULL。WHERE col = NULL 返回哪些行?
- A不返回任何行,因为比较结果是未知
- B返回表中的所有行
- C在每种数据库中都报错
- D只返回 col 为 NULL 的行,与 IS NULL 相同
6.中等
SQL 中的视图(view)是:
- A表在磁盘上的副本
- B一个行为类似虚拟表的已存储查询
- C数据库客户端中用于浏览各个表的界面
- D一种索引类型
7.困难
为什么带有 WHERE YEAR(order_date) = 2025 的查询可能不会使用 order_date 上的索引?
- Aorder_date 上的索引只用于 ORDER BY 子句,绝不用于 WHERE
- B索引永远不能用于日期
- CYEAR 不是合法的 SQL
- D对列应用函数会妨碍简单的索引范围查找
8.困难
把 R 分解为 R1 和 R2 在什么情况下保证是无损的?
- AR1 和 R2 的公共属性构成 R1 或 R2 的超键时
- BR 的每个属性都同时出现在 R1 和 R2 中时
- CR1 和 R2 的列数相同时
- DR1 和 R2 没有公共属性时
答案
- 1. B · ALTER TABLE
- 2. C · 两个表中行的所有组合
- 3. A · UNION ALL 保留重复行
- 4. A · WHERE 在 SELECT 列表之前计算,此时别名还不存在
- 5. A · 不返回任何行,因为比较结果是未知
- 6. B · 一个行为类似虚拟表的已存储查询
- 7. D · 对列应用函数会妨碍简单的索引范围查找
- 8. A · R1 和 R2 的公共属性构成 R1 或 R2 的超键时
完整分步解答:请在 examproblems.com 上练习本主题。