数据库与 SQL练习卷(附答案)
免费可打印的数据库与 SQL练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。
教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。
姓名: ____________________ 日期: ____________
1.简单
在 PostgreSQL 和 MySQL 中,哪个子句只返回结果的前 10 行?
- AFIRST 10 ONLY
- BLIMIT 10
- CMAX 10
- DTOP ROWS 10
2.简单
列上的 UNIQUE 约束保证什么?
- A任何两行在该列中都没有相同的非 NULL 值
- B该列的值是排好序的
- C该列自动成为表的主键
- D该列在插入后不能被修改
3.简单
在事务中,COMMIT 的作用是什么?
- A使事务中的所有更改永久生效
- B锁定整个数据库
- C新建一个表
- D撤销自事务开始以来所做的全部更改
4.中等
SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results 返回什么?
- A只返回及格的学生
- B每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
- C及格和不及格的学生人数
- D报错,因为 SELECT 中不允许使用 CASE
5.中等
在关系代数中,选择运算符(σ)对应于哪个 SQL 子句?
- AWHERE
- BGROUP BY
- CORDER BY
- DSELECT 列表
6.中等
表 a 有 3 行,表 b 有 4 行。SELECT * FROM a CROSS JOIN b 返回多少行?
- A3
- B7
- C4
- D12
7.困难
x 为 NULL,y = 1。条件 (x > 5 OR y = 1) 的值是什么?
- AUNKNOWN
- BTRUE
- CFALSE
- DNULL,因此该行总是被拒绝
8.困难
SELECT name, dept, AVG(salary) OVER (PARTITION BY dept) FROM emp 返回什么?
- A每一行员工记录以及其所在部门的平均工资
- B报错,因为 name 不在 GROUP BY 中
- C每个部门一行及其平均工资
- D只返回工资高于本部门平均值的员工
答案
- 1. B · LIMIT 10
- 2. A · 任何两行在该列中都没有相同的非 NULL 值
- 3. A · 使事务中的所有更改永久生效
- 4. B · 每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
- 5. A · WHERE
- 6. D · 12
- 7. B · TRUE
- 8. A · 每一行员工记录以及其所在部门的平均工资
完整分步解答:请在 examproblems.com 上练习本主题。