
简介《中南大学数据库试题》面向高校数据库课程复习与考试自测适合需要系统梳理DBMS基础、关系模型与SQL应用的学生。压缩包内共1个doc文件约164KB内容以数据库复习总纲和配套试卷为主涵盖CH1至CH7的核心章节并附选择题、填空题、术语解释与简答题等题型。资料已吸引358人学习。其总纲按概述、ER模型、关系模型、SQL语言、数据库保护、关系数据库设计理论、应用设计逐章展开重点覆盖三级模式、DDL/DML/DCL、关系代数、索引、事务ACID、并发控制与规范化等内容可用于对照查漏、理解命题角度和巩固答题思路。1. 先给一张地图数据库试题到底考哪几块翻开一份数据库试题最容易产生的错觉是“知识点太散、记不完”。其实整份卷子的骨架就七块概述与体系结构、ER 模型、关系模型、关系代数与 SQL、数据库保护、关系数据库设计理论、数据库应用设计。这七块不是并列关系而是从“数据怎么组织”一路推到“数据怎么不出错”前四块负责描述和操作后三块负责约束、验证和评价前面记混了后面的名词解释和简答题会连带失分典型的连锁翻车。这份梳理适合两类人正在系统学数据库原理、准备期末或复试的人以及工作几年后回头补理论、发现面试题一问就露怯的人。下面按模块铺开每一章都落到“这块的重点在哪、判断的步骤是什么、最容易记混的是哪一句”上。2. 体系结构与数据模型三级模式、两映射与 ER 三要素2.1 数据管理三阶段与 DBMS 引入要解决什么数据库这门课的第一道门槛是把“为什么要有 DBMS”讲清楚。数据管理走过了人工管理、文件系统、数据库系统三个阶段考试里最爱考的是第二阶段到第三阶段的跨越文件系统已经能做到文件内部有结构、程序与数据有一定独立性但数据文件之间的联系无法定义共享性差、冗余度高、数据面向程序而非面向全局。DBMS 引入后补上的正是这几块数据结构化不只记录内部有结构整体也有结构、共享性高冗余度低易扩充、数据独立性高、由 DBMS 统一管理和控制安全性、完整性、并发控制、故障恢复。简答题“简述数据库系统的特点”就是这四条答题时按“结构化—共享—独立—统一管理”的顺序写比乱序罗列更容易被采分。阶段数据面向对象冗余度独立性联系人工管理某一应用极高无无法表示文件系统某一程序高物理独立性有限文件之间无法定义数据库系统全局结构低物理与逻辑独立性整体结构化需要注意的是第三阶段并不是“文件系统加个软件”这么简单它引入的是“数据—联系”一起存储的观念。有一道选择题问“数据库中存储的是”答案不是“数据”而是“数据以及数据之间的联系”这个选项就是在考这条分界线。2.2 三级模式两级映像物理独立性与逻辑独立性怎么考三级模式是模式概念模式全局逻辑结构、外模式子模式/用户视图局部逻辑结构、内模式存储模式物理结构。两级映像是外模式/模式映像和模式/内模式映像。这两个映像各自对应一层独立性考法几乎是固定的逻辑独立性全局逻辑结构模式改变时调整外模式/模式映像让外模式和应用程序不变。对应题目里“当数据的全局逻辑结构改变时通过对映像的相应改变可以保持数据的局部逻辑结构不变”。物理独立性存储结构内模式改变时调整模式/内模式映像让模式不变。所以“要保证数据库物理数据独立性需要修改的是模式与内模式的映射”。记混的根源是把“谁变、调哪个映像”的顺序弄反了。一个稳的判断口诀映像的两端一端是“要被保护不变的那层”另一端是“发生改变的那层”。内模式变了要保护的是模式于是调模式与内模式的映像模式变了要保护的是外模式于是调外模式与模式的映像。再往下一层DDL 的分工也要对上号模式 DDL 描述数据库的总体逻辑结构子模式 DDL 描述数据库的局部逻辑结构内模式 DDL 描述物理存储结构。题目问“子模式 DDL 用来描述”选“数据库的局部逻辑结构”不难但很容易被“概念结构”这个选项带偏。2.3 数据模型三要素与 ER 模型的键约束数据模型的三要素是数据结构、数据操作、完整性约束。评价一个数据模型也基本从这三条出发能不能清晰描述数据结构、能不能表达足够的操作、能不能把完整性约束表达出来。数据模型分两个层次概念模型信息模型面向用户E-R 模型是代表和逻辑模型层次、网状、关系再往下才是物理模型。E-R 模型这块的重点是“联系的类型决定转换后的码”1:1 联系可以把任一实体的码并入另一个实体也可以单独建关系。1:n 联系把 1 端的码并入 n 端n 端的码仍是自己的码。m:n 联系必须单独转换成一个关系模式关系的码是各实体码的组合。这条规则直接对应选择题“一个 m:n 联系转换为一个关系模式关系的码为”答案是“各实体码的组合”。再延伸一步就是那道借阅关系的题借阅书号、书名、库存数、读者号、借期、还期同一本书允许一个读者多次借阅但不能同时对一种书借多本码就是“书号读者号借期”——加上借期才区分得开同一个人对同一本书的多次借阅。这类题的判断方法很朴素问自己“给了这组属性能不能唯一确定一行”能就够不能再加。键约束的概念也要在这里定死能唯一标识一个元组的属性或属性组叫关键字码候选码是能当码的最小属性组主码从候选码里选一个非主属性是不包含在任何候选码里的属性。这组定义会在第 4 章规范化里反复用到现在含糊后面推范式就是硬猜。2.4 四个容易混的名词和四种模型的定位四个名词先摆一张表这几乎是必考的送分题但写术语解释时最容易写串名词含义关键区分点DB长期存储在计算机内、有组织、可共享的数据集合是“数据本身”DBMS位于用户与操作系统之间的数据管理软件是“软件”提供定义、操纵、控制、维护DBS数据库 硬件 软件 人员是“系统”包含 DBA 和用户DBAS数据库应用系统是“跑在 DBMS 之上的具体业务系统”四种逻辑模型里层次模型用树型结构表示有且仅有一个根结点根结点无父结点其余结点有且仅有一个父结点网状模型的结点可以有多个父结点关系模型用二维表有严格的数学理论基础数据独立性最高E-R 模型属于信息模型概念模型是现实世界到机器世界的中间层次。这三句话分开看都懂混在一起做选择题就容易翻车比如把“具有严格数学理论基础”错选成网状模型。3. 关系代数与 SQL从五个基本运算到综合查询模板3.1 表、完整性约束与视图基表的两层关系关系模型的最小单位是表表内的完整性约束分三类域约束列取值落在某个域内、主键约束唯一且非空、唯一性约束唯一但允许空。表间的完整性主要靠外键和触发器两种方式实现前者由 DBMS 自动检查后者由用户写逻辑。外键这条线要背下来的是一张策略表简答题和综合题都可能用到场景可选策略说明外码能否接受空值允许 / 不允许取决于业务语义不是技术限制删除被参照关系的元组级联删除参照关系中相关元组一起删删除被参照关系的元组受限删除参照关系还有引用就拒绝删除删除被参照关系的元组置空值删除把参照关系中的外码置空向参照关系插入元组受限插入被参照关系没有对应主码就拒绝向参照关系插入元组递归插入在被参照关系中补一条主码相同的元组视图与基表的关系是另一个高频点视图是从一个或多个基本表或其他视图导出的虚表数据库中只存放视图的定义不存放视图对应的数据数据仍在基本表里。所以在视图上可以做查询、可以在视图上再定义视图但不能在视图上定义新的基本表——这道选择题几乎每份卷子都有选项里“在视图上定义新的基本表”就是标准错误项。定义视图时若希望“通过视图插入的行必须满足视图定义条件”要加WITH CHECK OPTION子句这一句在填空题里出现的频率极高写法上容易漏掉 WITH 或写成 CHECK OPTION 单词错位。3.2 传统集合运算与专门的关系运算关系代数分两块传统集合运算并 ∪、交 ∩、差 −、笛卡儿积 ×和专门的关系运算选择 σ、投影 π、连接 ⋈、除法 ÷。考题里最爱挖的坑是“五种基本关系代数运算”——答案是 ∪、−、×、π、σ交和连接都可以由基本运算导出所以不列入。几个必须分清的细节选择 σ 是挑元组行投影 π 是挑属性列。题干里“从关系中挑选出指定的元组”选“选取运算”“挑选出指定的属性”选“投影运算”这两题常常前后脚出现在同一张卷子上就是考你有没有看仔细。等值连接与自然连接的区别自然连接要求在两个关系中进行比较的分量必须是同名的属性组并且在结果中把重复的属性列去掉等值连接不要求属性同名也不去重复列。笛卡儿积的基数等于各关系基数之积。给 D1{a1,a2,a3}、D2{1,2}、D3{计算机, 打印机, 扫描仪}三个域的笛卡儿积基数是 3×2×318选项里给 2、3、8、18答案 18。关系代数的表达式建议按“先连接、再选择、最后投影”的顺序写投影永远放最外层因为投影之后属性就少了再拿去连接或选择会报错。这个书写顺序在应用题里能救回不少分。3.3 除法与“选修全部课程”类题目的固定套路关系代数里除法对应的是“对全部”语义而 SQL 里没有直接的除法运算符于是就有了两种等价写法关系代数写 R÷SSQL 写双重NOT EXISTS。设学生学号姓名性别年龄所在系、课程课程号课程名先行课、选课学号课程号成绩求“选修了全部课程的学生学号和姓名”-- 双重 NOT EXISTS外层遍历学生内层遍历课程 -- 第三层检查该学生是否选了该课程内层找不到任何“没选的课”才算选全 SELECT S.学号, S.姓名 FROM 学生 S WHERE NOT EXISTS ( -- 不存在这样一门课 SELECT * FROM 课程 C WHERE NOT EXISTS ( -- 使得该学生没有选它 SELECT * FROM 选课 SC WHERE SC.学号 S.学号 AND SC.课程号 C.课程号 ) );这段代码的注释里已经写清了三层的语义最外层是学生中间层是课程最内层是选课记录。两个未知变量学号未知、课程号未知就对应两层 EXISTS把“全部”翻译成“不存在一门没选的课”这是这类题的通用翻译器。同一套路还能迁移到“选修了学号为 95001 的学生所学过的所有课程的学生学号和姓名”把中间层从“全部课程”换成“95001 选过的课程”即可条件从课程 C变为选课 SC2 WHERE SC2.学号95001。判断标准是只要题目里出现“全部”“所有”“都”三个字就准备好双重 NOT EXISTS不要试图用 COUNT 硬凑HAVING COUNT(*) (SELECT COUNT(*) FROM 课程)虽然也能跑但一旦课程表有重复或选课表有空值就会静默出错。3.4 SQL 的 DDL 与 DML 分界以及索引与约束的关系SQL 语言的特点是综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式交互式与嵌入式、语言简洁易学易用。功能上分四块定义、查询、操纵、控制。分界线必须背死类别关键字备注DDLCREATE、DROP、ALTER建表、删表、改表结构、建索引DMLINSERT、DELETE、UPDATE数据更新DQLSELECT有的教材并入 DMLDCLGRANT、REVOKE授权与收权索引这一块重点不在“索引能加速查询”这种常识而在它与约束的关系聚簇索引索引项的顺序与表中记录的物理顺序一致一个表最多只能有一个。非聚簇索引索引项顺序与物理顺序不一致可以有多个。PRIMARY KEY 约束会自动创建唯一索引且不允许空值UNIQUE候选键约束创建唯一索引但允许一个空值普通索引既不保证唯一也不限制空值。也就是说主键约束、唯一约束、索引三者在物理实现上有关联在语义上是三件事。题目问“索引项的顺序与表中记录的物理顺序一致的索引”答案是聚簇索引问“与 UNIQUE 和 PRIMARY 约束的关系”要答出“唯一性由约束保证索引只是实现手段普通索引不提供唯一性”。3.5 综合题模板从建表到嵌套查询综合题的分值集中在“能不能一次写对语法”。把常用语句缩成一个模板考试时按模板改表名、列名比临场拼关键字稳得多-- 1. 建表主码 非空 唯一类型按实际长度确定 CREATE TABLE Employee ( BH CHAR(6) PRIMARY KEY, -- 编号作为主码隐含非空且唯一 XM VARCHAR(20) NOT NULL, -- 姓名不允许为空 BM VARCHAR(20), JBGZ NUMBER(8,2) -- 基本工资两位小数 ); -- 2. 加列新增一列注意类型要与后续写入的值匹配 ALTER TABLE Employee ADD ZW VARCHAR(20); -- 3. 建索引默认非聚簇要聚簇必须显式写 CLUSTERED CREATE UNIQUE INDEX idx_emp_bh ON Employee(BH); -- 4. 建视图只投影需要的列条件写成 WHERE CREATE VIEW BMV AS SELECT XM, JBGZ FROM Employee WHERE BM 某部门; -- 5. 删表注意 DROP 与 DELETE 的区别DROP 连结构一起删 DROP TABLE Employee;几个参数和写法上的坑值得单独说ALTER TABLE ... ADD在某些方言里不需要 COLUMN 关键字写不写取决于教材答题时按课上讲的版本写CREATE CLUSTERED INDEX里的 CLUSTERED 拼错写成 CLUSTED在机考里会直接报错手写题里也可能被扣分DROP TABLE删的是表定义加数据DELETE FROM只删数据两者在“删除基本表”这类题里是送分与丢分的分界。综合题的查询部分把这几条记住就够覆盖大部分题-- 范围查询BETWEEN 是闭区间包含 18 和 22 SELECT 姓名, 年龄, 所在系 FROM 学生 WHERE 年龄 BETWEEN 18 AND 22; -- 模糊匹配% 代表任意长度注意 X 要替换成实际姓氏 SELECT 成绩 FROM 选课 WHERE 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名 LIKE X%); -- 分组统计WHERE 过滤行HAVING 过滤组 SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(*) 5; -- 多层嵌套系名 → 课程号 → 学号 → 姓名一层都不能少 SELECT 姓名 FROM 学生 WHERE 学号 IN ( SELECT 学号 FROM 选课 WHERE 课程号 IN (SELECT 课程号 FROM 课程 WHERE 课程名 某课程) );还有一条最容易被忽略WHERE 年龄 (SELECT MAX(年龄) FROM 学生 WHERE 所在系某系)这类“比某系所有学生年龄都大”的题用 MAX 比用 ALL 更稳因为 ALL在子查询返回空集时语义容易记混而 MAX 返回 NULL 时整条条件为假结果至少是可预期的。4. 保护与规范从 ACID 到 3NF 的两条正确性线索4.1 破坏的四个来源与安全体系设置数据库被破坏的来源梳理下来是四类硬件故障磁盘损坏、断电、软件故障DBMS 或操作系统缺陷、操作员失误误删、误改、人为破坏越权访问、恶意篡改。这四类对应四种保护手段故障恢复、并发控制、完整性约束、安全性控制。题目问“数据库保护不包括的方面”错误项常常是“控制数据冗余”——冗余控制属于设计阶段的目标不属于保护。安全性是一条独立的链用户标识与鉴别 → 存取控制授权→ 视图机制 → 审计。授权的语句是GRANT收权是REVOKE这两个词在填空题里几乎必出写反了就整空丢分。4.2 事务 ACID 与故障恢复的两个技术事务是用户定义的一个操作序列这些操作要么全做要么全不做是不可分割的工作单位。四个性质原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability合称 ACID。教材里“持久性”也写作“永久性”或“持续性”答题时写哪个都行但四个词要齐。恢复靠两个技术数据转储和登记日志文件。转储是把数据库复制到另一个地方保存日志是记录每个事务对数据的修改。恢复的基本逻辑是先用后备副本把数据库恢复到某个一致状态再用日志重做REDO已提交的事务、撤销UNDO未提交的事务。考点常常落在“恢复要涉及的两个技术”这道填空上答“转储”和“日志”即可写“备份”也能给分但最好按术语写。4.3 并发三问题、可串行化与封锁协议并发执行可能引起三类问题这是必背的三件套问题现象丢失更新两个事务读同一数据后写的覆盖先写的不可重复读同一事务内两次读同一数据结果不一样读脏数据读到了另一个未提交事务修改过的数据判断一个并发调度是否正确的标准是可串行化如果多个事务的并发执行结果与按某一次序串行执行的结果相同就认为该调度是可串行化的。这个概念的作用是给并发控制提供一个“正确性判据”实际 DBMS 用封锁来近似实现它。封锁的对象粒度从大到小数据库、表、页、记录、字段列最小的封锁粒度是字段。锁的类型分两种排它锁X 锁/写锁加了之后其他事务既不能读也不能写共享锁S 锁/读锁加了之后其他事务只能读不能写。若事务 T 要对数据对象 A 做读取和修改且其他事务不能访问 AT 必须对 A 加写锁。三级封锁协议要能一句话说清每级解决了什么一级封锁协议事务修改数据前必须先加 X 锁直到事务结束才释放。解决丢失更新。二级封锁协议一级 读数据前加 S 锁读完即可释放。解决读脏数据。三级封锁协议一级 读数据前加 S 锁直到事务结束才释放。解决不可重复读。三级的差别只在“S 锁什么时候放”这一句是简答题的得分点写“三级封锁协议要求读锁也保持到事务结束”比笼统写“防止各种问题”要稳。死锁的预防也有固定两法一次封锁法每个事务一次把所有要用到的数据全部加锁缺点是降低并发度和顺序封锁法预先规定封锁顺序所有事务按同一顺序加锁。这两条与“死锁的检测与解除”是两个方向题目问“预防”就不要答“超时法”“等待图法”。4.4 四种异常、函数依赖与范式判定关系模式设计不好的后果是四类异常数据冗余度大、修改麻烦更新异常、插入异常、删除异常。四类异常的共同根源是数据依赖具体说就是部分函数依赖和传递函数依赖。函数依赖的定义要说得准确在关系 R 中若对于 X 的每一个值Y 都有唯一的值与之对应则称 X 函数决定 Y记作 X→Y。分类上有完全函数依赖、部分函数依赖、传递函数依赖三种。码、候选码、主属性、非主属性的定义在第 2 章已经定过这里直接用。范式判定的条件1NF每个属性都是不可再分的原子值。这是关系的最低要求达不到就不是关系。2NF在 1NF 基础上消除非主属性对码的部分函数依赖。也就是所有非主属性都完全依赖于候选码。3NF在 2NF 基础上消除非主属性对码的传递函数依赖。BCNF在 3NF 基础上消除主属性对码的部分和传递依赖。转换条件可以反过来用把一个 1NF 关系拆成多个 2NF 关系拆的依据是“把部分依赖的那部分单独成表”再把 2NF 拆成 3NF拆的依据是“把传递依赖的中间属性单独成表”。举个典型例子描述学校的关系模式学号姓名所在系系主任课程名成绩。函数依赖是学号→姓名学号→所在系所在系→系主任学号课程名→成绩。候选码是学号课程名。姓名、所在系只依赖于候选码的一部分是部分函数依赖所以这个关系不满足 2NF系主任通过所在系传递依赖于学号也是传递依赖。规范化就是把它拆成学生学号姓名所在系、系所在系系主任、选课学号课程名成绩三张表。4.5 模式分解两准则与设计六步模式分解的两条准则无损连接性和保持函数依赖。无损连接指分解后自然连接能还原原关系不丢信息保持函数依赖指原关系的函数依赖在分解后仍能被推出。这两条在填空题里几乎是原句出现注意“无损连接”不要写成“无损分解”之外的变体虽然意思对但术语按教材写最保险。数据库应用设计的六个步骤按顺序背需求分析收集与分析需求产出数据字典和数据流图。概念结构设计综合、归纳与抽象形成概念模型用 E-R 图表示。逻辑结构设计把 E-R 图转换成某 DBMS 支持的数据模型关系模型。物理设计选取合适的存储结构与存取路径决定是否建索引、是否用聚簇。数据库实施建库、编程序、组织数据入库、试运行。运行与维护评价、调整与修改。数据字典的五部分是数据项、数据结构、数据流、数据存储、处理过程其中数据项是不可再分的数据单位。绘制数据流图要用四种基本成分外部实体、处理过程、数据流、数据存储。这两组数字5 和 4很容易张冠李戴建议成对记。5. 易错点盘点五个最容易翻车的口径5.1 易漏点一物理独立性与逻辑独立性对应的映像记反为什么漏两个名词的字面意思太像“物理”听起来像是跟物理存储结构绑定的那层于是很多人下意识把物理独立性配给“外模式/模式映像”因为外模式离存储更远感觉更“逻辑”。这个联想是反的。怎么补抓住“内模式变→保模式→调模式/内模式映像”这条链写在草稿纸最上面做题前看一眼。再补一句反例逻辑独立性是模式变、外模式不变因为外模式是面向应用的应用不该跟着全局逻辑结构改。两道题各写一遍比读十遍定义管用。5.2 易漏点二视图上“能做什么、不能做什么”的边界为什么漏视图被反复强调是“虚表”但虚表能查到数据感觉上跟真表差不多于是“在视图上定义新的基本表”这种选项看起来也不算离谱。怎么补把视图的定义记成“只存定义、不存数据”再补三条边界可以查询、可以在视图上再建视图、可以更新有条件不能在视图上建基本表、不能建索引。第三条常常被忽略——视图上没有物理存储自然谈不上建索引。5.3 易漏点三五个基本关系代数运算里混进连接或交为什么漏并、交、差、笛卡儿积、选择、投影、连接、除法这八个名字天天一起出现背的时候是一串选“五个基本运算”时脑子里蹦出来的往往是最熟的那几个连接因为写得多反而更容易被选中。怎么补死记“∪、−、×、π、σ”这一串并且理解为什么是这五个——交可以用差表示连接可以用笛卡儿积加选择表示除法可以用投影加差表示。理解了这个“可导出”关系就不会把连接和交算进基本运算。5.4 易漏点四两属性关系模式的范式判定为什么漏范式定义是“消除部分依赖”“消除传递依赖”做题时习惯性地去找依赖关系遇到只有两个属性的关系就卡住——两个属性之间要么完全依赖要么没有依赖根本构不成部分依赖和传递依赖于是有人反而不敢下结论。怎么补记住一条结论任何包含两个属性的关系模式一定满足 BCNF因而也满足 3NF、2NF、1NF。三个属性的关系模式则不一定可能因为存在传递依赖而只到 2NF。选项里“任何一个包含三个属性的关系模式一定满足 3NF”是错误项“任何一个关系模式都一定有码”是正确项这两句经常被放在同一题里做干扰。5.5 易漏点五约束、索引与空值的三处细节为什么漏这三处都属于“写起来顺手但语义不对”的类型。第一处是UNIQUE与PRIMARY KEY的区别前者允许一个空值后者不允许第二处是聚簇索引一表只能有一个写CREATE INDEX时默认不是聚簇第三处是空值比较AGE NULL永远不成立必须写AGE IS NULL。怎么补把这三条合成一张小卡片考前扫一眼。空值那条再补一句NOT (AGE IS NULL)与AGE IS NOT NULL等价但AGE NULL与AGE NULL都不成立这是 SQL 三值逻辑的直接后果。手写 SQL 时遇到空值先在草稿上写 IS NULL再考虑要不要取反。6. 复习清单从查漏到动手复习到最后一轮最没效率的做法是把教材从头翻一遍。更实际的做法是按“能不能自己复现”来筛把下面这张清单当成一次自测能不看书画出来的直接划掉卡住的就回到对应章节。模块自测动作卡住说明什么体系结构画出三级模式两级映像标出两个独立性各改哪个映像映象与独立性的对应没记牢数据模型写出三要素说出四种模型各自的结构特征概念模型与逻辑模型分不清E-R 模型给一个 m:n 场景写出转换后的关系模式与码码的判定规则没吃透关系代数用五个基本运算表示交、连接、除法基本运算的“可导出”关系没理解SQL默写建表、加列、建索引、建视图、删表五条语句语法细节不熟考场现拼风险高综合查询手写“选修全部课程”的双重 NOT EXISTS“全部”语义的翻译不熟保护说出 ACID、三问题、三级封锁协议各解决什么协议与问题的对应关系混淆规范化给一个含传递依赖的关系模式拆到 3NF 并说明依据范式判定只能靠背定义设计步骤按顺序说出六步并指出每步的产出物步骤有印象但产出物记不住这张表的使用方法是先做后看拿一张白纸每一行限时三分钟写不出来再看书看完立刻合上重写一遍。写第二遍的时间成本远低于重复阅读而且能直接暴露“以为自己会了”的错觉。还有两个动手性的检查值得单独做。一是把所有容易出现拼写错误的关键字列出来默写一遍CREATE、CLUSTERED、UNIQUE、ALTER、GRANT、REVOKE、NOT EXISTS、HAVING写错的当场圈出来。二是把关系代数和 SQL 的对应关系过一遍同一个查询先用代数写、再用 SQL 写两种写法都写不出来说明语义没想清楚而不是语法不熟。我自己最早复习数据库的时候习惯是先把七章目录在纸上默写一遍写不出来的章节就标记成“待补”然后只补标记的那几章最后再合起来做一套完整的题。这个方法看起来笨但比按顺序重读省时间得多因为目录能默写出来说明章节内部的知识点已经挂到了正确的位置上。后来我每次准备这类理论性考试都会强制先跑一遍“默写目录 限时自测”的流程再决定把时间花在哪一章。这套复习清单配合前面的模块梳理一起用基本能把“知识点散、记不住、一考就混”的问题压下去。希望帮到你。本文还有配套的精品资源点击获取