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

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

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

姓名: ____________________   日期: ____________

1.简单

CROSS JOIN 返回什么?

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

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

  1. ACREATE COLUMN
  2. BALTER TABLE
  3. CINSERT COLUMN
  4. DUPDATE TABLE
3.简单

在 WHERE 子句中,哪个运算符用于简单的文本模式匹配?

  1. ALIKE
  2. BCONTAINS
  3. CSIMILAR
  4. DMATCH
4.中等

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

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

哪条语句删除表中的所有行、保留其结构,并且不能带 WHERE 子句?

  1. AALTER TABLE
  2. B带 WHERE 子句的 DELETE FROM
  3. CTRUNCATE TABLE
  4. DDROP TABLE
6.中等

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

  1. AGROUP BY
  2. BSELECT 列表
  3. CORDER BY
  4. DWHERE
7.困难

事务 T1 锁定了行 A 并等待行 B,而 T2 锁定了行 B 并等待行 A。典型的 DBMS 会怎么做?

  1. A检测到死锁,并中止其中一个事务作为牺牲者
  2. B让两个事务都等待,直到其中一个正常提交
  3. C同时提交两个事务
  4. D把两个事务合并为一个
8.困难

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

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

答案

  1. 1. D · 两个表中行的所有组合
  2. 2. B · ALTER TABLE
  3. 3. A · LIKE
  4. 4. C · 第一个查询中不出现在第二个查询中的行
  5. 5. C · TRUNCATE TABLE
  6. 6. D · WHERE
  7. 7. A · 检测到死锁,并中止其中一个事务作为牺牲者
  8. 8. B · name 既没有分组也没有聚合,因此每组没有唯一的值

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