数据库机房课件第04章_第1页
数据库机房课件第04章_第2页
数据库机房课件第04章_第3页
数据库机房课件第04章_第4页
数据库机房课件第04章_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

第4章查询

4.1查询的类型4.2建立查询4.3查询条件4.4各种查询的设计4.5SQL查询4.6查询属性设置及性能优化4.1查询的类型

4.1.1查询的定义 查询就是按照用户设定好的查询条件,从数据库中查找符合条件的数据信息。查询也是数据库中的一个对象,允许用户依据准则或查询条件获取表中的记录信息。Access2002中的查询,可以实现对一个数据库中的一个表或多个表以及创建好的多个查询进行查找、求和、计数及排序等多种功能。图4-1查询设计器

图4-2简单查询向导

图4-3查询结果集4.1.2查询的类型

1.选择查询

2.特殊用途查询

3.操作查询

4.SQL查询4.1.3查询的作用 查询是数据库提供的一种功能强大的管理工具,可以按照用户所指定的各种条件来进行查询。查询基本上可以满足用户以下需求。 选择所要查询的基本表或查询(一个或多个)。 选择想要在结果集中见到的字段。 使用准则来限制结果集中所要显示的记录。

对结果集中记录的排序次序进行选定。对结果集中的记录进行数学统计。将结果集制成一个新的基本表。将结果集作为数据源创建窗体和报表。根据结果集建立图表,得到直观的图像信息。

在结果集中进行新的查询。查找不符合指定条件的记录。建立交叉表形式的结果集。在其他数据库软件包生成的基本表中进行查询。4.2建立查询双击数据库【产品订单】,选择数据库中的【查询】对象,然后单击【新建】按钮,弹出如图4-4所示的【新建查询】对话框。在此对话框中列出了Access2002五种新建查询的方法。图4-4【新建查询】对话框【设计视图】【简单查询向导】【交叉表查询向导】【查找重复项查询向导】【查找不匹配查询向导】4.2.1使用向导建立查询1.简单查询向导 在Access2002中,用户在创建查询过程中,如果仅仅需要从一个或多个表中得到自己想要的信息,而且不需使用创建查询的规则,则使用查询向导创建查询将是最快捷的方法。 用户要创建的查询取决于用户想要从数据表中得到什么样的信息。2.交叉表查询向导 交叉表查询以表的形式将数据库表或查询的某些字段进行分组,分别以行标题和列标题的形式显示出某一个字段的总和、计数、平均或最大值、最小值等。3.重复项查询向导 重复项查询的作用是查找出具有重复字段值的记录。因此,利用查找重复项查询向导,可以帮助用户在数据表中查找具有—个或多个字段内容相同的记录。4.不匹配项查询向导 不匹配查询的作用是供用户在一个表中查找出另一个表中没有相关记录的数据。查找不匹配项查询向导,是用来帮助用户在数据中查找不匹配记录的一个向导。在具有一对多关系的两个表中对于“一”方的表中的每一条记录,在“多”方表中可能有一条或多条甚至是没有记录与之对应的,使用不匹配查询就可以帮助用户查找出那些在“多”方中没有对应记录的“一”方表中的记录。4.2.2使用查询设计器创建查询使用查询向导局限于设计一些简单的查询,或者设计某些特定的查询,如交叉表查询、查找重复项、不匹配项查询等。此外,Access2002还提供了功能更加强大的查询设计器。通过查询设计器不仅可以完整地设计一个查询,而且还可以用来对一个已创建的查询进行编辑、修改加以完善。

查询设计器如图4-30所示,该对话框分为两个部分:上部是数据表/查询显示区,下部是查询设计区。数据表/查询显示区用来显示查询所使用的基本表或查询(可以是多个表/查询),查询设计区用来指定具体查询准则。图4-30查询设计器数据表/查询显示区查询设计区

查询设计区中网格的每一列都对应着要显示的查询结果集中的一个字段,网格的行标题表明字段的属性及要求。查询设计器的工具栏如图4-31所示。图4-31查询设计器工具栏1.使用查询设计器建立简单查询2.查询设计器的其他相关操作3.查询属性设置 在查询设计器中单击【属性】按钮,或者用鼠标右键单击查询设计窗口的标题栏,然后在弹出的快捷菜单(如图4-43所示)中选择【属性】命令,则弹出如图4-44所示的【查询属性】对话框。图4-43查询设计窗口的快捷菜单图4-44【查询属性】对话框4.字段属性设置4.3查询条件

查询设计视图中的查询准则就是查找记录应符合的条件。查询的结果应满足查询设计视图中所设置的条件,不同字段之间设置的条件在逻辑上存在“与”关系。

设置查询的条件与在设计表时设置字段有效性规则的方法相似。如果只是简单地查找某个字段值为某一特定值的记录,只要将此特定值输入到该字段对应的【条件】栏中即可。如果这个字段是文本型的,则输入的特定值要用英文输入状态下的引号引起来。 如果设定几个特定值来查找对应的记录,就要将第—个值输入到该字段的【条件】栏,第二个值输入到其下的【或】栏。

在实际的查询条件设定中,并非仅仅局限于查找某几个特定的值,在设置查询条件时也经常用到条件表达式。1.条件表达式 在条件表达式中可通过操作符来设置查询范围。操作符及其作用如下。【And】:“与”操作符。

【Or】:“或”操作符。

【Between…And】:用于指定一个范围。

【In】:用于指定某一系列值的列表。例如In(“A、B、C”),它等价于:“A”Or“B”Or“C”。

【Like】:用于查找指定模式的字符串。2.日期与时间在条件表达式中的使用 在条件表达式中使用日期/时间时,必须要在日期/时间值两边加上“#”以表示其中的值为日期/时间。以下写法都是允许的,如#Marl2,99#、#12/10/99#、#11122002#等。

Access2002还提供了一些内部函数,可以方便地进行有关时间的计算。Date():返回系统当前日期。

Year():返回日期中的年份。

Month():返回日期中的月份。

Day():返回日期中的日数。

Weekday():返回日期的星期数。

Hour():返回时间中的小时数。

Now():返回系统当前的日期与时间。3.表达式的计算Access2002的查询不仅具有查找的功能,而且还具有计算的功能。在设计表的过程中,如果某个字段值可以由其他字段计算而得出,那么该字段的存在就是不合理的。在表达式中使用计算的目的一方面是为了减少存储空间,另一方面是为了避免在更新数据时产生表中数据不能同步的错误。如果用户需要一些可以由已有字段而得出的数据信息,就可以使用查询的计算功能。查询中的计算包括如加、减、乘、除等简单的算术运算,还包括“与”、“或”、“非”等逻辑运算,以及一些Access2002的内部函数。在查询条件表达式中可以使用以下几种计算。

【A+B】:两个数字型字段值相加。

【A−B】:两个数字型字段值相减。

【A*B】:两个数字型字段值相乘。【A/B】:数字型字段A的值除以数字型字段B的值。

【A\B】:把数字型字段A除以数字型字段B的所得结果四舍五入成整数。

【A^B】:表示A的B次幂。

【Mod(A,B)】:表示把数字型字段A和B的值化为整数并相除求余数。

【A&B】:将文本型字段A和B连接成一个字符串。4.使用条件表达式生成器 单击查询设计区网格的任一字段的【条件】单元格,然后单击工具栏上的【生成器】按钮,将弹出【表达式生成器】对话框,如图4-46所示。图4-46【表达式生成器】对话框

在对话框顶端有一个文本框,这是生成表达式的显示区域,用户可以在此直接输入条件表达式。下面是一些运算符按钮,最下部是3个分级列表框。最左端的列表框中给出了表达式中所能用到的全部字段所属的对象包括表、查询、报表、窗体,还有常量、函数、通用表达式和操作符。它们按类别存放在一个“文件夹”内,其中“十”号表示其下有次级分类,单击该图标就可以打开显示。

在左端列表框中,被选中并打开的项中所含内容显示于中间的列表框内。同样,中间列表框中的项的具体次级选项显示于右端列表框中,选中适当的内容后单击【粘贴】按钮,即可将其输入表达式并显示于文本框中。4.4各种查询的设计

实际上数据查询未必总是静态地提取统一信息,通常要求把检索内容输入到—个特定对话框中,系统根据用户临时输入的内容检索出相应的数据,这种查询称为参数查询。

另一个特殊用途的查询是把某些字段值自动填充到相关表中的“自动查找”查询。“自动查找”查询通过查找用户输入到匹配字段中的数值,把相应的信息输入到相关表的字段中,并保存数据输入时间。4.4.1特殊用途查询的设计1.参数查询2.自动查找查询 创建自动查找查询是为了方便用户节省数据输入时间。例如,当用户输入一个有效的产品ID时,查询将把其余全部信息填充到数据表或窗体中。自动查找查询使用具有一对多关系的两个表,在这个关系中,“一”方上的匹配字段是—个主键或惟一索引。不必实施参照完整性。

创建一个自动查找查询,必须将两个相关表添加到查询设计窗口,然后把联合字段从“多”方拖到网格上。这种查询是查找父表——“一”方中的相关记录并从匹配记录中的其他字段(属于“多”方即子表)检索数值。“一”方上的字段必须是主键或有—个惟—索引。但是“多”方上的字段不能是主键,也不能是惟一索引。3.交叉表查询 交叉表查询是一种特殊的合计查询类型,可以使数据按电子表格的行列格式显示查询结果集。4.4.2操作查询的设计 在Access2002中,除了可以对数据库进行检索外,还可以利用操作查询同时对一个或多个表执行全局数据管理操作,包括更新字段数值、添加新记录、删除记录和创建新表的操作。按照功能将操作查询分成4类:更新查询、追加查询、删除查询和生成表查询。1.更新查询 更新查询用于同时对一个或多个表的记录进行更改,用户通过添加某些特定的条件来更新一个或多个表中的记录,或筛选出要更改的记录。表4-1给出了一些更新表记录样例。2.追加查询当用户需要将一个或多个表的记录添加到其他表时,就可以用追加查询这种操作。追加查询可以从一个数据表中读取数据记录并向另一个表添加,但是两个表之间的字段定义不相同时,追加查询只添加相互匹配的字段内容,不匹配的字段将被忽略。3.删除查询 删除查询是将符合删除条件的整条记录全部删除而不是只删除查询所使用的字段。查询所使用的字段只是用来作为查询的条件。删除操作不可恢复,所以在执行删除查询时,应该先考虑是否备份数据。 删除查询可以在一个表内删除记录,也可以在多个表内利用表间关系删除相互关联的数据记录。(1)从单个表删除记录(2)从相关表中删除记录 从相互关联的一个或多个表中删除记录可能麻烦一些。如果用户正在实施参照完整性并己选择“连锁删除相关记录”,可能更麻烦。

这时,复选“级联删除相关记录”选项所造成的损害可能比复选“级联更新相关记录”选项更大。在“级联删除相关记录”被复选时,无论表是否包含在查询中,Access2002都将自动删除全部匹配记录。

在使用删除查询前,请检查用户在数据库中涉及到该查询的表之间的关系。对于关系来说,如果启动“级联删除相关记录”,“多”方的全部匹配记录就与“一”方的记录—起被删除。如果这个选项没有被选择,就必须运行两次删除查询来完成这项任务。首先从“多”方的表中删除记录,然后设法获得“一”方的记录。4.生成表查询 生成表查询可以从一个或多个表或查询的记录中制作成一个新表。实际上就是将符合条件的一个或多个表或查询的记录查找出来并保存在一个新的表中。4.5SQL查询SQL查询就是利用SQL语句创建的查询。SQL语言由若干语句组成,每个语句都遵守特定的语法和约定。SQL语言即结构化查询语言(StructuredQueryLanguage),在各种关系型数据库中有着广泛的应用。4.5.1SELECT语法 在Access2002中可以通过直接书写SQL语句来实现查询功能。在每个SQL语言里面,最基本的语法结构是“SELECT…FROM…”,“SELECT”就是“选取”的意思,“FROM…”(从哪里选取)构成了SELECT的基本语法。SELECT选取的对象就是数据表的“字段”值。SELECT语句的语法结构如下:SELECT[谓词]{*|表名.*|[表名.]字段1[AS别名1],[[表名.]字段2[AS别名2][……]]}FROM表的表达式[……][IN外部数据库][WHERE……][GROUPBY……][HAVING……][ORDERBY……][WITHOWNERACCESSOPTION]4.5.2SQL语言应用4.5.3各种常用查询对应的SQL语句 前面介绍的所有查询都有对应的SQL语句,用户只需用设计视图打开创建好的查询,然后选择【视图】|【SQL视图】命令即可查看该查询的SQL语句的写法。1.交叉表查询的SQL语句2.更新查询的SQL语句3.追加查询的SQL语句4.删除查询的SQL语句5.生成表查询的SQL语句表4-3介绍一些简单操作查询的SQL语句。4.5.4SQL特定查询1.联合查询 当用户要把两个或多个含有相同信息的独立表联合为一个列表时,要用到联合查询。联合查询的具体语法是SELECT*FROM表UNIONSELECT*FROM表

每个SELECT语句所选取的字段个数必须相同,并以相同的顺序出现。相应的字段还必须有兼容型数据。这个规则的例外情况是可以把数字和文本字段当作两个列表中的对应字段。

用户可以把WHERE子句添加给两个SELECT语句,以便对联合查询的结果进行限制。为了把返回的数据分组,用户也可以使用每个SELECT语句中的GROUPBY或HAVING子句。添加ORDERBY子句作为最后输入并排序合并的列表。如果用户要给某一字段取一个别名,则要在第一个SELECT语句中用AS【别名】子句更改这个字段。2.数据定义 首先打开查询设计器,并关闭【显示表】对话框。然后选择【查询】|【SQL特定查询】子菜单中的【数据定义】,进入SQL数据定义查询文本编辑窗口。每个数据

温馨提示

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

评论

0/150

提交评论