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

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

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

姓名: ____________________   日期: ____________

1.简单

WHERE country IN ('NL', 'BE', 'DE') 的作用是什么?

  1. A保留 country 等于列表中任一值的行
  2. B保留 country 值同时包含这三个代码的行
  3. C保留 country 不在列表中的行
  4. D按列表的顺序对行排序
2.简单

哪条语句向已有的表中添加新列?

  1. AINSERT COLUMN
  2. BUPDATE TABLE
  3. CCREATE COLUMN
  4. DALTER TABLE
3.简单

在 SQL 中 NULL 表示什么?

  1. A空字符串
  2. B数值列中的数字零
  3. C缺失或未知的值
  4. D布尔值 false
4.中等

什么是脏读?

  1. A从损坏的磁盘读取数据
  2. B不带 WHERE 子句读取数据
  3. C读取另一个尚未提交的事务所写入的数据
  4. D两次读取同一行并得到相同的值
5.中等

学生可以选修多门课程,课程也有多名学生。在表中如何对此建模?

  1. A用一个联结表,其中保存指向 students 和 courses 的外键
  2. B把 students 和 courses 合并成一个表
  3. C把课程 id 列表存储在一列中
  4. D在 students 表中加一个指向 courses 的外键列 course_id
6.中等

什么是 SQL 注入(SQL injection)?

  1. A用一条 INSERT 语句快速插入大量行的技术
  2. B一种数据库备份技术
  3. C用户输入改变 SQL 查询结构的一种攻击
  4. D添加索引的一种方式
7.困难

为什么在标准 SQL 中 SELECT dept, name, COUNT(*) FROM emp GROUP BY dept 是无效的?

  1. Aname 既没有分组也没有聚合,因此每组没有唯一的值
  2. BGROUP BY 必须列出表的所有列
  3. Cdept 必须出现在聚合函数中
  4. DCOUNT(*) 不能与 GROUP BY 一起使用
8.困难

两个事务都读到 stock = 10,各自减 1 后写回结果,最终得到 9 而不是 8。这是哪种异常?

  1. A脏读
  2. B删除异常
  3. C丢失更新
  4. D幻读

答案

  1. 1. A · 保留 country 等于列表中任一值的行
  2. 2. D · ALTER TABLE
  3. 3. C · 缺失或未知的值
  4. 4. C · 读取另一个尚未提交的事务所写入的数据
  5. 5. A · 用一个联结表,其中保存指向 students 和 courses 的外键
  6. 6. C · 用户输入改变 SQL 查询结构的一种攻击
  7. 7. A · name 既没有分组也没有聚合,因此每组没有唯一的值
  8. 8. C · 丢失更新

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