简介这是与郝老师Access视频教程配套的讲义文档面向Access零基础初学者系统讲解数据库从创立到表设计、字段属性设置及数据类型选用的完整流程。资源包共1个doc文件大小约206KB文档结构清晰适合对照视频学习时做笔记与重点速查。目前已有71人学习浏览。内容涵盖创建数据库前的需求分析、两种建库方式、三种建表方式以及设计视图与数据表视图的区别同时结合“入学新生表”实例演示了必填字段、默认值、有效规则、主键和查阅向导等属性的设置方法并逐一说明文本、备注、数字、日期/时间、货币、自动编号、是/否、OLE对象、超链接及查阅向导十种数据类型的适用场景与存储特性。讲义以章节形式组织既可用作课堂练习参考也能帮助初学者理解Access的核心概念为后续数据查询、窗体与报表学习打好基础。 好的收到。以下是基于给定资源标题、关键词和写作规范生成的独立中文 Markdown 博文正文从二级标题开始无主标题无平台化互动痕迹内容围绕 Access 视频教程讲义资源展开符合技术落地文的定位与全部约束。1. 郝老师Access视频教程讲义不是看视频而是拿到一套能直接落地的数据库实战笔记在数据库入门这个领域Access 常常被低估尤其是当办公室里有大量 Excel 表格需要汇总、拆分、查询而你又不想求 IT 部门写程序时Access 的威力才会真正显现。这份《郝老师Access视频教程-讲义.doc》不是简单的视频字幕整理它更像是一套从建表到 VBA 开发的完整行动手册。我最初拿到它时以为只是个课程大纲翻完才发现里面对查询设计、SQL 视图、窗体绑定、宏与 VBA 的讲解粒度几乎按「手把手敲一遍就能用」的标准来写。适合谁适合被 Excel 大数据量卡到崩溃的职场人、准备计算机二级 Access 考试的考生以及刚接触关系型数据库、想用可视化方式理解表连接和查询逻辑的新手。解决什么问题解决「视频看完就忘」和「书太厚不想翻」这两大痛点让你照着讲义里的操作路径就能在 Access 里跑通一个完整的小型管理系统。2. 先搞懂 Access 的学习路径从表设计到查询逻辑的核心脉络2.1 为什么 Access 值得学它填补了 Excel 和大型数据库之间的空白很多从业者有个误区觉得 Access 是玩具不如 SQL Server 或 MySQL 专业。但从实际工作和考试两个维度看Access 的价值在于它把数据库设计的核心概念——表、主键、外键、关系、范式、查询、窗体、报表——全部用可视化的方式呈现了出来。你可以先不写一行 SQL光用查询设计视图就能完成多表关联和条件筛选然后在 SQL 视图里看到自动生成的语句再反过来理解每个子句的作用。这种「先看界面、再看代码」的学习路径对新手极其友好。这份讲义的第一章到第三章就集中讲这些基础概念。我拿到的时候重点看了它怎么讲「关系」这一节。大部分教材只会画一个关系图然后让你背一对一、一对多、多对多的定义。这份讲义不同它直接给了三张示例表——比如学生表、成绩表、课程表——然后一步步演示如何在「数据库工具」选项卡里建立关系并说明为什么成绩表中要同时存放学生 ID 和课程 ID而不是直接存学生姓名。这个切入点非常实用因为很多新手建表时都习惯把姓名直接塞进成绩表结果数据冗余到爆炸更新的时候要改好几处这就是典型的没理解主键与外键的配合价值。2.2 表设计阶段的三个关键决策字段类型、主键、是否规范到第三范式在 Access 中表设计是整个项目的基石。讲义里明确强调过几个点我这里结合自己的使用经验再补充一下因为新手最容易在这块翻车。第一个决策是字段类型的选择。文本、备注、数字、日期/时间、是/否、OLE 对象、附件、计算这些类型看起来简单但选错很致命。比如手机号很多人习惯用「数字」类型但当手机号超过 11 位或带区号时数字类型会丢失精度或直接溢出。讲义里给的方案是凡是不会参与数学运算的编号类字段一律用短文本。这个经验后来救过我一次我在帮某个模拟项目X做员工信息表时把所有编号都设成了文本后面做连接查询时才没出乱子。第二个决策是主键怎么设。自增 ID 是 Access 默认推荐的「自动编号」类型大多数情况下直接用它做代理主键没问题。但讲义里也提到一个场景如果你有一张表是「学生选课关系表」里面每一条记录代表一个学生选了一门课那么更合理的主键可能是「学生ID 课程ID」的联合主键而不是单独再设一个无意义的选课记录ID。这么做的好处是从数据库层面就能阻止重复选课而不是靠写代码去查一遍再插入。这个点很细但恰恰是考试和工作里的高频考点。第三个决策是范式程度。第三范式听起来很高大上但操作上就一句话消除传递依赖。讲义里拿「学生表」举例如果你把「班级」和「班主任」都放在学生表里那么当班级人数多了需要批量换班主任时你要按学生一条条去改如果你拆出一张「班级表」学生表里只存班级ID班主任信息只存在于班级表那就只需要改一行。第三范式不是越高越好但绝大多数小型管理系统的核心业务表至少该做到第二范式能到第三范式就到第三范式。过度拆分反而会让查询时的连接次数变多性能下降这个度的把握讲义里也有简单涉及提了一句「分析型报表场景可以保留冗余字段」——我当时觉得这句话特别值钱。2.3 讲义怎么帮你把概念落到 Access 界面上看完前几章的文字我特意打开 Access 2021 按照讲义里的截图位置找了一遍发现它讲解的操作路径和当前主流版本基本一致。比如建立表关系的入口、查询设计视图的添加表面板、条件栏里 Between 和 Like 的写法都用箭头和文字标注得清清楚楚。这种「截图加步骤说明」的编排方式比纯视频更适合检索因为你不需要拿着进度条反复拖拽只要在讲义里定位到对应的操作截图就行。我自己在复现的时候习惯把讲义里的每一步拆成一个清单而不是直接往下读。比如「创建查询」这一章讲义里讲了怎么通过向导生成查询、怎么在条件行里输入模糊条件、怎么把查询结果转成新表。我照着做了一遍后发现难的不是点哪个按钮而是理解「查询设计网格」里每一列代表什么。讲义里有一句话对我启发很大查询设计网格中的每一个字段实际上决定了输出结果集中每一列的内容和排序方式而条件行决定了哪些行被保留。这句话把一个可视化界面和 SQL 的 SELECT 语句逐列对应了起来非常直观。3. 从查询到 SQL 视图把讲义里的查询设计练成肌肉记忆3.1 单表查询的进阶写法条件、排序、通配符与分组统计查询是 Access 的核心操作也是考试和日常办公中最常用的一块。讲义在查询这一章的篇幅很足我挑选三个最值得抄作业的部分来说。第一部分是条件筛选的写法。这里不光有等号、大于小于这种基础运算符还专门列了一个表格把 In、Between、Like、Is Null、Is Not Null 全部做了对比。每个运算符后面都附带一个示例条件和对应的查询效果。比如 Like 张* 表示姓氏为张的记录Like [A-D] 表示首字母在A到D之间的记录这里通配符用的是汉字环境下的星号和问号和 SQL 标准里的百分号和下划线不太一样这点新手经常混淆。讲义里特意提醒在 Access 的查询设计视图条件栏里通配符就是星号和问号如果你切到 SQL 视图就要换成百分号和下划线。翻车点极多我见过不少人因为在 SQL 视图里写了 Like 张% 结果什么都查不出来。第二部分是排序和多级排序。在查询设计网格里排序行可以选择升序或降序多个字段的排序优先级从上到下依次递减。讲义里给出了一个案例先按「部门」升序再按「入职日期」降序这样每个部门里的人按入职时间从新到旧排列。这个操作在 Excel 里也能做但 Access 查询的好处是你保存了查询对象后下次打开数据源更新重新运行查询就能拿到最新结果不需要每次重新排序。第三部分是分组统计。这块是新手最容易卡住的点因为涉及「总计」行的启用。讲义里用一个销售明细表的例子演示了如何按照「区域」字段分组然后对「销售额」字段做 Sum、Avg、Count、Max、Min 五种聚合。关键的一个操作提示是在查询设计视图的右键菜单里选择「汇总」设计网格底部会出现「总计」一行然后你要把不参与聚合的字段要么删掉要么放到 Group By 里否则查询会报错或结果离谱。我第一次做的时候忘了把「订单日期」字段改成 Group By结果 SQL 报错说聚合函数不能用在 WHERE 子句。这类报错看着吓人实际就是设计网格里的设置不对。3.2 多表查询内连接、左连接在 Access 里的可视化操作多表查询比单表难的不是写代码而是搞清楚表与表之间的连接关系。讲义里把三种连接类型用图示的方式摆在一起然后分别演示在查询设计视图中双击表字段建立连接线、以及在连接线上右键选择「联接属性」切换连接类型。内连接就是只返回两个表中匹配上的记录左连接是返回左表所有记录同时把右表能匹配上的信息填进来匹配不到的置为空。讲义里「客户表」和「订单表」的案例把这两种连接的结果集差异用两个查询截图对比了出来。我当时看的时候觉得特别直观左连接的结果里右侧订单相关字段有不少是空白的这正是因为那些客户还没有下过订单。这比单纯背定义管用得多。在 SQL 视图层面讲义也有对应的解析。它把「客户 ID 等于订单表客户 ID」翻译成了ON 客户表.客户ID 订单表.客户ID这样一行代码并解释了为什么 LEFT JOIN 后面的表是右表、前面的表是左表。这个左右顺序的错误率极高我很长一段时间都搞反后来养成的习惯是想保留哪个表的全部记录就去设计视图里看连接线的箭头方向。Access 的设计视图在这方面做得比对 SQL Server 的图形化工具还要顺手因为它会直接显示箭头。3.3 操作查询更新、追加、删除、生成表讲义里给出的安全边界操作查询是 Access 独有的高频亮点它能让一个查询动作直接修改数据表内容而不仅仅是返回一个结果集。讲义里把四种操作查询——生成表查询、追加查询、更新查询、删除查询——分别用独立小节做了说明每个都配有确认执行前的提示截图。这里我要多说一句操作查询是把双刃剑。讲义里特别用一个「注意」框提醒更新查询和删除查询执行后无法用 CtrlZ 撤销所以在运行前必须先在「数据表视图」中预览待更新的记录。我自己被坑过一回某次更新查询少写了个条件直接把一批订单的客户ID全部改成了另一个客户ID还好在备份文件里恢复了过来。从那以后我的习惯是所有更新查询和删除查询先复制一份数据表副本当临时表再把查询指向临时表试运行确认影响行数符合预期后才切回目标表正式执行。讲义里也推荐了类似的思路把「先建查询、后改表」列为了铁律。用代码块演示一个典型操作查询的 SQL 写法方便你在 SQL 视图里直接对照UPDATE 订单表 SET 订单表.运费 订单表.运费 5 WHERE 订单表.收货省份 新疆 AND 订单表.运费 30;逻辑说明这条更新查询会把订单表中收货省份为新疆、且当前运费小于 30 的记录统一增加 5 元运费。这里的 UPDATE 子句指定目标表SET 子句指定要修改的字段和新值的计算表达式WHERE 子句限定影响范围。千万不要省略 WHERE 子句否则所有订单的运费都会被修改。参数说明订单表.运费这种带表名前缀的写法是 Access SQL 视图推荐的可以避免字段名歧义这样的比较运算符在 Access 里同样支持表示不等于字符串值必须用英文双引号包裹这是 Access 的 SQL 方言要求和标准 SQL 的单引号有点区别。如果你在查询设计视图里操作条件栏里写新疆也是同样的规则这个细节讲义里明确强调过因为不少从 SQL Server 转过来的人在这里反复报错。追加查询的语法也顺带提一下INSERT INTO 订单备份表 (订单ID, 客户ID, 订单日期, 金额) SELECT 订单ID, 客户ID, 订单日期, 金额 FROM 订单表 WHERE 订单日期 #2024-01-01#;逻辑说明这条语句把订单表中 2024 年以前的订单记录复制到另一张结构相同的备份表里。INSERT INTO 指定目标表和要插入的字段列表SELECT 子句负责从来源表取出符合条件的记录日期条件用 Access 特有的井号 # 包裹。如果你直接在查询设计视图里用「追加查询」模板操作会更直观但理解了 SQL 写法后排查报错会更快。参数说明目标表的字段顺序不一定非要和来源表完全一致但字段名和字段类型必须能对应上日期字面量用#2024-01-01#而不是带引号的字符串这是 Access 日期筛选的标准写法也是 SQL 语法兼容性的一个坑。讲义里建议追加查询之前务必确认目标表里没有重复主键记录否则 Access 会直接报错而且报错信息只提示第一条冲突记录如果你的数据量很大需要反复执行才能把所有冲突都排查完最好先跑一个查询把目标表主键值找出来再反查来源表。4. 窗体、报表与宏把讲义里的界面设计变成能交差的完整系统4.1 窗体设计绑定数据源与控件属性设置的几个实用参数当你把表、查询都理顺之后下一步就是做用户界面也就是窗体。讲义里对窗体设计的讲解走的是从「自动创建窗体」到「使用设计视图微调」的路径。初学者最快的上手方式是选中一张表后在「创建」选项卡里点一下「窗体」Access 会自动生成一个基于该表的可编辑表格视图。然后你再切到设计视图调整字段位置、添加按钮、设置标题。讲义里给的进阶技巧是不要只依赖自动生成的窗体要学会修改「记录源」属性。所谓记录源就是窗体背后实际绑定的表或查询。默认情况下自动创建的窗体绑定的是整张表这意味着运行时所有字段都会显示、所有记录都能编辑。如果你想做一张只读的订单查询窗体就应该先把记录源改成一个只包含目标字段的查询对象或者在查询里把对应字段的「是否允许编辑」锁定。讲义里讲「窗体设计」时提了三个属性我每次做窗体都必调允许编辑、允许删除、数据输入。这三个属性控制在属性表「数据」选项卡下把允许编辑设为否、允许删除设为否就能做成一个纯粹的浏览查询界面防止用户误改数据。4.2 报表设计分组统计与打印布局解决 Excel 做不出的合并打印问题Access 报表的核心优势在于分组和汇总。讲义里用一个「销售报表」案例讲了怎么在报表设计视图里添加「分组/排序」面板并按「区域」字段分组然后在每组底部添加一个「汇总」文本框。这里的关键操作是在页面页脚或组页脚区域放置文本框并把它的「控件来源」设置为类似Sum([金额])的表达式。这个表达式是 Access 报表的专用聚合函数不需要 SQL它是直接作用于当前报表的数据源的。我用代码块列一下常见报表表达式的用法方便你在控件来源属性里直接套用Sum([金额]) Count([订单ID]) Avg([折扣]) Max([订单日期])逻辑说明这些表达式写在文本框的「控件来源」属性中Access 会在报表每次刷新时自动计算。Sum用于金额合计Count用于统计记录行数Avg用于平均值Max用于最新日期或其他最大值。放在组页脚里它就是组内汇总放在报表页脚里它就是整张报表的总计。参数说明表达式中字段名要用方括号括起来字段名里如果包含空格或特殊字符方括号是必须的表达式前面的等号不能漏否则文本框只会显示一串文本而不是计算结果。讲义里还提醒了一个常见错误字段名英文大小写不敏感但输入时必须和表中的字段名完全一致差一个字符都会出现#名称?的报错。出现这种报错时优先检查字段名的拼写和方括号而不是怀疑 Access 出了问题。报表的分组打印能力是 Excel 透视表很难完全替代的。你可以让每一组的记录在打印时自动另起一页也可以在每组开头重复打印表头。讲义里把「在每个组后另起一页」这个属性点出来了这个对做按区域分组的订单发货单很有用。4.3 宏与事件过程从录制到写成简单的 VBA 函数宏是 Access 里介于「纯操作」和「编写 VBA」之间的一个层次。讲义里把宏的常用动作列了清单OpenQuery打开查询、OpenForm打开窗体、MsgBox弹出消息、SetValue设置控件值和 RunSQL执行 SQL 语句。在 Access 的新版本里宏设计器变成了类似流程图的模式对于零基础用户来说比 VBA 更安全因为不需要处理变量声明和错误处理。但讲义也坦率地指出如果你需要写循环、判断复杂条件或操作多张表宏的维护成本很高这时候应该切到 VBA。我给出一个讲义里提到的 VBA 事件过程的简单例子在一个命令按钮的单击事件里把文本框中的内容作为筛选条件打开一个查询。Private Sub 查询按钮_Click() Dim strSql As String Dim strKw As String strKw Me.关键字输入框.Value If strKw Then MsgBox 请输入关键字 Exit Sub End If strSql SELECT * FROM 订单表 WHERE 客户名称 LIKE * strKw * DoCmd.ApplyFilter , strSql End Sub逻辑说明这段代码挂在「查询按钮」的单击事件上。它先从窗体上的文本框读取用户输入的关键字如果为空就弹出提示并退出否则就拼出一条带 LIKE 模糊匹配的 SQL 语句通过DoCmd.ApplyFilter方法让当前窗体只显示匹配的记录。Exit Sub是关键它防止空关键字时不执行后续代码直接跑到底。参数说明Me代表当前窗体对象Value是文本框控件的当前值是字符串拼接运算符。这里 LIKE 后面的*是 Access 查询界面里的通配符在 VBA 中直接传给 SQL 时同样有效但如果你用的是其他数据库就需要改成%。讲义里提醒过在 VBA 字符串里拼 SQL 时如果查询条件里本身带单引号需要把单引号改成两个单引号转义否则会报语法错误。这条我在处理客户名称带撇号时踩过坑从那以后凡是拼接字符串进 SQL都会先做一次值检查。宏的优点在于它可以在不打开 VBA 编辑器的情况下实现「打开窗体时自动刷新数据」「点击按钮关闭窗体」这种常见交互逻辑而且宏的权限控制比 VBA 更严格。讲义中给出的建议是如果只是简单控制界面流程用宏如果要做数据处理和业务判断用 VBA。这个边界划线划得很清楚。5. Access 项目避坑指南从讲义常见错误到我的血泪经验现象 → 原因 → 解决5.1 坑一无法在更新查询中修改字段值现象运行更新查询时Access 提示「无法在更新查询中修改字段值」或者更新的行数为 0但数据明明没变。原因最常见的原因是表之间的连接关系有问题。当更新查询涉及多张表时如果更新的字段来自「一对多」关系中的「一」那一侧且另一侧的连接字段没有建立索引Access 会因为无法唯一识别那条记录而拒绝更新。另一种常见原因是目标字段是自动编号类型或者表设置了主键但连接查询中主键字段没有包含在输出字段里。解决在更新查询设计视图中把要更新的字段、以及用来连接两个表的关联字段都拖到设计网格中。接着检查表关系窗口确保连接字段两侧的数据类型一致一个字段是文本另一个字段是数字Access 会在设计视图里连不上或更新失败。更稳妥的做法是先改查询为「选择查询」预览所有待更新记录确认记录集能正常显示且行数正确再切换回更新查询。这个预览步骤我每次都会执行一遍已经成了肌肉记忆。5.2 坑二查询结果中中文显示为乱码或出现奇怪字符现象在查询结果里某些中文内容显示成乱码或者原本正常的日期字段变成了数字序列。原因一个可能是字段的「格式」属性设置不对比如日期字段被设成了「常规数字」显示出来就是序列值。另一个更隐蔽的原因是数据库文件的默认编码规格与 Access 当前版本不一致特别是一些旧格式 Access 数据库如 .mdb在高版本 Access 中打开时文本字段的 Unicode 压缩标志不同偶尔会出现部分字符读取异常。解决先打开目标字段的属性表把「格式」属性重新选择为「日期/时间」或「文本」看显示是否恢复。如果乱码依旧把数据导出为 Excel 或文本文件时选择 Unicode 编码然后再用 Access 导入新表相当于做一次数据“洗底”。讲义里也提到过不要在表设计时把文本字段的「统一码压缩」属性随意关掉否则在混合中英文环境下可能出现写入不完整。这个小属性平时没人注意但恰恰是字符异常的高发源头。5.3 坑三查询中的 Like 条件时而有效时而无效现象在查询设计视图条件栏里写Like *销售部*能查出数据但把同样的条件粘进 SQL 视图改成LIKE %销售部%后查询结果变成了 0 行或者直接报错说数据类型不匹配。原因Access 的查询设计视图和 SQL 视图对通配符的解释不同。设计视图使用 Access 自己的通配符规则星号*、问号?而 SQL 视图遵循标准的 ANSI SQL 规则百分号%、下划线_。如果你在 SQL 视图里写星号Access 不会把星号当作文本通配符而是当作普通字符去匹配自然查不到结果。解决一份讲义里查过通配符规则后我现在的做法是在设计视图里完成所有条件的可视化配置然后切到 SQL 视图只做查看不再手动修改 WHERE 子句。非要在 SQL 视图里写通配符时统一改用%和_并确认当前数据库是否启用了 ANSI-92 SQL 兼容模式。这个兼容模式的位置在文件-选项-对象设计器-查询设计里如果勾选了 ANSI-92 标准则查询设计视图里的通配符也会变成标准的百分号。这个开关是全局性的改之前先想清楚会不会影响其他查询。讲义里没有提这个开关但我实际测试下来这是最隐形的一个坑。5.4 坑四窗体和报表打开后速度极慢滚动卡顿现象某一个包含大量数据的窗体或报表下拉滚动时明显卡顿甚至出现未响应。原因最常见的原因是窗体或报表的记录源是一张包含上万条记录的表且没有加筛选条件。Access 的客户端-服务器架构决定了它不适合在局域网中直接承载超大结果集的即时渲染。另一个原因是窗体的「记录集类型」设置成了可编辑的动态集每次滚动都会重新从数据源读取数据。解决打开窗体属性表将「记录集类型」改为「快照」修改后窗体变为只读但滚动速度会有质的提升。如果有按钮需要修改数据可以另做一个只更新特定记录的独立窗体避免在大结果集窗体上直接编辑。同时在记录源中尽量使用查询来限定字段范围只取出界面真正要显示的列不要SELECT *。在报表层面也会把「分组/排序」面板里不用的字段删掉减少底层数据处理量。讲义里建议把超过 5 万条记录的业务表定期压缩归档到另一张历史表里日常窗体只关联当前表这个做法在真实办公环境中非常实用。5.5 坑五文件损坏与迁移时的提示「不可识别的数据库格式」现象双击打开某个 .accdb 文件时Access 弹出「不可识别的数据库格式」对话框或者提示文件已损坏无法打开。原因数据库文件被放在 U 盘或网络共享盘上直接编辑没有先复制到本地中途断电、网络断开或者另一个人同时打开了同一个文件导致锁定冲突都会造成文件头损坏。还有一种是版本不兼容在高版本 Access 中创建的 .accdb 文件用低版本 Access 打开就会报这个错。解决把文件复制到本地硬盘后用当前安装的 Access 版本打开。如果仍打不开先尝试用记事本打开看文件头是否为标准的 Access 文件标识如果不是则恢复备份文件。这里我有条经验所有 Access 练习和正式文件每天都应保留两个历史版本讲义里甚至专门讲到了「压缩和修复数据库」这个功能的位置——它位于文件-信息-压缩和修复数据库。但压缩和修复不是每次都能救回损坏文件所以更根本的预防方案是文件只存本地联网写库通过 Access 的前端连接后端 SQL Server不要直接把文件放在共享盘里多人编辑。从那以后我每完成一个建表阶段都会把.accdb手动复制一份带日期后缀的备份这个习惯救了我不止一次。6. 用讲义做一个小型项目图书借阅管理系统的搭建顺序与验证技巧这一章直接把你前面学的表、查询、窗体、宏串成一个可运行的图书借阅管理系统。我从讲义里提炼了一套精简流程总共四步。整个项目我会控制在三张表、两个查询、一个窗体、一个报表麻雀虽小五脏俱全。第一步建三张表图书表、读者表、借阅记录表。图书表包含图书ID、书名、作者、类别读者表包含读者ID、姓名、联系电话借阅记录表包含记录ID、图书ID、读者ID、借出日期、归还日期。具体字段类型如下表所示表名字段名数据类型说明图书表图书ID自动编号主键图书表书名短文本必填图书表作者短文本可空图书表类别短文本可空读者表读者ID自动编号主键读者表姓名短文本必填读者表联系电话短文本可空借阅记录表记录ID自动编号主键借阅记录表图书ID数字外键借阅记录表读者ID数字外键借阅记录表借出日期日期/时间默认值Date()借阅记录表归还日期日期/时间可空注意联系电话不设数字类型借阅记录表不直接用图书ID和读者ID作为联合主键是因为同一本书可能被同一个人多次借阅加上自动编号记录ID更灵活。第二步建立表关系在「数据库工具」选项卡里打开关系窗口把图书表的图书ID拖到借阅记录表的图书ID上把读者表的读者ID拖到借阅记录表的读者ID上勾选「实施参照完整性」和「级联删除相关记录」。注意「级联删除」要谨慎如果你删掉一个读者他所有的借阅记录都会被删日常练习可以开正式系统通常不开。第三步创建一个查询查询出「当前未归还的借阅信息」。设计视图里添加三张表把图书表.书名、读者表.姓名、借阅记录表.借出日期拖到网格条件里写Is Null放在「归还日期」字段下。这样运行后所有归还日期为空白的记录就会被筛选出来这就是一张未还书清单。再创建第二个查询按图书类别统计借出数量把类别字段设为 Group By借阅记录表.记录ID设为 Count就能得到各分类的借阅热度。第四步做一个主窗体把「未归还查询」作为记录源窗体上放一个文本框显示书名一个文本框显示读者姓名一个命令按钮。按钮单击事件里调用DoCmd.Close关闭窗体。如果你想让系统更完整可以再新建一个报表记录源设为「借阅记录表」分组级别设为「书名」在组页脚放一个Count([记录ID])的文本框这样打印出来就是每本书被借出次数的统计表。项目做完之后验证方法比代码本身更重要。我会按下面这个清单过一遍先在设计视图中跑一次选择测试确认数据准确然后把备份文件复制一份在这个备份上试跑更新查询和删除查询观察影响行数和最终数据表内容最后用完整操作用户身份登录查看界面是否卡顿。这个方法本质上是把讲义里「先建查询、后改表」的安全理念扩展到了整个项目周期。在你真正把这份讲义跑通之前请永远假设自己第一次做的表设计有问题。我的实际经历是每当我以为表关系已经无懈可击时总会冒出来一个「类别字段要改成下拉框才算规范」或者「电话号码里出现了分机号所以不能设短文本」的新需求。数据库设计不是一次成型而是不断修订的而 Access 恰恰是最适合反复改设计的工具——改表结构、重建关系、重新生成查询成本比在 MySQL 里做迁移低得多。这也是我一直建议初学者用 Access 入门数据库的原因你可以把大量精力花在理解数据本身而不是和连接字符串、权限系统搏斗。这份讲义的价值就在于它把最容易让人半途而废的细节前置告知了剩下的就是用一遍遍实操来检验你的理解。希望这些经验能帮你更快落地你自己的第一个 Access 项目。本文还有配套的精品资源点击获取