Access数据库程序设计(第二版)课件ch3-使用查询搜索信息_第1页
Access数据库程序设计(第二版)课件ch3-使用查询搜索信息_第2页
Access数据库程序设计(第二版)课件ch3-使用查询搜索信息_第3页
Access数据库程序设计(第二版)课件ch3-使用查询搜索信息_第4页
Access数据库程序设计(第二版)课件ch3-使用查询搜索信息_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章使用查询搜索信息查询的基本功能和主要类型Access中的运算符、函数与表达式,以及通过表达式构建查询条件;通过向导创建简单选择查询通过设计视图创建选择查询、参数查询、交叉表查询及操作查询;结构化查询语言SQL简介SQL的语法结构与使用SQL创建与修改表,创建SQL查询。本讲学习目标了解查询的功能和分类根据给定的条件建立查询准则通过向导及设计视图创建并修改查询通过查询对数据表进行操作掌握SQL的概念及使用方法,建立SQL查询3.1什么是查询查询的概念查询设计视图查询的功能查询的类型3.1.1了解查询要求数据库按给定的要求(条件、范围以及方式等)从指定的数据源中查找,提取指定的字段,返回一个新的数据集合查询的结果可以看成是一个简化的数据表查询的结果逻辑地保存在数据库中,并随数据表中数据的变化而变化例3-1网络班级的党员信息从形式上看,大多数Access查询的结果与数据表几乎完全相同,如图3-1所示的是在学生基本信息表中查询网络班的学生党员信息。但是,查询结果并不是数据表中原始记录的拷贝,而是基于特定需求的数据重组;也不像数据表一样真正地保存在物理存储设备中,而只是逻辑地保存在数据库中,并随数据表中数据的变化而动态变化。数学系讲师查询示意图查询设计视图查询数据源查询属性查询的功能⑴选择字段和记录⑵修改记录⑶统计与计算⑷建立新表⑸为其它数据库对象提供数据源3.1.2查询的类型1.选择查询2.交叉表查询3.参数查询4.操作查询5.SQL查询3.2查询的准则在设计查询的过程中所定义的查询条件是运算符、常量、函数以及字段名和属性等的组合类似于程序设计语言中的表达式通常使用的运算符有自述运算符、关系运算符、逻辑运算符和特殊运算符3.2.1运算符运算符是组成查询准则的基本元素算术运算符关系运算符逻辑运算符特殊运算符连接运算符算术运算符运算符加法(+)、减法(-)、乘法(*)、除法(/)、整除、指数(^)和取模(Mod)等取模(Mod)又称为取余运算关系运算符等于(=)、不等于(<>)、小于(<)、小于等于(<=)、大于(>)以及大于等于(>=)True表示逻辑真值,False表示逻辑假值[单价]*[销售量]>=10000[出生日期]<#1980-9-1#例3-2

建立表示以下条件的关系表达式。⑴设单价与销售量是某一个数据表中的字段,判断总销售额是否达到1万元;⑵学生基本信息表中包含出生日期字段,出生日期在1981年1月1日以后且在1983年12月31日以前的条件;⑶教师表中,职称为教授或者副教授的条件。解:在⑴中,总销售额=单价*销售量,在Access中,字段名应该用“[单价]”、“[销售量]”的形式表示。因此,该关系表达式为:[单价]*[销售量]>=10000在⑵中,题目要求表示的出生日期(csrq)范围是两部分,分别为“1981年1月1日以后”与“1983年12月31日以前”,这两个条件需要同时成立,是“并且”,即“and”的关系,因此,该关系表达式为:([csrq]>=#1981-1-1#)And([出生日期]<=#1983-12-31#)在⑶中,职称(zc)为教授或副教授,该关系表达式为:zcLike“*教授”,也可以为(zc="教授")Or(zc="副教授")表达式书写原则日期型数据必须用"#"括起来文本型数据必须用半角的引号括起来字段名必须写用"[]"括起来逻辑运算符And(与)、Or(或)和Not(取反)逻辑运算符格式说明And表达式1and表达式2当and连接的表达式都为真时,整个表达式为真,否则为假Or表达式1or表达式2当or连接的表达式有一个为真时,整个表达式为真,否则为假Notnot表达式当not连接的表达式为真时,整个表达式为假,反之为真例3-3

基于学生基本信息表,建立表示以下条件的关系表达式。⑴政治面貌为党员或者团员;⑵年龄在18到20年之间。解:⑴在学生基本信息表中,对应政治面貌的字段是zzmm,因此,关系表达式应该表示为:(zzmm="党员")or(zzmm="团员")⑵在学生基本信息表中,没有直接的年龄字段,但是有出生日期字段,可以根据该字段的值计算年龄。计算公式为“Year(date())-Year([csrq])”,因此,对应本题条件的关系表达式可以表示为:

(Year(Date())-Year([csrq])>=18)And(Year(Date())-Year([csrq])<=20)特殊运算符特殊表达式说明In用于指定一个字段值的列表,列表中的任意一个值都可与查询的字段相匹配Between用于指定一个字段值的范围。指定的范围之间用AND连接Like用于指定查找文本字段的字符模式。用“?”表示该位置可匹配任何一个字符;用“*”表示该位置可匹配零或多个字符;用“#”表示该位置可匹配一个数字;用方括号描述一个范围,匹配方括号内的任意一个字符Isnull查找字段值为null(空值)的记录Isnotnull查找字段值为有值(非空值)的记录例3-4表示下面的各个条件:①某一个数量在75~95之间:Between75And95;②上海广东北京三地的学生表示为:In("上海","广东","北京");③以计算机开头的课程名可以表示为:Like("计算机*"),④列出以字母A~F为首且后面跟3个数字的编号,则可表示为:Like"[A-F]###"”。连接运算符有“+”和“&”两种字符串表达式1+字符串表达式2表达式1&表达式2连接的是数字,则在数字的前后都加一个空格如果连接的是字符串,作用与“+”相同3.2.2函数函数就是一个预先编制好的程序块聚合函数数值函数字符串函数日期/时间函数通过VBA建立自己的用户自定义函数聚合函数⑴Avg函数——求平均值格式:Avg(字符串表达式)功能:计算查询中指定的字段中所包含的一组值的平均值⑵Sum函数——求和格式:Sum(字符串表达式)功能:返回查询中指定的字段中所包含的一组值的总和聚合函数⑶Count函数——计数格式:Count(字符串表达式)功能:计算查询所返回的记录数⑷Max函数——最大值格式:Max(字符串表达式)功能:计算查询中指定的字段中所包含的一组值的最大值。⑸Min函数——最小值格式:Min(字符串表达式)功能:计算查询中指定的字段中所包含的一组值的最小值数值函数⑴Abs函数——求绝对值⑵Int和Fix函数——取整函数⑶Round函数——四舍五入函数⑷Sgn函数——符号函数字符串处理函数⑴Len函数——取字符串的长度⑵Right函数——取右子串⑶Left函数——取左子串⑷Mid函数——取中间子串日期和时间函数⑴Year函数

返回给定日期中的年份值

⑵Hour函数

返回一天中的某个小时,取值在0~23之间

⑶Date函数

返回当前的系统日期值⑷Time函数

返回当前的系统时间值日期和时间函数⑸DateAdd函数格式:DateAdd(字符串,数值,日期表达式)功能:返回给定日期加上间隔后的新日期字符串"yyyy"、"q"、"m"和"d"表示间隔为年数、季度数、月数、天数用数值表示间隔值日期表达式为给定的日期工作不满一年:DateAdd("yyyy",1,[工作时间])>=Date()

两个月以后:DateAdd("m",2,Date())3.2.3查询条件的建立运算符的优先级数学→连接运算符→关系→布尔

(*/)→(\)→(mod)→(+-)

关系运算符的级别相同非→与→或表达式的组成例3-5用表达式表示下面的查询条件。⑴姓张,并且职称为教授或副教授的女教师本题包含三个条件,其一是姓张,其二是性别为女,其三是职称为教授或副教授,三个条件要同时成立,是并的关系。该条件可表示为:

Left([xm],1)="张"And[xb]="女"And([zc]="教授"Or[zc]="副教授")⑵工作时间在10年以上的讲师本题包含两个条件,一个是职称为讲师,另一个是工作时间在10年以上,表示为:

[zc]="讲师"AndDateAdd("yyyy",10,[gzsj])<Date()⑶学生学号尾数不在0~4之间本题中0~4是一个范围,可用[]描述,而职工编号中尾数以外的部分可用通配符*表示。该条件可表示为:

[xh]Like"*[!0-4]"或[xh]Like"*[5-9]"⑷学生基本信息表中姓张或姓李的同学

[xm]Like"[张李]*"或Left([xm],1)In("张","李")⑸选修数据库原理课程的学生姓名

本题中学生姓名字段[xm]隶属于学生基本信息表,而数据库原理为课程名字段[kcm]的数据,该字段隶属于课程表,这两个字段来自两个表而且这两个表之间没有共有字段。通过分析数据库中的表发现成绩表中[xh]和[kch]可以分别与学生基本信息表和课程表连接,成绩表可以成为学生基本信息表和课程表连接的纽带。表示不同表的字段时,表名与字段名之间用“.”分隔。故该条件可表示为:课程表.[kcm]="数据库原理"And学生基本信息.[xh]=成绩表.[xh]And课程表.[kch]=成绩表.[kch]创建查询条件例3-6通过表达式生成器创建例3-5中⑴的条件。分析:条件一般在建立查询时设置,本例中先不考虑如何创建查询,仅仅讨论使用表达式生成器创建条件的方法。基本操作步骤如下:①在查询的设计视图中,选择教师表中的xm字段。②在xm下面的条件栏内右击,在随后显示的快捷菜单中选择“生成器…”命令,屏幕显示如图3-2所示的表达式生成器对话框。图3-2表达式生成器③单击下方左侧窗格内的“表”,将展开所有可用的表的名称,选择教师表,在中间窗格内显示与教师表对应的字段名,双击选中“xm”字段,如图3-3所示。④将表达式生成器中的表达式替换为:Left([教师表]![xm],1)="张"。⑤紧接着上面的表达式单击“And”按钮,选择xb字段,紧接其后输入:="女"。⑥类似上面的方法,紧接上面的表达式继续输入:And([zc]="教授"Or[zc]="副教授"),单击“确定”按钮。图3-3选择字段名称后的表达式生成器3.3使用向导创建查询查询的数据源可以是一个表或查询也可以是多个表或查询只能创建简单的不带条件的查询创建简单选择查询、查找重复项查询和查找不匹配项查询3.3.1创建简单的选择查询操作步骤⑴选择简单查询向导⑵添加employee表的字段⑶添加department、course和appoint表的字段⑷保存并观察查询结果例3-7

利用向导创建选择查询,要求输出所有学生姓名、课程名、成绩等信息,所建查询以“学生选课成绩查询”名保存。分析:使用向导创建查询的关键在于确定数据源。由于姓名是学生基本信息表中的字段,课程名是课程表中的字段,而成绩是成绩表中的字段。因此,本题中查询的数据源来自于3个表。在本教材的第2章,已经建立了这些表之间的关联,可以直接引用;否则,应该先建立表之间的关联。具体操作步骤如下:①选择简单查询向导在打开的数据库窗体中,选择“查询”对象,单击“新建”按钮,在弹出的“新建查询”对话框中选择“简单查询向导”选项,如图3-4所示。图3-4“新建查询”对话框②

添加学生基本信息表的字段单击图3-4中的“确定”按钮后,屏幕显示设置查询字段对话框,如图3-5所示。在设置查询字段对话框中,打开“表/查询”中的下拉列表,选择学生基本信息表;选中“可用字段”中的xm字段,单击“>”按钮将它添加到“选定的字段”列表框中,也可以直接双击相应的字段名。③添加课程表和成绩表中的字段重复上述操作,将课程表中的kcm字段,成绩表中的cj字段添加到选定字段列表中,如图3-5所示。图3-5添加简单查询字段④保存并观察查询结果选择好所有的显示字段后,可单击“下一步”按钮,显示选择“确定明细查询还是汇总查询”对话框,选择其中的“明细”选项,单击“下一步”按钮。

查询结果是将来自于3个表中的部分字段同时在一个窗口中显示出来。

图3-6学生选课成绩查询结果例3-8现需要按照不同的课程统计平均分、最高分、最低分,请通过一个查询实现。分析:在创建该查询时,需要根据课程名进行汇总,基本操作过程如下:①选择简单查询向导。②从不同的表中选择字段。选择课程表中的kcm字段,选择成绩表中的cj字段。③在“确定明细查询还是汇总查询”对话框中,选择其中的“汇总”选项,单击“汇总选项”按钮,显示如图3-7所示的汇总选项对话框。④数字字段的汇总方式有总计、平均、最小值和最大值四种,选择其中的平均、最小和最大。⑤将查询结果保存为课程成绩汇总查询,其结果如图3-8所示。图3-7汇总选项对话框图3-8课程平均分、最小值及最大值查询结果3.3.2“查找重复项查询向导”创建查询操作步骤⑴选择查找重复项查询向导⑵选择要查找的重复字段⑶选择查询要显示的其它字段⑷保存并运行查询例3-9

在学生基本信息表中,创建查询,显示具有相同民族和入学成绩的学生的姓名和联系方式。分析:重复项查询是指将某字段取值相同的记录作为一组集中显示,方便信息查找。具体操作步骤如下:①选择“查找重复项查询向导”在图3-4所示的对话框中选择“查找重复项查询向导”,确定后进入下一步操作。②选择要查找的重复字段在弹出的“查找重复项查询向导”对话框中,选择列表中的学生基本信息表。在接下来显示的对话框中确定可能包含重复信息的字段,选择字段mz、rxcj添加到重复值字段窗口,如图3-9所示。图3-9设置重复信息字段对话框③选择查询要显示的其它字段继续在弹出的“查找重复项查询向导”对话框中,将查询要显示的xm等其它字段,添加到另外的查询字段窗口中,如图3-10所示。

图3-10添加其它字段对话框④保存并运行查询将本查询以“重复项查询”的名字保存,并选择“查看结果”选项,单击“完成”按钮,则可以看到查询的结果,将民族和入学成绩相同的记录集中在一起显示,如图3-11所示。图3-11重复项查询结果3.3.3“查找不匹配项查询向导”创建查询操作步骤⑴选择查找不匹配项查询向导⑵选择数据源和包含相关记录的表或查询⑶确定匹配字段⑷确定输出字段⑸保存查询并显示结果例3-10

在高校学生管理数据库中查找在本学期没有开课的教师的姓名、性别、参加工作时间、职称、学位和所在系,并将该查询以“无开课记录查询”的名字保存。分析:如果需要查询没有开课的教师,即该职工在教师表中应有记录,而在开课情况表中却没有开课的记录,因此可以通过这两个表中共有的字段jsh,查找不匹配的记录。具体操作步骤如下:

①选择查找不匹配项查询向导在如图3-4所示的对话框中选择“选择查找不匹配项查询向导”,单击确定。②选择数据源和包含相关记录的表或查询在弹出的“选择查找不匹配项查询向导”对话框中,选择教师表作为查找的数据源,同时在弹出的下一个对话框中,选择开课情况表作为包含相关记录的表,并进入下一步操作。③确定匹配字段由于教师表和开课情况表中都有一个名为jsh的字段,因此可单击窗口中的“<=>”按钮,选择此字段作为查找的匹配字段,进行下一步操作,如图3-12所示。图3-12选择匹配字段对话框④确定输出字段在此窗口中,与前面的操作相同,可将教师表中所需显示的字段,依次添加到选定字段列表中,如图3-13所示。

图3-13选择不匹配查询的其它字段⑤保存查询并显示结果将本查询以“无开课记录查询”的名字保存后,可显示查询的结果,如图3-14所示。从结果中可以看出,显示的职工记录都是无开课记录的。例如,在教师表中有教师号为0103、姓名为王军的记录,但在开课情况表中却找不到教师号为0103的记录,即说明这位老师没有开课任务。图3-14无开课记录查询结果3.4使用设计视图创建查询创建带有特殊条件的查询对已创建的查询进行修改创建其它类型的查询例3-11分析查询设计视图的结构。解:图3-15显示的是与图3-1所示的查询结果对应的设计视图。该视图分为上下两部分,上部分显示的是查询的数据源及其字段列表,下半部分显示并设置查询中字段的属性。其主要含义如下:字段,查询结果中显示的字段;表,查询的数据源,即上述字段的来源;排序,查询结果中对应字段的排序方式(升序或降序);显示,当对应字段的复选框被选中时,则结果显示,否则不显示;条件,查询条件,本行中多个条件之间是“与”的关系;或,查询条件,本行的多个条件之间是“或”的关系。当其中的任何一个属性选项发生变化时,查询的结果也随之变化。图3-15查询设计视图示例3.4.1选择查询用于浏览、检索、筛选和汇总数据库中的数据在查询中增加字段进行汇总和计算操作步骤⑴打开设计视图⑵指定数据源和显示字段⑶确定查询条件⑷保存并查看查询结果选择查询示例例3-12

创建选择查询,查找并显示学生基本信息表中志愿者或女党员的同学信息。查询结果显示学号、姓名、性别、志愿者否、班级名称以及班主任,并将该查询以“志愿者或女党员查询”的名字保存。分析:根据显示结果,确定查询的数据源为学生基本信息和班级两个表。根据题目要求可以确定查询条件,一个是性别为女(可用xb="女"表示),同时为党员(可表示为zzmm="党员");另一个是志愿者(可表示为zyz=true)。在设计查询时必须正确地反映这些条件。操作步骤如下。①打开设计视图及显示表对话框在数据库窗口左边的对象列表中单击“查询”,再双击右边子窗口中的“在设计视图中创建查询”选项,显示如图3-16所示的设计视图窗口及“显示表”对话框。

图3-16查询设计视图及显示表对话框②指定数据源和显示字段在显示表对话框中,双击学生基本信息表和班级表,关闭显示表对话框。学生基本信息表和班级表被添加到设计视图的上半部分。双击学生基本信息表中xh、xm、xb、zyz和bjmc等字段将其添加到设计视图下半部分的网格中,并将班级表中的bzr字段也添加到网格中。③确定查询条件将查询所需的字段添加到设计网格中,在xb字段下面的条件行中输入"女",在政治面貌字段下面的条件行中输入"党员",在字段zyz的“或”行中输入true,如图3-17所示。图3-17志愿者或女党员查询设计视图④保存查询完成设计后,关闭设计视图窗口,屏幕显示保存查询对话框,在其中输入查询的名称“志愿者或女党员查询”。⑤运行查询运行查询,显示如图3-18所示的运行结果。从中可以看出,条件xb为"女"与zzmm字段的条件为"党员"构成了且的关系;字段的条件zyz为true,则与前两个条件构成了或的关系。图3-18志愿者或女党员查询结果选择查询计算汇总示例例3-13

现有一学生费用表,如图3-19所示。创建一个余额查询。该查询显示原学生费用表中的所有字段和学生姓名,计算并显示每个学生的账目余额,将其按降序排列输出。其中余额是学生费用表中各字段计算的结果。图3-19学生费用表记录(a)图3-19学生费用表结构(b)分析:以上各字段来源于两个表。姓名来自于学生基本信息表,其它字段来自于学生费用表。通过xh字段建立学生基本信息表与学生费用表之间的一对一关联关系。余额的计算公式为[zxdk]+[knbz]+[jxj]+[qgzx]-[xf]-[zsf]-[sbf],可在表达式生成器中产生。操作步骤如下:①打开设计视图并选择相关的数据表。②选择数据源及相关字段。分别将学生基本信息表中的xm、学生费用表中的xh、zxdk、knbz、jxj、qgzx、xf、zsf及sbf字段添加到设计视图的网格中。其格式为“余额:[学生费用表]![zxdk]+[学生费用表]![knbz]+[学生费用表]![jxj]+[学生费用表]![qgzx]-[学生费用表]![xf]-[学生费用表]![zsf]-[学生费用表]![sbf]”③设置查询其它属性在余额字段的排序栏选择“降序”,并单击工具栏上的“属性”按钮,弹出的“字段属性”对话框,将“常规”选项卡中的“格式”设计为“货币”。查询设计视图如图3-21所示。④保存并运行查询将该查询以“学生费用余额”的名字保存查询。在数据库窗口中双击查询名称,其运行结果如图3-22所示。从运行结果可以看到,“余额”字段的值是根据学生费用表中各项目计算得到的。该字段在数据源表中并不存在,通常将这种字段称为“虚字段”。选择查询聚合函数的应用例3-14

在高校学生管理数据库中,创建“课时统计”查询,查询每位教师所任的课程门数和总课时。分析:如果一个教师担任多门课程时,则他的教师号就会在开课情况表中反复出现,因此要做每个教师的课时总计,可以将jsh做为分组字段,将jsh相同的记录分为一组,对其课程号计数就是该教师所任课程的门数,对每门课的学时进行合计就是该教师所任课程的总学时。操作步骤如下。①打开查询设计视图及显示表对话框②选择数据源在“显示表”对话框中,将教师表、开课情况表和课程表添加到查询设计视图中。同时检查三个表之间是否已经根据jsh和kch字段建立了关联,并选择了“实施参照完整性”选项。③选择总计查询将查询中的字段jsh、xm、kch和xss依次添加到设计网格中,在“视图”菜单中选择“总计”命令或单击工具栏上的"∑"符号,可以看到在该查询的设计视图网格中多出了“总计”行。④确定分组和统计字段在jsh和xm的“总计”栏选择"分组"选项,kch的“总计”栏选择"计数"选项,计算出同一职工编号所对应的课程数,最后在xss字段的“总计”栏选择"总计"选项,计算出职工编号相同的一组记录所对应的课程的学时总计,如图3-23所示。图3-23课时统计查询设计视图⑤保存并运行查询将查询以“课时统计查询”名字保存。运行该查询,可以看到该查询计算出每位教师的总课时,如图3-24所示。图3-24课时统计查询结果3.4.2交叉表查询某一字段作为表的行标题以另一字段的取值作为列标题在行和列的交叉点处获得数据的汇总信息图4.21交叉表示例创建交叉表查询示例例3-15创建一个如图3-25所示的学生各门成绩统计的查询。分析:要实现图3-25所示的查询结果,首先要以xm作为一个分组单位,在每一个分组中统计出这个学生的各门课程成绩。因此在这个交叉表查询中,可将学生基本信息表中的xm字段作为行标题,将课程表中的课程名字段的不同取值作为列标题,其交叉汇总的是成绩表中的成绩字段统计结果。操作步骤如下。①打开查询设计视图,确定数据源在图3-4所示的“新建查询”对话框窗口中,选择“设计视图”选项,将学生基本信息表、课程表、成绩表添加到查询视图中。②确定查询字段。将相应表中的字段xm、kcm、cj添加到设计网格中。③选择“交叉表查询”选择“查询”→“交叉表查询”命令;在xm字段的“交叉表”栏选择“行标题”;kcm字段的“交叉表”栏选择“列标题”;cj字段的“交叉表”栏选择“值”、“总计”栏选择“第一条记录”;如图3-26所示。④保存并运行查询保存并运行查询,即可看到图4-25所示的结果。说明:交叉表查询中的值可以是Count(计数)、Sum(总计)、Max(最大值)等多种形式。图3-26班级性别统计查询设计视图3.4.3参数查询在查询准则中确定一个参数其参数值在运行查询时由用户输入系统根据给定的参数值,确定查询结果具有极大的灵活性参数查询常常作为窗体、报表以及数据访问页的数据源参数查询操作步骤⑴打开视图查询并确定数据源⑵确定查询字段⑶选择参数查询“查询”菜单,选择“参数查询…”命令项⑷确定字段准则⑸保存并运行查询参数查询示例例3-16创建查询,当用户从键盘输入学生的学号或姓名时,显示相应学生的联系情况,包括学生的学号、姓名、性别、班级名称、联系方式、班主任及所在系等。分析:在本例中,查询结果显示的数据来自于学生基本信息表、班级表和系部表。设计查询的关键在于如何正确地设置查询的参数。由于需要根据学号或姓名进行参数查询,可考虑用Like运算实现,并根据它的输入显示相应学生的联系情况;当它为空时,显示所有学生的联系情况记录。操作步骤如下。①打开视图查询并确定数据源。在新建查询对话框窗口选择“设计视图”选项,将表学生基本信息表、班级表及系部表添加到查询视图中。②确定查询字段。依次在相应的表中将xh、xmxb、bjmc、lxfs、bzr、xbmc字段添加到设计网格中。③选择参数查询。选择“查询”菜单中的“参数…”命令,在弹出的对话框中,输入“学号或姓名”作为参数名称,确定参数类型为文本类型,如图3-27所示。④确定字段准则。在设计网格的xh字段的准则行中,输入Like[学号或姓名],在xm字段的“或”条件行中也输入Like[学号或姓名],在新字段xhxm的“或”条件栏输入空条件,如图3-28所示,并单击“确定”按钮。图3-28参数查询设计视图⑤保存并运行查询。保存该查询,命名为“学生联系情况参数查询”。⑥运行该参数查询时,系统会弹出如图3-29所示的对话框,输入相应的参数(学号、姓名或空值),系统显示相应结果。图3-29输入参数值对话框图3-30学生联系情况参数查询结果3.4.4修改已创建的查询如增加或删除显示字段修改查询中的字段名修改查询中的数据源改变查询结果的排列方式等可以在查询的设计视图中完成对查询中字段的编辑操作步骤⑴打开原查询设计视图⑵增加显示字段⑶调整字段顺序⑷选择排序字段⑸运行查询查询字段的编辑示例例3-17对前面创建的“学生选课成绩查询”进行修改。要求增加显示学生学号、课程学分及开课学期,并按kcm字段的升序,cj字段的降序显示所有记录,以学生选课成绩查询二的名字保存。图3-31修改后的查询设计视图图3-32学生选课成绩查询二结果编辑查询的数据源操作步骤⑴打开查询的设计视图⑵添加查询字段⑶修改数据源⑷保存并运行查询编辑查询的数据源示例例3-18对前面例题创建的学生选课成绩查询进行修改。要求显示学号、姓名、课程名、成绩的内容,并将查询重命名为学生选课成绩查询三。分析:与已建立的查询比较,kkxq字段将被删除,因此开课情况表、课程表也要删除,同样的,在创建新的查询前要做好备份。操作步骤如下。

图3-33修改数据源后的查询设计视图图3-34学生选课成绩查询三的运行结果3.5操作查询能够完成某些特定操作的查询对原数据表进行更新、追加、删除等操作生成表查询追加查询更新查询删除查询3.5.1生成表查询根据已有的数据表创建新的数据表,应该首先选择使用生成表查询操作步骤⑴打开设计视图并添加数据源⑵添加查询字段⑶选择生成表查询(查询/生成表查询)⑷运行并保存查询生成表查询示例例3-19

创建一个将学生按年级归档的生成表操作查询。现要生成一个保存2008级学生基本信息的表,即要求根据学生基本信息表生成新表,新表中除了包含学生基本信息表中所有字段外,增加一个年级字段。分析:在高校学生管理数据库中,学生基本信息表提供的数据是所有学生的基本情况。如果要查询每个年级的学生情况,就必须将学生的信息按年级归档,并存储在一个新表中。操作步骤如下:①打开设计视图并添加数据源。打开高校学生管理数据库,单击“查询”对象,双击“在设计视图中创建查询”按钮,并将学生基本信息表添加到设计窗口中。②添加查询字段。将学生基本信息表的所有字段添加到设计网格中,并在最前面添加新字段年级,新字段的值为xh的前四位,也就是年级:left([xh],4)如图3-35所示。图3-35按年级归档学生信息查询的设计视图③选择生成表查询在“查询”菜单中选择“生成表查询…”命令项,并在弹出的对话框中输入新表名称2008级学生基本信息表,新表可以保存到当前数据库中,也可以保存到其它数据库中,如图3-36所示。④运行并保存查询以“2008级学生基本信息查询”保存创建的查询。运行该生成表查询时,系统会弹出是否创建新表的对话框,同时确定向新表中粘贴数据,如图3-37所示。⑤查看生成表回到数据库窗口,单击表对象,就可以看到刚生成的2002级学生基本信息表,双击表名打开,可查看到表中存放的是2002级学生基本信息的数据。图3-36生成表查询对话框图3-37生成表运行对话框3.5.2追加查询将一个或多个表中符合条件的记录追加到另一个表的末尾创建追加查询时,被追加的表必须已经存在操作步骤⑴打开高校教师管理数据库⑵建立新表⑶选择查询视图和数据源⑷选择追加查询(查询/追加查询)⑸添加查询字段⑹保存并运行查询追加查询示例例3-20

将已毕业(四年制)的学生信息添加到毕业生信息表中,显示毕业学生的学号、姓名、性别、班级名称、入学时间及毕业时间。具体操作步骤如下。①打开高校学生管理数据库在数据库窗口,选择表对象,若毕业生信息表已存在,直接转③。②建立新表在数据库窗口,新建具有字段名为xh、xm、xb、nl、rxrq及bysj的表,命名为毕业生信息表。③选择查询视图和数据源在数据库窗口,打开查询的设计视图窗口,并将学生信息表作为数据源添加到设计视图中。④选择追加查询打开“查询”菜单,选择“追加查询”命令,在弹出的“追加”对话框中,单击“当前数据库”选项,在追加到后面的下拉列表中选择毕业学生信息,按确定按钮,如图3-38所示。图3-38追加查询对话框⑤添加查询字段将学生基本信息表中的相应字段添加到设计网格中,且毕业时间为DateAdd(“yyyy”,4,[rxsj]),条件为“<Date()”。如图3-39所示。⑥保存并运行查询图3-39毕业生追加查询设计视图3.5.3更新查询数据表中的某些数据,需要有规律地成批替换若两个表之间建立了级联更新,当主键更新时,其关联表中的记录也需更新如果更新的是主键时,则应注意主键不能重复操作步骤操作步骤⑴打开设计视图并添加数据源⑵选择更新查询⑶运行查询更新查询示例例3-21

将2009级学生的奖学金上调10%。分析:要将奖学金上调10%,可以通过表达式[jxj]*(1+0.1)进行批量更新,由于在学生费用表中没有年级字段,而是通过学号字段的前四位来表示的。更新的数据源学生费用表,更新的条件为Left([xh],4)=“2009”。操作步骤如下。①打开查询的设计视图并添加数据源打开查询的设计视图,并在其中添加学生费用表。②选择更新查询选择“查询”→“更新查询”命令,将要更新的字段jxj和xh添加到设计网格中,在jxj字段的“更新到”一栏中输入更新表达式“[jxj]*(1+0.1)”,在xh字段的“条件”栏中输入Left([xh],4)=“2009”,如图3-40所示。③保存并运行查询图3-402009级奖学金更新查询设计视图3.5.4删除查询从一个或多个表中删除符合条件的记录删除记录之后,不能再撤销这个操作

操作步骤⑴选择查询设计视图,添加数据源⑵选择删除查询(查询/删除查询)⑶选择参数查询(若无参数,可省略)⑷添加删除准则⑸运行查询删除查询示例例3-22

删除学生基本信息表中某学生记录,该学生的学号在执行查询时由用户通过键盘输入。分析:删除数据表中的某个记录可以通过删除查询进行,确定具体要删除的记录由用户通过键盘输入,实际上是一种参数查询,输入的参数决定删除准则。操作步骤如下。①选择查询设计视图,添加数据源。在数据库窗口选择“查询”对象,在查询的“设计视图”方式下,将学生基本信息表添加到设计窗口。②选择删除查询。选择“查询”→“删除查询”命令,可以看到设计网格中增加了“删除”栏。③选择参数查询。选择“查询”→“参数…”命令,在弹出的对话框中输入提示文本“请输入要删除的学生学号”。④添加删除准则。双击教师表中xh字段,将它添加到设计网格中,并在xh字段的“准则”栏输入删除条件。在本例中即为“[xh]=输入的参数值”,用“[请输入要删除的学生学号]”表示,如图3-42所示。⑤保存并运行查询。保存查询。运行查询时,在弹出的提示框中输入要删除的学号,如2002012101,相应的记录将从教师表中删除。图3-42通过参数删除记录查询的设计视图3.6SQL查询SQL查询是通过编写SQL语句创建的查询视图查询最终都由Access翻译成等价的SQL语句,系统才能执行视图查询可通过SQL视图查看、修改查询SQL查询主要包括数据定义查询、联合查询、传递查询和子查询等3.6.1SQL语句简介SQL(StructuredQueryLanguage)是结构化查询语言的简称图4.39与教师任课查询对应的SQL语句例3-23查看与“志愿者或女党员查询”对应的SQL语句。①打开志愿者或女党员查询的设计视图。②选择“视图”→“SQL视图”命令,屏幕即会显示如图3-43所示的SQL语句。图3-43志愿者或女党员查询对应的SQL语句3.6.2基本SQL语句1.SQL定义语句⑴定义关系(数据表)的SQL语句⑵增加字段的SQL语句⑶删除字段的SQL语句⑷删除关系(数据表)的SQL语句2.SQL查询语句3.SQL数据操作语句⑴插入记录⑵删除记录⑶更新记录定义关系(数据表)的SQL语句CREATETABLE

表名(字段名1字段类型1,字段名2字段类型2,……,PRIMARYKEY

(字段名))字段长度的字段要同时定义其长度例4.15在高校教师管理数据库系统中增加一个新的表,命名为业绩。CREATETABLE

业绩(ZGBHtext(7),SMtext(10),SFZBlogical,PRIMARYKEY(ZGBH)) 例3-24

在高校学生管理数据库中增加一个新的表,命名为综合测评统计。分析:创建的表的名称是综合测评统计,其中涉及到的数据项包括xh(学号)、xm(姓名)、dycj(德育成绩)、tycj(体育成绩)、zycj(智育成绩)等,操作过程如下:①打开高校学生管理数据库窗口,选择查询对象,打开新建查询的设计视图,关闭显示表窗口。②选择“视图”→“SQL视图”命令,屏幕显示创建SQL查询窗口。在窗口中输入以下SQL语句:

CREATETABLE综合测评统计(xhText(10),xmText(6),dycjSingle,tycjSingle,zycjSingle,PRIMARYKEY(xh))③关闭窗口,保存查询,并将其命名为“创建学生综合测评表查询”。运行该查询后将会在当前数据库中自动创建一个综合测评统计表。图3-44SQL视图增加字段的SQL语句ALTERTABLE

表名ADD

字段名字段类型在例4.14中创建的数据表“业绩”中添加新字段“LXDH”,可用下面的SQL语句ALTERTABLE

业绩ADDLXDHtext(9)例3-25

在综合测评统计表中,增加一项信息,即班级的名称bjmc。分析:只要在综合测评统计表中增加一个字段就可以满足本题的需要。除具体的SQL语句外,其他操作过程与上例相同。ALTERTABLE综合测评统计ADDbjmctext(20)其它SQL定义语句删除字段的SQL语句ALTERTABLEDROP

字段名删除关系(数据表)的SQL语句DROPTABLE

表名SQL查询语句SELECT[DISTINCT]查询目标1,查询目标2,……FROM表名1,表名2,……[WHERE<条件语句>][GROUPBY<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论