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

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

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

姓名: ____________________   日期: ____________

1.简单

外键(foreign key)是:

  1. A其值在表的所有行中都必须唯一的列
  2. B外国用户使用的键
  3. C始终加密的键
  4. D引用另一个表主键的列
2.简单

哪种约束确保某列永远不能留空(NULL)?

  1. ANOT NULL
  2. BCHECK NULL
  3. CDEFAULT
  4. DUNIQUE
3.简单

列上的 UNIQUE 约束保证什么?

  1. A该列自动成为表的主键
  2. B该列在插入后不能被修改
  3. C任何两行在该列中都没有相同的非 NULL 值
  4. D该列的值是排好序的
4.中等

orders 表有 5 行,每行都引用一个已存在的客户。customers 表有 3 行。在 customer_id 上做 INNER JOIN 返回多少行?

  1. A5
  2. B8
  3. C3
  4. D15
5.中等

SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results 返回什么?

  1. A只返回及格的学生
  2. B报错,因为 SELECT 中不允许使用 CASE
  3. C及格和不及格的学生人数
  4. D每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
6.中等

当 WHERE 子句没有匹配任何行时,SELECT SUM(amount) FROM orders 返回什么?

  1. ANULL
  2. B报错
  3. C0
  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.困难

下列查询返回什么:SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?

  1. A成绩高于平均成绩的学生
  2. B仅成绩最高的学生
  3. C所有学生的平均成绩
  4. D报错,因为 WHERE 中不允许使用子查询

答案

  1. 1. D · 引用另一个表主键的列
  2. 2. A · NOT NULL
  3. 3. C · 任何两行在该列中都没有相同的非 NULL 值
  4. 4. A · 5
  5. 5. D · 每个姓名以及根据成绩得到的标签 'pass' 或 'fail'
  6. 6. A · NULL
  7. 7. A · name 既没有分组也没有聚合,因此每组没有唯一的值
  8. 8. A · 成绩高于平均成绩的学生

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