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

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

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

姓名: ____________________   日期: ____________

1.简单

CREATE、ALTER 和 DROP 等语句属于 SQL 的哪一部分?

  1. A事务控制语言(TCL)
  2. B数据控制语言(DCL)
  3. C数据定义语言(DDL)
  4. D数据操纵语言(DML)
2.简单

哪条 SQL 语句用于从表中检索数据?

  1. AUPDATE
  2. BINSERT
  3. CSELECT
  4. DCREATE
3.简单

什么是代理键?

  1. A引用另一个表的键
  2. B只在视图中使用的键
  3. C没有业务含义的人工标识符,例如自增 id
  4. D由电子邮件地址等真实数据构成的键
4.中等

什么是脏读?

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

一个表中有些行的 col 为 NULL。WHERE col = NULL 返回哪些行?

  1. A返回表中的所有行
  2. B在每种数据库中都报错
  3. C只返回 col 为 NULL 的行,与 IS NULL 相同
  4. D不返回任何行,因为比较结果是未知
6.中等

什么是 SQL 注入(SQL injection)?

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

相关子查询(correlated subquery)是指:

  1. A通过外键连接两个表的子查询
  2. B只使用聚合函数的子查询
  3. C只在外层查询之前运行一次,并将结果缓存供每一行使用
  4. D引用外层查询的列,并针对外层的每一行进行求值的子查询
8.困难

为什么带有 WHERE YEAR(order_date) = 2025 的查询可能不会使用 order_date 上的索引?

  1. A索引永远不能用于日期
  2. BYEAR 不是合法的 SQL
  3. C对列应用函数会妨碍简单的索引范围查找
  4. Dorder_date 上的索引只用于 ORDER BY 子句,绝不用于 WHERE

答案

  1. 1. C · 数据定义语言(DDL)
  2. 2. C · SELECT
  3. 3. C · 没有业务含义的人工标识符,例如自增 id
  4. 4. A · 读取另一个尚未提交的事务所写入的数据
  5. 5. D · 不返回任何行,因为比较结果是未知
  6. 6. A · 用户输入改变 SQL 查询结构的一种攻击
  7. 7. D · 引用外层查询的列,并针对外层的每一行进行求值的子查询
  8. 8. C · 对列应用函数会妨碍简单的索引范围查找

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