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

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

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

姓名: ____________________   日期: ____________

1.简单

什么是代理键?

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

CROSS JOIN 返回什么?

  1. A只有不匹配的行
  2. B只有在共享键列上匹配的行
  3. C只有第一个表的行
  4. D两个表中行的所有组合
3.简单

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

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

什么是 SQL 注入(SQL injection)?

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

EXCEPT(在 Oracle 中称为 MINUS)返回什么?

  1. A两个查询中都出现的行
  2. B第一个查询中不出现在第二个查询中的行
  3. C第二个查询中不出现在第一个查询中的行
  4. D两个查询的所有行,去除重复
6.中等

哪个查询返回每个客户的订单数量?

  1. ASELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
  2. BSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  3. CSELECT customer_id FROM orders WHERE COUNT(*) > 0
  4. DSELECT DISTINCT COUNT(*) FROM orders
7.困难

把 R 分解为 R1 和 R2 在什么情况下保证是无损的?

  1. AR1 和 R2 的公共属性构成 R1 或 R2 的超键时
  2. BR1 和 R2 的列数相同时
  3. CR 的每个属性都同时出现在 R1 和 R2 中时
  4. DR1 和 R2 没有公共属性时
8.困难

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

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

答案

  1. 1. D · 没有业务含义的人工标识符,例如自增 id
  2. 2. D · 两个表中行的所有组合
  3. 3. D · 数据定义语言(DDL)
  4. 4. C · 用户输入改变 SQL 查询结构的一种攻击
  5. 5. B · 第一个查询中不出现在第二个查询中的行
  6. 6. B · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  7. 7. A · R1 和 R2 的公共属性构成 R1 或 R2 的超键时
  8. 8. A · name 既没有分组也没有聚合,因此每组没有唯一的值

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