数据库与 SQL练习卷(附答案)

免费可打印的数据库与 SQL练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。

教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。

姓名: ____________________   日期: ____________

1.简单

在 PostgreSQL 和 MySQL 中,哪个子句只返回结果的前 10 行?

  1. AFIRST 10 ONLY
  2. BLIMIT 10
  3. CMAX 10
  4. DTOP ROWS 10
2.简单

列上的 UNIQUE 约束保证什么?

  1. A任何两行在该列中都没有相同的非 NULL 值
  2. B该列的值是排好序的
  3. C该列自动成为表的主键
  4. D该列在插入后不能被修改
3.简单

在事务中,COMMIT 的作用是什么?

  1. A使事务中的所有更改永久生效
  2. B锁定整个数据库
  3. C新建一个表
  4. D撤销自事务开始以来所做的全部更改
4.中等

SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results 返回什么?

  1. A只返回及格的学生
  2. B每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
  3. C及格和不及格的学生人数
  4. D报错,因为 SELECT 中不允许使用 CASE
5.中等

在关系代数中,选择运算符(σ)对应于哪个 SQL 子句?

  1. AWHERE
  2. BGROUP BY
  3. CORDER BY
  4. DSELECT 列表
6.中等

表 a 有 3 行,表 b 有 4 行。SELECT * FROM a CROSS JOIN b 返回多少行?

  1. A3
  2. B7
  3. C4
  4. D12
7.困难

x 为 NULL,y = 1。条件 (x > 5 OR y = 1) 的值是什么?

  1. AUNKNOWN
  2. BTRUE
  3. CFALSE
  4. DNULL,因此该行总是被拒绝
8.困难

SELECT name, dept, AVG(salary) OVER (PARTITION BY dept) FROM emp 返回什么?

  1. A每一行员工记录以及其所在部门的平均工资
  2. B报错,因为 name 不在 GROUP BY 中
  3. C每个部门一行及其平均工资
  4. D只返回工资高于本部门平均值的员工

答案

  1. 1. B · LIMIT 10
  2. 2. A · 任何两行在该列中都没有相同的非 NULL 值
  3. 3. A · 使事务中的所有更改永久生效
  4. 4. B · 每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
  5. 5. A · WHERE
  6. 6. D · 12
  7. 7. B · TRUE
  8. 8. A · 每一行员工记录以及其所在部门的平均工资

完整分步解答:请在 examproblems.com 上练习本主题。