1.简单
CROSS JOIN 返回什么?
- A只有第一个表的行
- B只有在共享键列上匹配的行
- C只有不匹配的行
- D两个表中行的所有组合
2.简单
哪条语句向已有的表中添加新列?
- ACREATE COLUMN
- BALTER TABLE
- CINSERT COLUMN
- DUPDATE TABLE
3.简单
在 WHERE 子句中,哪个运算符用于简单的文本模式匹配?
- ALIKE
- BCONTAINS
- CSIMILAR
- DMATCH
4.中等
EXCEPT(在 Oracle 中称为 MINUS)返回什么?
- A两个查询中都出现的行
- B第二个查询中不出现在第一个查询中的行
- C第一个查询中不出现在第二个查询中的行
- D两个查询的所有行,去除重复
5.中等
哪条语句删除表中的所有行、保留其结构,并且不能带 WHERE 子句?
- AALTER TABLE
- B带 WHERE 子句的 DELETE FROM
- CTRUNCATE TABLE
- DDROP TABLE
6.中等
在关系代数中,选择运算符(σ)对应于哪个 SQL 子句?
- AGROUP BY
- BSELECT 列表
- CORDER BY
- DWHERE
7.困难
事务 T1 锁定了行 A 并等待行 B,而 T2 锁定了行 B 并等待行 A。典型的 DBMS 会怎么做?
- A检测到死锁,并中止其中一个事务作为牺牲者
- B让两个事务都等待,直到其中一个正常提交
- C同时提交两个事务
- D把两个事务合并为一个
8.困难
为什么在标准 SQL 中 SELECT dept, name, COUNT(*) FROM emp GROUP BY dept 是无效的?
- AGROUP BY 必须列出表的所有列
- Bname 既没有分组也没有聚合,因此每组没有唯一的值
- Cdept 必须出现在聚合函数中
- DCOUNT(*) 不能与 GROUP BY 一起使用
答案
- 1. D · 两个表中行的所有组合
- 2. B · ALTER TABLE
- 3. A · LIKE
- 4. C · 第一个查询中不出现在第二个查询中的行
- 5. C · TRUNCATE TABLE
- 6. D · WHERE
- 7. A · 检测到死锁,并中止其中一个事务作为牺牲者
- 8. B · name 既没有分组也没有聚合,因此每组没有唯一的值
完整分步解答:请在 examproblems.com 上练习本主题。