简介:这份PDF是2016年计算机专业Access数据库课程的期末考试试题,面向高校计算机相关专业学生及备考数据库基础知识的自学者,可用于期末复习、知识点自测与查漏补缺。资源包内仅含1个PDF文件,压缩包约590KB,内容为完整试卷,涵盖选择题、判断题与实训题等题型。试卷围绕Access 2003展开,涉及关系模型、数据库管理系统辨析、实体关系类型、字段类型与掩码属性、数据排序、参数查询、函数表达式、操作查询及报表控件绑定等核心考点,并配有进销存管理数据库建表与报表设计的实训题,能帮助读者检验对数据库设计、数据操作与查询处理的实际掌握程度。目前已有77人学习下载,适合作为课程复习与考前模拟的练习材料。
1. 从一份 Access 试题说起:为什么它比想象中更值得动手
很多人看到「2016年计算机专业Access 数据库试题.pdf」这个标题,第一反应是——这不就是一份期末卷子吗?但如果你真的把这份试题拆开看,会发现它其实是一份被严重低估的 Access 数据库实操地图。它覆盖了表结构设计、SQL 查询、窗体交互、报表输出这些核心模块,而这些恰恰是当下很多做数据管理、做小型业务系统的人绕不开的基本功。Access 数据库在国内中小企业、教务系统、行政台账里依然有大量存量,能读懂一份试题背后的考点,就等于摸清了 Access 的能力边界。这篇文章不是带你做卷子,而是把试题里反复出现的那些操作,还原成一套可以照着复现的落地路径。适合谁看?适合需要快速搭一个单机数据管理工具的人,适合想搞懂 SQL 查询和窗体联动到底怎么配合的人,也适合那些被「access注入」「数据库增删改查」这些热搜词带进来、想真正动手的人。
2. Access 数据库的核心对象:表、查询、窗体到底怎么串起来
2.1 表结构设计:字段类型和主键不是随便选的
Access 里的表是整个系统的地基。试题里经常考字段类型的选择,比如文本、数字、日期/时间、货币、自动编号。很多人觉得这些随便选选就行,但实际做起来,字段类型选错会直接导致查询结果不对、窗体控件绑定失败。常见做法是:主键用「自动编号」,因为它不会重复,也不受用户输入影响;姓名、课程名这类用「短文本」,长度默认 255 够用;成绩、数量用「数字」,字段大小选「双精度型」或「长整型」看业务精度;日期用「日期/时间」,格式统一设成「短日期」避免显示混乱。
这里有一个血泪经验:Access 的「查阅向导」看起来方便,但它会在表里埋一个隐藏的关联关系,后期写 SQL 的时候很容易翻车。我一般会直接建一张独立的字典表,用数字字段存编码,查询时再 JOIN 回去,这样逻辑清晰,迁移到 SQL Server 也方便。
2.2 SQL 查询:Access 的 SQL 方言和标准 SQL 的差异
Access 支持 SQL,但它的方言和 SQL Server、MySQL 有区别。试题里常考的查询包括:SELECT 基础查询、WHERE 条件过滤、ORDER BY 排序、GROUP BY 分组统计、JOIN 多表关联。Access 的 SQL 视图在「创建」选项卡里,点「查询设计」,然后切换到 SQL 视图就能写。
-- 查询所有成绩大于等于 80 分的学生姓名和课程名 SELECT 学生.姓名, 课程.课程名, 选课.成绩 FROM (学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号) INNER JOIN 课程 ON 选课.课程号 = 课程.课程号 WHERE 选课.成绩 >= 80 ORDER BY 选课.成绩 DESC;这段 SQL 的逻辑是:先通过学号把学生表和选课表关联,再通过课程号把课程表关联进来,最后过滤成绩并降序排列。参数说明:INNER JOIN 保证只返回匹配上的记录;WHERE 里的 80 可以换成任意阈值;ORDER BY DESC 表示从高到低。注意 Access 要求 JOIN 多层嵌套时加括号,这是它和标准 SQL 不一样的地方,不加括号会报语法错误。
2.3 窗体:让不懂 SQL 的人也能操作数据
窗体是 Access 的门面。试题里常考窗体控件的绑定、按钮的事件过程、导航窗体的设计。做窗体的核心思路是:把表或查询作为记录源,然后把字段拖到窗体上,Access 会自动生成绑定控件。按钮用「命令按钮向导」可以快速生成增删改查操作,但向导生成的 VBA 代码比较冗余,我一般会自己写。
' 在窗体上放一个按钮,点击后执行查询并显示结果 Private Sub btnQuery_Click() Dim strSQL As String strSQL = "SELECT * FROM 学生 WHERE 姓名 LIKE '*" & Me.txtName & "*'" Me.RecordSource = strSQL Me.Requery End Sub这段 VBA 的逻辑是:从文本框 txtName 里取用户输入的关键词,拼成 LIKE 查询,然后把窗体的记录源替换成这个 SQL,最后刷新显示。参数说明:Me 指当前窗体;txtName 是文本框的 Name 属性;星号是 Access 的通配符,不是百分号。注意这里直接拼接字符串有注入风险,虽然 Access 单机场景风险低,但养成参数化习惯没坏处。
3. 从试题到落地:把 Access 查询和窗体做成一个能用的管理工具
3.1 用查询做数据汇总:GROUP BY 和聚合函数的实战
试题里有一类题是统计每个学生的总分、平均分,或者统计每门课程的选课人数。这类需求用 GROUP BY 加聚合函数就能解决。Access 支持 SUM、AVG、COUNT、MAX、MIN 这些聚合函数。
-- 统计每个学生的总分和平均分 SELECT 学生.姓名, SUM(选课.成绩) AS 总分, AVG(选课.成绩) AS 平均分 FROM 学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号 GROUP BY 学生.姓名 HAVING SUM(选课.成绩) > 200;逻辑说明:GROUP BY 按姓名分组,SUM 和 AVG 对每组内的成绩做聚合,HAVING 是对分组后的结果做过滤,和 WHERE 的区别是 WHERE 在分组前过滤,HAVING 在分组后过滤。参数说明:AS 后面是别名,方便在窗体或报表里引用;HAVING 条件里的 200 可以按业务调整。常见误用是把聚合条件写在 WHERE 里,Access 会直接报错。
3.2 窗体联动:主窗体和子窗体怎么同步
主窗体显示学生信息,子窗体显示该学生的选课记录,这是 Access 里最经典的联动场景。做法是:子窗体的记录源用「选课」表,然后在子窗体控件的「链接主字段」和「链接子字段」里都填「学号」。这样主窗体切换学生时,子窗体会自动过滤。
' 主窗体加载时,手动设置子窗体的记录源 Private Sub Form_Load() Me.frmSub.Form.RecordSource = "SELECT * FROM 选课 WHERE 学号 = '" & Me.学号 & "'" Me.frmSub.Form.Requery End Sub逻辑说明:frmSub 是子窗体控件的 Name,Form 属性拿到子窗体的对象,RecordSource 设置数据来源,Requery 刷新。参数说明:学号字段如果是文本类型,拼接时要加单引号;如果是数字类型,不加引号。注意子窗体控件名和子窗体本身的名称可能不一样,写代码时要看属性表里的「名称」而不是「源对象」。
3.3 报表输出:把查询结果打印成规范文档
试题里报表部分常考分组、排序、汇总。Access 报表可以基于表或查询创建,支持分组显示、计算控件、页码和日期。做报表的关键是:先在查询里把数据准备好,再在报表里做展示。计算控件用 =SUM([成绩]) 这种表达式,放在组页脚或报表页脚里。
| 报表区域 | 用途 | 常见控件 |
|---|---|---|
| 报表页眉 | 显示标题、日期 | 标签、文本框 |
| 页面页眉 | 显示列标题 | 标签 |
| 组页眉 | 显示分组字段 | 文本框、标签 |
| 主体 | 显示每条记录 | 绑定文本框 |
| 组页脚 | 显示分组汇总 | 计算文本框 |
| 报表页脚 | 显示总计 | 计算文本框 |
这个表是报表设计的骨架,每个区域放什么控件决定了最终打印效果。常见坑是计算控件放错区域,比如把总计放在主体里,结果每条记录都显示一遍总计。
4. 避坑与排查:Access 实操中最容易翻车的 5 个地方
4.1 现象:查询报「参数不足,期待是 1」
原因:SQL 里引用了窗体上不存在的控件名,或者字段名拼写错误。Access 会把无法识别的标识符当成参数。解决:检查 SQL 里的每个字段名和控件名,确保和表结构、窗体属性一致。可以在 SQL 视图里先单独运行查询,排除窗体因素。
4.2 现象:窗体打开后一片空白,没有数据
原因:记录源设置成了空 SQL,或者链接主/子字段填错。解决:打开窗体的属性表,检查「记录源」是否指向正确的表或查询;如果是子窗体,检查「链接主字段」和「链接子字段」是否匹配。
4.3 现象:VBA 代码运行时报「编译错误:变量未定义」
原因:没有加 Option Explicit,变量名拼写不一致。解决:在模块顶部加 Option Explicit,强制声明变量。写代码时用 Dim 声明每个变量,避免隐式类型转换带来的玄学问题。
4.4 现象:Access 文件越来越大,打开越来越慢
原因:频繁增删改查导致数据库膨胀,没有定期压缩修复。解决:文件菜单里找「压缩和修复数据库」,每次关闭前执行一次。如果数据量大,考虑拆分成前端窗体和后端数据两个文件,前端放窗体、查询、报表,后端只放表。
4.5 现象:多用户同时打开时提示「文件已被占用」
原因:Access 默认以独占方式打开,或者共享文件夹权限不对。解决:在「选项」里把默认打开模式改成「共享」,确保所有用户对文件夹有读写权限。注意 Access 不适合高并发场景,超过 10 个人同时写就会明显卡顿,这时候该考虑迁移到 SQL Server 了。
5. 进阶技巧:用 Access 做参数化查询和窗体间数据传递
参数化查询是避免 SQL 注入和提升可维护性的关键。Access 的查询设计里可以定义参数,写法是在条件里填 [请输入姓名],运行时会弹窗让用户输入。但这种方式不够灵活,我一般用 VBA 动态构建 SQL,配合窗体控件做参数输入。
' 在窗体上放一个按钮,点击后打开另一个窗体并传递当前学生学号 Private Sub btnOpenDetail_Click() Dim strWhere As String strWhere = "学号 = '" & Me.学号 & "'" DoCmd.OpenForm "frmDetail", , , strWhere End Sub逻辑说明:DoCmd.OpenForm 的第四个参数是 WhereCondition,用来过滤目标窗体的记录。参数说明:frmDetail 是目标窗体名称;strWhere 是过滤条件字符串。注意如果学号是文本类型,条件里要加单引号;如果是数字类型,不加。这个技巧在试题里可能不考,但实际做管理工具时非常实用。
另一个进阶用法是用 TempVars 在窗体之间传递全局变量。TempVars 是 Access 2007 之后引入的,可以存字符串、数字、日期,生命周期是整个 Access 会话。
' 在窗体 A 里存一个值 TempVars.Add "CurrentUser", "张三" ' 在窗体 B 里读取 MsgBox TempVars!CurrentUser逻辑说明:TempVars.Add 添加一个临时变量,TempVars!变量名 读取。参数说明:变量名区分大小写,建议用有意义的英文名。注意 TempVars 在 Access 关闭后清空,不适合持久化数据。
验证方法:做完一个窗体后,按 F5 切换到窗体视图,逐条测试增删改查按钮,看数据是否同步更新。再用「数据库文档管理器」导出所有对象的结构,检查有没有遗漏的字段或关系。我一般会在交付前把整个 Access 文件压缩修复一次,然后在前端窗体里加一个「关于」按钮,显示版本号和最后修改日期,方便后续排查问题。
这些年做 Access 项目,最大的教训是:不要等到文件卡顿了才想起拆分前后端,不要等到多用户冲突了才想起迁移数据库。Access 是个好工具,但它有明确的边界,在边界内用足它的窗体、查询、报表能力,在边界外果断换 SQL Server 或 MySQL,这才是省心的做法。希望帮到你。
本文还有配套的精品资源,点击获取