数据库与 SQL练习卷(附答案)
免费可打印的数据库与 SQL练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。
教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。
姓名: ____________________ 日期: ____________
1.简单
什么是代理键?
- A没有业务含义的人工标识符,例如自增 id
- B只在视图中使用的键
- C由电子邮件地址等真实数据构成的键
- D引用另一个表的键
2.简单
实体-联系(ER)图用于什么?
- A在设计数据库时为实体、实体的属性及其联系建模
- B测量数据库性能
- C列出数据库的用户
- D显示查询是如何执行的
3.简单
在 SQL 中 NULL 表示什么?
- A空字符串
- B数值列中的数字零
- C布尔值 false
- D缺失或未知的值
4.中等
关于 HAVING,下列哪项说法正确?
- A它用于对结果排序
- B它可以使用聚合函数来过滤分组
- C它在 SELECT 语句中必须写在 WHERE 之前
- D它不能与 GROUP BY 一起使用
5.中等
SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results 返回什么?
- A每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
- B只返回及格的学生
- C报错,因为 SELECT 中不允许使用 CASE
- D及格和不及格的学生人数
6.中等
orders 表有 5 行,每行都引用一个已存在的客户。customers 表有 3 行。在 customer_id 上做 INNER JOIN 返回多少行?
- A3
- B8
- C5
- D15
7.困难
为什么在标准 SQL 中 SELECT dept, name, COUNT(*) FROM emp GROUP BY dept 是无效的?
- Adept 必须出现在聚合函数中
- Bname 既没有分组也没有聚合,因此每组没有唯一的值
- CCOUNT(*) 不能与 GROUP BY 一起使用
- DGROUP BY 必须列出表的所有列
8.困难
两名值班医生各自检查对方是否仍在值班,然后两人同时下班签退。快照隔离在这里仍可能允许哪种异常?
- A写偏斜(write skew)
- B同一事务内的不可重复读
- C脏读
- D脏写
答案
- 1. A · 没有业务含义的人工标识符,例如自增 id
- 2. A · 在设计数据库时为实体、实体的属性及其联系建模
- 3. D · 缺失或未知的值
- 4. B · 它可以使用聚合函数来过滤分组
- 5. A · 每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
- 6. C · 5
- 7. B · name 既没有分组也没有聚合,因此每组没有唯一的值
- 8. A · 写偏斜(write skew)
完整分步解答:请在 examproblems.com 上练习本主题。