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

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

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

姓名: ____________________   日期: ____________

1.简单

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

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

哪个 SQL 关键字用于去除结果中的重复行?

  1. ADIFFERENT
  2. BUNIQUE
  3. CDISTINCT
  4. DSINGLE
3.简单

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

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

employees 表有一列 manager_id,引用另一名员工。如何在每名员工旁边列出其经理的姓名?

  1. A使用 UNION ALL 和 WHERE 过滤把该表与自身合并
  2. B用两个别名把 employees 表与它自身连接
  3. C在磁盘上创建该表的第二个副本
  4. D只使用 GROUP BY manager_id
5.中等

哪个查询列出从未下过订单的客户?

  1. ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  2. BSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
6.中等

一个表在每一行订单上都存储了客户地址。只修改其中一行的地址而不修改其他行,这是哪种情况的例子?

  1. A更新异常
  2. B插入异常
  3. C幻读
  4. D删除异常
7.困难

如果 col 中所有值都是 NULL 且表有 10 行,SELECT COUNT(col) FROM t 的结果是什么?

  1. ANULL
  2. B报错
  3. C10
  4. D0
8.困难

对于一个查询,什么是覆盖索引?

  1. A每晚重建一次的索引
  2. B只建在主键上的索引
  3. C包含查询所需全部列的索引,因此不必读取表本身
  4. D覆盖每个表每一列的索引

答案

  1. 1. A · 保留 country 等于列表中任一值的行
  2. 2. C · DISTINCT
  3. 3. D · 数据定义语言(DDL)
  4. 4. B · 用两个别名把 employees 表与它自身连接
  5. 5. A · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  6. 6. A · 更新异常
  7. 7. D · 0
  8. 8. C · 包含查询所需全部列的索引,因此不必读取表本身

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