《实验2查询创建与操作》实验指导书Word下载.docx
《《实验2查询创建与操作》实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《实验2查询创建与操作》实验指导书Word下载.docx(29页珍藏版)》请在冰点文库上搜索。
![《实验2查询创建与操作》实验指导书Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/fce16567-283c-455f-be8a-b88e1229790c/fce16567-283c-455f-be8a-b88e1229790c1.gif)
如图3所示,系统默认为创建“选择查询”,如果要创建的是其他类型的查询,请点击打开【查询】菜单(图4),从该菜单中选择适当的查询类型。
视乎你所选择的是哪种查询,系统会调整图3下部区域的显示样式,甚至显示新的对话框要求你作出新的选择。
在不同类型查询的具体设计中再详细解释这些操作步骤
图4查询菜单
4.创建查询的方法二:
在图1主视窗中右边的列表区域直接双击【使用向导创建查询】,系统显示图5所示的“简单查询向导”视窗
图5简单查询向导
2在图5中左上角的“表/查询”下拉列表框中选定你要用来创建查询的某个对象(可以是表,也可以是原来创建好的某个查询),右下角的“可用字段”列表框会显示该对象中可用于创建查询的字段;
通过中间的【>
】和【>
>
】两个按钮,可将“可用字段”列表框中当前或全部字段选入右边的“选定的字段”列表框;
反之,通过【<
】和【<
<
】两个按钮,可将右边“选定的字段”列表框中的当前字段或全部字段去掉(不再选定)列表框通过然后点击【添加】按钮
3如果要创建的查询涉及多个表或查询对象,重复上一步中的字段选择操作,结束后点击【下一步】或者【完成】按钮
4图5中如直接点击【完成】按钮,系统将创建完成最简单的选择查询并显示“查询结果”浏览视窗。
关闭该视窗后,应能看到已用默认的名称保存该选择查询
5图5中如点击【下一步】按钮,系统将显示一系列的向导视窗,你可以在这些视窗上进一步定义如下内容:
✓是明细查询还是汇总查询
✓如果是汇总查询,应按哪些字段进行汇总及如何汇总
✓输入查询标题,即用什么名称保存该查询对象
✓选择是立即查看查询结果,还是通过图3所示的“查询设计视图”对该查询进行进一步的修改
5.创建查询的方法三:
在图1主视窗中上面的工具栏区域单击【新建】按钮,系统显示图6所示的“新建查询”视窗
图6新建查询
2在图6中右边的列表框中选择适当的项目,然后点击【确定】按钮,系统将分别作出如下处理:
✓设计视图:
接下来的步骤与“创建查询的方法一”中完全相同
✓简单查询向导:
接下来的步骤与“创建查询的方法二”中完全相同
✓交叉表查询向导:
系统显示一系列向导视窗,帮助你完成交叉表查询的设计
✓查找重复项查询向导:
系统显示一系列向导视窗,帮助你完成查找重复项查询的设计
✓查找不匹配项查询向导:
系统显示一系列向导视窗,帮助你完成查找不匹配项查询的设计
3图6中无论选择哪种向导,最终都提供查询结果浏览或进入设计视图的选项
任务一:
选择查询
实验2.1
1.查询名称:
01查询各班级学生
2.请使用“方法一”中描述的步骤开始查询设计
3.在图2中添加“班级”、“学生”两个数据表对象。
值得注意的是:
如果你的数据库中的数据表设计错误,或者你尚未设计好数据表之间的关系,将不能完成本查询的设计。
因此,请务必保证你已按实验二中的步骤设计好数据库并确保已输入或导入适当的数据。
在后面的系列查询设计中,这都是最基本的前提
4.
按下图所示完成查询设计:
5.
依次点击【文件】→【保存】菜单命令或单击工具栏内的【保存】按钮,系统显示如下对话框:
6.如上图所示,在对话框中输入要保存的查询名称,然后单击【确定】按钮
7.依次单击【查询】→【运行】菜单命令,系统将显示查询结果,如果必要,请对查询结果的显示格式(字段宽度、字体、颜色等)进行必要的调整
8.依次单击【视图】→【设计视图】菜单命令,可回到查询设计视图,对刚才创建的查询作进一步修改
9.重复步骤6、7直至查询设计满足要求
10.保存该查询,关闭查询视图,回到主视窗应能看到刚设计好的“01查询各班级学生”查询。
如果必要,你可以通过右键菜单运行该查询或重新修改该查询
实验2.2
02查询李姓男生或张姓女生
3.
设计步骤与实验2.1类似,具体要求见如下截图:
实验2.3
03查询姓名中含有“丽”或“静”字的学生
3.设计步骤与实验2.1类似,具体要求如下:
1查询字段:
班级(班级号,班级名称),学生(学号,姓名,性别,身份证号)
2排序字段:
班级号(升序),姓名(升序)
3查询条件:
学生姓名中含有“丽”字或“静”字。
注意:
必须使用Like关键字
实验2.4
04查询姓氏为陈、叶或黄的学生
班级(班级号,班级名称),学生(学号,姓名,性别,家庭住址)
姓名(升序),性别(降序)
姓陈、姓叶或姓黄的学生。
实验2.5
05查询姓名中第2个字是“嘉”或“美”的学生
性别(降序),姓名(升序)
学生姓名中第2个字是“嘉”字或“美”字。
实验2.6
06查询非莞籍学生
专业(专业名称),班级(班级名称),学生(学号,姓名,性别,家庭住址,身份证号)
家庭住址(升序),性别(降序)
家庭住址不在东莞市。
必须使用<
运算符
实验2.7
07查询东莞、深圳、珠海籍少数民族男生
班级(班级名称),学生(学号,姓名,性别,家庭住址,名族)
家庭住址(升序),民族(降序)
家在东莞、深圳、珠海的少数民族男生。
必须使用In关键字来创建条件
实验2.8
08查询1991年出生的非汉族女生
专业(专业名称),班级(班级名称),学生(学号,姓名,性别,家庭住址,出生日期,民族)
出生日期(降序)
1991年出生的不是汉族的女生。
必须使用BETWEENAND来创建条件
实验2.9
09查询3月份出生的学生
班级(班级名称),学生(学号,姓名,性别,出生日期)
3月份出生的全部学生。
必须使用Month函数来创建条件
任务二:
创建交叉表查询
实验2.10
10查询各地男、女生人数
2.查询描述:
本查询系相对于“学生”表来创建“家庭住址“与“性别”的交叉表。
通过该交叉表,可以清晰地知道,来自每一个地区(东莞、梅州、汕头……)的男生人数、女生人数及总人数。
作为初学者,比起通过设计视图来创建交叉表查询,通过向导来创建交叉表查询相对来说要简单得多也更好理解
现在,请按照“方法三”中描述的步骤开始查询设计,然后在图6中选择“交叉表查询向导”,系统显示如下向导对话框,请在这里选择该查询的数据源。
系统默认为基于数据表来创建查询。
如果必要,也可以从中选择基于某个已有的查询来创建交叉表查询
4.在以上对话框中选择“学生”表,单击【下一步】按钮,系统显示如下向导对话框,以允许选择将作为行标题的是哪个(些)字段(最多可选3个字段):
由于本查询希望统计各地区的男女生人数,因此,行标题以“家庭住址”为宜(我们设计的“学生”表中,“家庭住址”实际上保存的是学生所属的地市区域名称),因此,请按上图选定“家庭住址”作为行标题,然后单击【下一步】按钮,系统将显示另一个向导对话框,以便选择将作为列标题的字段:
6.毫无疑问,你应该在以上对话框中选择“性别”作为列标题,然后还是单击【下一步】按钮以便系统显示这样一个向导对话框:
7.
以上对话框用于定义你希望在行、列交叉点显示的内容及其显示(统计)的依据。
该对话框中,请按如下描述作出选择:
1首先需要选定显示(统计)所依据的字段。
这个实验中,由于每个“学号”唯一地代表一个学生,因此以“学号”来统计人数才不会出现问题。
因为,按“姓名”来统计的话,重复的姓名(例如有两个学生都叫“王二麻子”,将作为一个而不是两个学生来统计。
选择其他字段也可能存在同样的统计问题。
因此,请选定“学号”字段作为统计依据
2“字段”栏右边的“函数”栏也需要你仔细确定。
“函数”栏用于定义你希望在行、列交叉点显示的内容。
上图中提供的各个选项分别表示如下意义:
✓第一项:
交叉点将显示所在区域男生、女生中最前面一名学生的学号
✓最后一项:
交叉点将显示所在区域男生、女生中最后一名学生的学号
✓最大值:
交叉点将显示所在区域男生、女生中学号值最大的那个学号
✓最小值:
交叉点将显示所在区域男生、女生中学号值最小的那个学号
✓计数:
交叉点将显示所在区域男生、女生的人数
聪明如你,当然知道该对话框中的“函数”应选择“计数”
3对话框左边的中部位置,有一个选项“请确定是否为每一行作小计”,该选项的默认值为已经勾选。
一般情况下,你最好是保持该默认选择
以上对话框中,每作出一个选择,其下部区域都会显示出最终交叉表的一个模拟效果,告诉你现在选定的行标题、列标题字段都是怎样的,然后交叉点又是按怎样的公式显示(统计)的
按上图作出选择后,还得请你最后一次单击【下一步】按钮,系统亦不厌其烦地显示出最后一个向导对话框:
8.
现在要做的,首先是按上图所示指定查询的名称(第1步中规定的名称),Access将以这个名称来保存该查询对象。
此外,你还得在两个单选按钮之间作出自己的选择:
选择“查看查询”可以进入查询的数据表视图以浏览该查询的运行结果,选择“修改设计”选项可以进入查询的设计视图对查询作细微调整。
无论进入查询的数据表视图还是设计视图,你都可以再在两个视图之间来回切换。
无论你最终作出何种选择,都需要单击【完成】按钮以结束向导
9.
如上一对话框中选择的是“修改设计“,系统将显示该查询的设计视图:
10.以上对话框中,你需要作如下一些细微的调整:
1字段:
“总计学号:
学号”请改为“总人数:
学号”,其中“总人数”将显示在列标题上,冒号后的“学号”表示将按“学号”字段统计总人数(男生人数+女生人数)
2排序:
应指定为按“家庭住址”作升序或降序排序
11.
显然,如果你对照着以上向导过程,对以上设计视图中的各项内容都有了正确的认识,你可以直接进入设计视图来开始交叉表查询的设计。
在设计视图中完成最后的设计后,你可以依次点击【视图】→【数据表视图】菜单命令或【查询】→【运行】菜单命令,进入数据表视图来查看该交叉表查询的运行结果(查询到的数据)并通过数据表视图调整列宽、字体及其他显示格式。
这个交叉表查询的最终运行结果应类似(可以设置不同的字体、颜色):
实验2.11
11查询各地不同年份出生的学生人数
在图4中所示的菜单中选择“交叉表查询”,然后按如下截图完成查询设计
4.直接在设计视图中设计以上查询时,务必注意理解行标题、列标题、计算公式等各部分是如何处理的,哪些内容可以随意修改、哪些内容必须完全照抄无误!
任务三:
操作表查询
实验2.12
12生成非莞籍学生表
3.在图4中所示的菜单中选择“生成表查询”
4.具体要求为,生成的新表:
1保存到:
当前数据库
2名称为:
非莞籍学生
3依次包含字段:
学生(家庭住址,学号,姓名,性别,民族),专业(专业名称),班级(班级名称)
4排序字段:
家庭住址(降序),性别(降序),姓名(升序)
5查询条件:
家庭住址不是东莞的全部学生
运行该查询以生成“非莞籍学生”数据表,最终该表的数据表视图类似:
实验2.13
13更新非莞籍学生表
3.在图4中所示的菜单中选择“更新查询”
4.本实验将对实验2.12中生成的“非莞籍学生”表进行“批量”更新。
具体要求为,将该表中计科1班全部男生的“民族”都更改为“月光族”!
特别声明:
出此选题,纯属好玩,并无歧意!
运行该查询,查看“非莞籍学生”数据表中“民族”字段的值是否按要求自动更新。
,最终该表的数据表视图类似:
实验2.14
14追加记录到非莞籍学生表
本实验将对实验2.12中生成的“非莞籍学生”表进行“批量”追加,即,将“学生”表中部分记录追加(自动插入)到“非莞籍学生”表。
具体要求为,将“学生”表中的莞籍党员学生全部追加到“非莞籍学生”表。
在设计视图中按下图完成基本设计:
在图4中所示的菜单中选择“追加查询”,系统显示对话框:
5.在以上对话框中选择数据记录要追加到的表为“非莞籍学生”,然后单击【确定】按钮
6.按要求的名称保存该查询,关闭设计视图
运行该查询,查看“非莞籍学生”数据表中是否已按要求自动追加若干学生记录:
实验2.15
15删除非莞籍学生表中记录
3.在图4中所示的菜单中选择“删除查询”
本实验将对实验2.12中生成的“非莞籍学生”表进行“批量”删除。
即,将“非莞籍学生”表中的莞籍学生记录全部删除掉。
在设计视图中按下图完成查询的设计
8.按要求的名称保存该查询,关闭设计视图
9.运行该查询,查看“非莞籍学生”数据表中是否已按要求自动删除学生记录
任务四:
统计计算查询
该类查询,是指在查询中加入计算公式或函数,以对数据表中的数据进行统计计算
实验2.16
16查询教师应发奖金
2.检查“教师”表中是否已有“底薪”、“津贴”两个字段。
如果尚无这两个字段,则先增加这两个字段(都是整数类型,无小数)
3.使用“方法一”中描述的步骤开始查询设计
本查询以“教师”表中的“底薪”、“津贴”两个字段为基础,按这两个字段之值的百分比计算应发奖金。
该查询还展示了字符串、日期函数的用法。
请按下图设计该查询:
该查询中设计了四个计算字段,一个计算字段的名称为“奖金”,该字段的值通过公式“[底薪]*1.5+[补贴]*1.2”计算获得,该公式表示奖金额为底薪的150%再加补贴的120%。
另外的计算字段包括:
通过Left、Mid函数从姓名中获得教师的姓氏及名字;
通过Year函数计算教师入职的年份。
必须注意到:
计算公式中的字段名必须放在[]内。
5.按要求的名称保存查询
6.运行查询
实验2.17
17查询学生各课程最高分、最低分及平均分
3.选定“学生”、“课程”、“成绩”三个表
4.依次单击【视图】→【总计】或直接点击工具栏中的∑按钮
按照以下截图完成查询设计:
6.按要求的名称保存查询
运行查询,查询结果应类似:
实验2.18
18查询各班级党员、团员及群众人数
参照实验2.17的步骤及以下查询运行结果截图完成查询设计:
4.保存并运行查询
任务五:
SQL查询
该类查询,是指直接通过编写SQL(结构化语言)语句来创建查询
实验2.19
19通过SQL语句查询教师信息
3.系统显示“图2查询设计视图(选择数据表)”所示的对话框时,不选择任何表,直接关闭该对话框
依次单击【视图】→【SQL视图】,系统显示如下对话框:
5.在以上对话框中编写下图所示的SQLSELECT语句(选择语句):
该语句的功能为:
1SELECT子句(要查询哪些字段):
系部(系部名称),教师(教师编号,姓名,出生日期)。
两个表都存在的同名字段(例如“系部编号“)前必须通过“表名.字段名”的格式指明是查询哪个表中的字段,两个表中不同名的字段可仅写出字段名
2FROM子句(从哪个表或哪些表查询,如果从多个表中查询,这两个表通过哪个、哪些字段连接):
“系部”、“教师”两表,通过这两个表都存在的“系部编号”字段来连接
3WHERE子句(要满足的查询条件):
“性别”字段的值为“男”
4ORDERBY子句(如何排序):
按“系部名称”降序(DESC)、“教师编号”升序(ASC)排序。
不指定DESC、ASC时,默认按升序排序
6.
SELECT语句编写完成后,切换到“数据表视图”(运行查询),你将看到查询结果为:
7.按要求的名称保存该查询
实验2.20
1.
查询名称:
20通过SQL语句统计学生分数
2.参照实验2.19的操作步骤及如下截图创建SQL查询:
该SQLSELECT语句用于求陈姓、叶姓、黄姓学生各门课程的最高分、最低分及平均分。
这个实验值得注意的地方有:
1SELECT子句中,由于仅“学生”表中有“姓名”字段(“成绩”表无此字段),因此“姓名”前不需要写“学生.”
2SELECT语句中还用到Max、Min和Avg三个函数,以分别计算当前学生各课程成绩中的最高分、最低分和平均分
3每个学生所学课程的成绩都登记在“成绩”表中,因此FROM子句系通过“学号”字段连接“学生”、“成绩”两表
4由于是按“学生”的“学号”、“姓名”分组统计每个学生的最高分、最低分、平均分,因此,该SELECT语句比实验2.19多了一个GROUPBY子句。
你的英语还勉强的话,应该知道GROUPBY就是“按什么分组”的意思。
这里,显然是按“学生”的“学号”、“姓名”分组
5务必要注意的是:
编写类似的分组统计语句时,进行分组的字段(学号,姓名)必须以相同的顺序同时出现在GROUPBY和SELECT这两个子句中。
仔细看看这两个子句的写法:
SELECT学生.学号,姓名
GROUPBY学生.学号,姓名
运行该查询,查询结果类似:
4.以要求的名称保存并关闭查询
任务六:
参数查询
该类查询,是指在各种查询中加入所谓的参数,查询运行时将提示用户输入参数的值,然后Access将参数的值嵌入查询语句中并运行查询、返回查询结果
实验2.21
21通过参数查询某个学生各课程的成绩
3.在图2所示的对话框中选择“学生”、“课程”、“成绩”三个数据表
按如下查询设计视图完成查询的设计:
5.以上截图中,与一般查询的设计没什么区别,唯一需要注意的是,其中,给“姓名”指定的“条件”,不是像以往那样的一个“死”条件,而是通过[]指定了一个提示信息“[请输入学生姓名:
]”,那么这个提示信息起什么作用哩?
见证奇迹的时刻马上到来!
运行该查询,系统不是直接显示查询结果,而是显示如下对话框:
显然,你应该在这个对话框中输入要查询的学生的姓名。
例如,你可以输入“苏晓丹”三个字,系统这时会显示下图所示的查询结果:
8.以要求的名称保存并关闭查询
实验2.22
22通过参数查询某些学生各课程的成绩
2.实验2.21中,除非是有同名的同学,否则只能查询某一个学生的成绩。
如果需要通过Like来查询多个学生的成绩该怎么做?
比如说,用户输入一个“陈”字,就能查询全部陈姓同学的成绩。
现在,就请先按照实验2.21中的步骤设计一个完全相同的查询
3.与实验2.21不同的是,“姓名”字段相关的条件应该由
[请输入学生姓名:
]
改为
Like"
*"
+[请输入学生姓名:
]+"
聪明如你,相信一定能明白这个Like条件意味着什么!
4.好了,运行该查询,在系统提示对话框中输入一个“嘉”字,Access将为你查询出姓名中包含一个“嘉”字的学生的成绩
5.以要求的名称保存并关闭查询
实验2.23
23通过多个参数查询学生信息
上面的两个实验都只允许用户输入一个参数,这个实验将创建一个查询,查询运行时,要求用户先输入学生的出生年份(例如:
1989),然后再输入家庭住址(例如:
东莞),然后Access能查询出1989年出生的莞籍学生的下列信息:
学号、姓名、性别、出生日期、年龄、家庭住址。
查询结果类似:
上图中,“年龄”是通过DateDiff、Date两个函数及“出生日期”的值计算获得。
查询条件中,“出生年份”通过Year函数和“出生日期”的值计算获得
3.运行、保存、关闭查询,实验到此结束!
四、实验报告
1.各查询的名称及设计、运行视图截图:
答:
2.实验中遇到的主要问题及应对方法(不少于200字