尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

中南大学数据库试题精讲:从CH1到CH7考点与SQL实战

中南大学数据库试题精讲:从CH1到CH7考点与SQL实战 简介这份中南大学数据库试题资料面向高校数据库课程学习者与备考学生系统梳理了数据库原理的核心考点与典型题型。内容覆盖DBMS基础、数据模型、关系模型、SQL语言、数据库保护及设计理论等模块并配有选择题、填空题、术语解释与简答题等多种题型可帮助读者检验知识掌握程度、查漏补缺。资源包内含1个doc文档压缩包约164KB文档以复习总纲与试卷形式组织按章节列出重点概念与常见考题便于对照教材逐章复习。目前已有351人学习下载适合需要系统梳理数据库知识体系、准备课程考试或考研复试的读者参考使用。1. 数据库期末复习的“靶向资料”中南大学数据库试题到底覆盖了什么如果你正在为数据库期末考试发愁或者带学生做数据库课程设计时想找一套有答案、有解析、能直接对标的题库这份中南大学数据库试题算是比较“硬”的一份资料。它不是那种只有选择题的碎片化题库而是从 CH1 概述一路铺到 CH7 数据库应用设计覆盖了 DBMS 引入背景、三级模式两级映象、ER 模型、关系代数、SQL 的 DDL 与 DML 区分、索引与约束的关系、事务 ACID、并发控制的可串行化调度、函数依赖与 1NF/2NF/3NF 转化、六步设计流程这些核心考点。试卷部分还配了参考答案应用题和 SQL 书写题都有完整语句适合拿来当复习总纲或者出卷参考。适合谁期末冲刺的本科生、需要快速梳理知识框架的考研党、以及刚讲完数据库原理想找配套练习的青年教师。下面我按“资料结构怎么拆 → 核心考点怎么过 → SQL 和关系代数怎么练 → 避坑 → 进阶验证”这条线把这份试题的用法讲透。2. 拆解试题结构从 CH1 到 CH7 的知识点映射与复习优先级2.1 七章总纲的权重分布与复习顺序这份资料最值钱的地方是开头那份“数据库复习总纲”。它把七章内容按考试出现频率和难度做了隐性分层。CH1 概述和 CH2 ER 模型属于概念题高发区选择题、填空题、术语解释都会从这里出CH3 关系模型和 CH4 SQL 语言是应用题和 SQL 书写题的主战场分值占比通常超过 40%CH5 数据库保护、CH6 关系数据库设计理论、CH7 应用设计则集中在简答题和综合题。我一般建议的复习顺序是先过 CH1 和 CH2 把术语和模型概念钉死再攻 CH3 关系代数和 CH4 SQL最后用 CH5 到 CH7 收口简答和设计题。这样安排的原因是关系代数和 SQL 的很多题目依赖 ER 模型和关系模型的基础如果一上来就刷 SQL遇到“求选修了全部课程的学生”这种除法或双重 NOT EXISTS 题很容易卡住。总纲里每个章节后面都标了“重点”或“作业”比如 CH2 的键约束和作业、CH3 的关系代数作业、CH4 的索引与 UNIQUE/PRIMARY 约束关系。这些标记不是随便写的它们对应试卷里反复出现的题型。以 CH4 为例索引部分明确要求区分聚簇索引和非聚簇索引并且要理清它们与 UNIQUE候选键和 PRIMARY主键约束的关系。这个点在试卷1第六题第 3 小题直接考了建立 teacher 表按编号的索引答案里写了Create index teach on teacher(bh);并补充了唯一索引和聚簇索引的写法。如果你复习时只背了 CREATE INDEX 语法没理解聚簇索引的物理顺序含义遇到“索引项的顺序与表中记录的物理顺序一致”这种选择题就会丢分。2.2 试卷题型与分值结构选择题、填空题、术语解释、简答、应用题、SQL 书写资料里包含多套试卷题型结构比较稳定。以试卷1为例单项选择题 15 分、填空题 15 分、术语解释 15 分、简答题 15 分、应用题 15 分、SQL 书写 10 分、综合题 15 分。这个分值分布透露了一个关键信息纯记忆性内容选择、填空、术语、简答占了 60 分应用和 SQL 占 40 分。也就是说如果你时间紧先把术语解释和简答题的答案背熟性价比最高。术语解释常考的有数据库系统、内模式、封锁、第三范式、候选码、DBMS、数据完整性、数据模型、实体、非主属性。简答题高频题包括数据库系统特点、实体完整性规则、关系模式设计不好的问题、数据库设计步骤、事务属性、三级封锁协议、等值连接与自然连接区别、需求分析阶段任务和方法。填空题里反复出现的是三大传统数据模型中具有严格数学理论基础的是关系模型、实现概念模型最常用的表示方法是 E-R 图、DBMS 并发控制的单位是事务、数据库恢复涉及数据转储和登记日志文件、关系代数中专门的关系运算包括选择投影连接和除法、事务四个性质是原子性一致性隔离性持久性、授权用 GRANT 收权用 REVOKE。这些空几乎每年都换汤不换药把答案直接记住就能拿分。2.3 从试卷反推考点哪些章节必须动手写 SQL试卷1的第六题和第七题、试卷2的第六题、试卷3的第四题、试卷4的第四题都是 SQL 书写。这些题目覆盖了 CREATE TABLE、ALTER TABLE ADD COLUMN、CREATE INDEX、CREATE VIEW、DROP TABLE、INSERT、UPDATE、SELECT 嵌套、GROUP BY HAVING、BETWEEN、LIKE、IN、NOT EXISTS 双重否定。其中最难的是“查询选修了全部课程的学生学号和姓名”试卷1第七题第 6 小题和试卷2第五题第 4 小题都考了。答案用的是双重 NOT EXISTS逻辑是不存在一门课程该学生没有选修。这个题如果只背 SQL 模板不理解相关子查询的嵌套逻辑考场上很难写对。我的建议是把资料里所有 SQL 题抄到自己的数据库环境里跑一遍。用 SQLite 或者 MySQL 建三张表学生学号姓名性别年龄所在系、课程课程号课程名先行课、选课学号课程号成绩。然后逐题执行观察结果。比如“查询其他系中比经管系所有学生年龄都大的学生名单”答案写的是Select * From 学生 Where 年龄(select max(年龄) from 学生 where 所在系经管系);这里用配合max是可行的但要注意如果经管系没有学生子查询返回 NULL整个条件会变成未知查不出任何记录。这种边界情况在考试里一般不考但实际写代码时必须考虑。3. 关系代数与 SQL 双线突破从集合运算到嵌套查询的动手路径3.1 关系代数五个基本运算与除法的手工推导CH3 关系模型里明确标了“关系代数重点”并且列出了传统的集合运算交、并、差、笛卡儿乘积和专门的集合运算选择、投影、连接、除法。试卷1选择题第 11 题考了“五种基本关系代数运算是”答案是 ∪、-、×、π 和 σ。注意这里没有把 ∩ 和连接算作基本运算因为交可以用差来表示连接可以用笛卡儿积加选择来表示。这个点容易混复习时要记死基本运算是并、差、笛卡儿积、选择、投影。除法运算在试卷里以“求选修了全部课程的学生”这种形式出现。关系代数除法的手工推导步骤是先找出被除关系中所有课程号再找出每个学生选修的课程号集合如果某个学生的课程号集合包含全部课程号则该学生是结果。用 SQL 写就是双重 NOT EXISTS。我一般会让学生先用关系代数表达式写一遍再翻译成 SQL这样能真正理解嵌套逻辑。比如“求选修了学号为 95001 学生所学过的所有课程的学生学号和姓名”关系代数思路是先取 95001 选修的课程集合然后找选修了这些课程全部的学生。SQL 写法可以用 NOT EXISTS 嵌套也可以用 GROUP BY 加 HAVING COUNT 来近似但后者在课程集合不固定时容易出错。3.2 SQL 书写题的分层练习建表、索引、视图、嵌套查询资料里的 SQL 题可以分成四个难度层。第一层是 DDLCREATE TABLE、ALTER TABLE ADD COLUMN、CREATE INDEX、CREATE VIEW、DROP TABLE。试卷1第六题就是典型建 teacher 表、加 WCF 列、建索引、建视图、删表。第二层是单表查询BETWEEN、LIKE、IN、ORDER BY。第三层是多表连接和分组JOIN、GROUP BY、HAVING COUNT。第四层是嵌套查询和双重否定NOT EXISTS 嵌套、IN 嵌套。我建议按这个顺序练每层写完后对照答案检查语法细节。比如建表时主码用PRIMARY KEY唯一约束用UNIQUE外码用FOREIGN KEY ... REFERENCES ...。索引部分要注意CREATE UNIQUE INDEX和CREATE CLUSTERED INDEX的区别聚簇索引会改变记录的物理存储顺序一个表只能有一个聚簇索引。视图部分要注意WITH CHECK OPTION的作用试卷4填空题第 4 题考了“为了使通过视图插入新行时元组满足视图的定义条件在定义视图时必须加上 WITH CHECK OPTION 子句”。这个点很多学生复习时忽略考试时填空写不出来。下面给一个可复现的建表和查询脚本用 SQLite 语法可以直接在 DB Browser for SQLite 里跑-- 创建学生表学号为主键且唯一 CREATE TABLE Student ( Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHAR(15), PRIMARY KEY (Sno) ); -- 创建课程表 CREATE TABLE Course ( Cno CHAR(5) PRIMARY KEY, Cname CHAR(30), Cpno CHAR(5), Ccredit INT ); -- 创建选课表外键关联学生和课程 CREATE TABLE SC ( Sno CHAR(5), Cno CHAR(5), Grade INT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) ); -- 查询选修了全部课程的学生学号和姓名双重 NOT EXISTS SELECT Sno, Sname FROM Student WHERE NOT EXISTS ( SELECT * FROM Course WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.Sno Student.Sno AND SC.Cno Course.Cno ) );这段代码的关键在双重 NOT EXISTS 的语义外层对每个学生检查是否存在一门课程该学生没有选修。如果不存在这样的课程说明该学生选修了全部课程。注意内层子查询的关联条件SC.Sno Student.Sno AND SC.Cno Course.Cno必须写对否则会变成笛卡儿积结果全错。参数方面CHAR(5)和CHAR(20)是定长字符串实际用 VARCHAR 更灵活但考试里按题目要求写就行。3.3 索引与约束的联动聚簇索引、唯一索引与主键的关系CH4 明确要求理清索引与 UNIQUE、PRIMARY 约束的关系。这里有一个容易翻车的点主键约束会自动创建一个唯一索引但唯一索引不等于主键。唯一索引允许一个 NULL 值取决于 DBMS而主键不允许 NULL。聚簇索引决定数据的物理存储顺序非聚簇索引只存储索引键和指向数据行的指针。试卷1第六题第 3 小题要求建索引答案写了Create index teach on teacher(bh);并补充了唯一索引和聚簇索引的写法。考试时如果题目只说“建立按编号的索引”写普通索引即可如果题目说“建立唯一索引”或“聚簇索引”必须加上 UNIQUE 或 CLUSTERED 关键字。我在实际建索引时一般会先看查询模式如果经常按范围查用聚簇索引如果经常按等值查且列值唯一用唯一索引。但考试里不用想这么多按题目字面要求写就行。注意 SQL Server 里聚簇索引的语法是CREATE CLUSTERED INDEXMySQL 里聚簇索引通常由主键隐式创建InnoDB 的主键索引就是聚簇索引。这些差异在考试里一般不涉及但如果你在课程设计里用 MySQL建表时指定主键就自动有了聚簇索引不用再手动建。4. 避坑与排查数据库试题里最容易丢分的五个细节4.1 三级模式与两级映象的对应关系写反现象选择题问“数据库系统的体系结构是”选项里有“三级模式结构和一级映象”“三级模式结构和两级映象”“三级模式结构和三级映象”。很多人选错写成一级或三级映象。原因没记住三级模式模式、外模式、内模式之间只有两级映象——外模式/模式映象、模式/内模式映象。解决记死“三级模式两级映象”外模式对应视图模式对应基本表内模式对应物理存储。物理独立性靠模式/内模式映象逻辑独立性靠外模式/模式映象。4.2 视图上不能定义新的基本表现象选择题问“在视图上不能完成的操作是”选项有“在视图上定义新的视图”“查询操作”“更新视图”“在视图上定义新的基本表”。正确答案是“在视图上定义新的基本表”。原因视图是虚表不存储数据只能在视图上再建视图不能建基本表。解决记住视图的三个可操作查询、更新有条件、定义新视图。不能建基本表不能建索引。4.3 并发操作带来的问题混淆丢失更新、不可重复读、读脏数据现象选择题问“数据库的并发操作有可能带来的三个问题中包括”选项有“数据独立性降低”“无法读出数据”“权限控制”“丢失更新”。正确答案是丢失更新。原因并发操作三大问题是丢失更新、不可重复读、读脏数据不包括数据独立性降低和权限控制。解决把这三个问题和事务隔离级别对应起来记——读未提交对应读脏数据读已提交对应不可重复读可重复读对应幻读串行化全解决。4.4 关系代数基本运算与专门运算的边界现象选择题问“五种基本关系代数运算是”选项里有带 ∩ 和连接符号的。正确答案是 ∪、-、×、π 和 σ。原因交和连接不是基本运算交可以用差表示连接可以用笛卡儿积加选择表示。解决记死五个基本运算其他都是导出运算。专门的关系运算包括选择、投影、连接、除法其中选择和投影是基本运算连接和除法是导出运算。4.5 SQL 中空值判断不能用 NULL现象选择题问“SQL 中涉及空值的操作不正确的是”选项有AGE IS NULL、AGE IS NOT NULL、AGE NULL、NOT (AGE IS NULL)。正确答案是AGE NULL。原因NULL 表示未知任何值与 NULL 用 比较都返回未知必须用 IS NULL 或 IS NOT NULL。解决写 SQL 时遇到空值判断一律用 IS NULL不要用 NULL。这个坑在实际开发中也经常踩比如WHERE column NULL永远查不出记录。5. 进阶验证用真题反推知识盲区与课程设计落地5.1 用错题反查章节建立个人薄弱点映射表做完几套试卷后不要只看分数要把错题按章节归类。比如选择题错在 CH1 三级模式填空题错在 CH5 事务 ACIDSQL 题错在双重 NOT EXISTS。然后回到总纲里对应章节把相关概念重新过一遍。我一般会让学生做一张表左边写错题编号中间写对应章节右边写错误原因和正确思路。这样复习两轮后薄弱章节会非常清晰。比如“求选修了全部课程的学生”这种题如果第一次写错说明关系代数除法没理解透需要回去看 CH3 的除法运算和 CH4 的嵌套查询。5.2 把试题里的 SQL 题改造成课程设计的小模块如果你正在做数据库课程设计这份试题里的 SQL 题可以直接改造成功能模块。比如学生表、课程表、选课表这三张表就是教务管理系统的核心。你可以把试题里的查询改写成带参数的存储过程或后端接口。比如“查询年龄在 18 到 22 之间的学生”可以做成一个筛选接口“查询选修了 5 门以上课程的学生学号”可以做成统计报表。这样既练了 SQL又推进了课程设计。注意在实际系统中学号一般用 VARCHAR 而不是 CHAR成绩用 DECIMAL 而不是 INT这些细节可以根据需求调整。5.3 验证方法用 EXPLAIN 看查询计划确认索引是否生效在真实数据库里跑试题 SQL 时可以用 EXPLAIN 命令查看查询计划确认索引是否被使用。比如EXPLAIN SELECT * FROM Student WHERE Sage BETWEEN 18 AND 22;如果 Sage 列上有索引查询计划会显示索引扫描如果没有会显示全表扫描。这个技巧在考试里不考但在课程设计答辩时能加分。我一般会建议学生在建完索引后用 EXPLAIN 对比建索引前后的查询计划观察 type 列从 ALL 变成 ref 或 range。这样能真正理解索引的作用而不是死记“索引提高查询速度”。5.4 一个具体技巧用 WITH CHECK OPTION 保护视图插入试卷4填空题第 4 题考了 WITH CHECK OPTION。这个子句的作用是通过视图插入或更新数据时必须满足视图定义中的 WHERE 条件否则拒绝操作。比如定义一个视图CREATE VIEW BMV AS SELECT XM, JBGZ, SFGZ FROM teacher WHERE bm经管系 WITH CHECK OPTION;然后尝试插入一个 bm金融系 的记录会被拒绝。这个技巧在实际开发中很有用可以防止通过视图插入不符合条件的数据。考试里如果考视图定义记得加上这个子句尤其是题目提到“插入新行时元组满足视图定义条件”时。从那以后我每次带学生复习数据库都强制他们先把总纲里的七章知识点抄一遍再用试卷里的 SQL 题在真实数据库里跑一遍最后用 EXPLAIN 验证索引。这套流程走下来期末考试的应用题和 SQL 书写题基本不会丢分。希望帮到你。本文还有配套的精品资源点击获取
返回列表