4.1查询对象设计基础应用Access2003的查询对象是实现关系数据库查询操作的主要方法,借助于Access2003为查询对象提供的可视化工具,不仅可以很方便地进行Access2003查询对象的创建、修改和运行,而且可以使用这个工具生成合适的SQL语句,直接将其粘贴到需要该语句的程序代码或模块中。这将非常有效地减轻编程工作量,也可以完全避免在程序中编写SQL语句时很容易产生的各种错误。一个Access查询对象实质上是一条SQL语句,而Access提供的查询设计视图实质上是为我们提供了一个编写相应SQL语句的可视化工具。在Access提供的查询设计视图上,通过直观的操作,可以迅速地建立所需要的Access查询对象,也就是编写一条SQL语句,从而增加了设计的便利性、减少了编写SQL语句过程中可能出现的错误。由查询生成的动态数据集合可以用于六种不同的目的,根据其应用目标的不同,可以将Access2003的查询对象分为六种不同的基本类型。1.选择查询选择查询是从多个数据表中筛选数据形成的查询对象,其中可以包含计算字段、分类汇总字段,可以设定各种筛选条件。选择查询用于显示数据,形成数据编辑界面。2.更新查询更新查询用于在数据表中更改数据。3.追加查询追加查询用于将数据表外部的数据添加到指定数据表的记录中。4.生成表查询生成表查询用于将选择查询的结果生成为一个数据表对象。5.删除查询删除查询用于在数据表中删除记录。6.交叉表查询交叉表查询用于产生采用垂直方式对记录进行分组汇总的查询结果。4.1查询对象设计基础4.1.1创建查询对象4.1.2查询对象的实质4.1.3结构化查询语言简介4.1.4运行查询对象4.1.1创建查询对象在Access2003数据库中设计查询对象是需要在查询设计视图中进行。在Access2003查询设计视图中,可以在Access2003数据库中新建一个查询对象,也可以针对Access2003数据库中已经存在的一个查询对象进行设计修改。在数据库设计视图中,单击“查询”标签按钮即进入“查询对象”选项卡,如图4-1所示。1.新建查询对象的操作单击数据库设计视图上的“新建”按钮“”,即弹出“新建查询”对话框,如图4-2所示。图4-2“新建查询”对话框在“新建查询”对话框中,可以从Access提供的五种查询对象新建方法中选择一种。但是,只有学会并理解了“查询设计视图”的操作使用,才可能很好地使用其他方法来加快新建查询对象的操作。在新建查询对话框中选择“设计视图”选项,然后单击“确定”按钮“”,即进入“查询设计视图”。由于是新建查询,所以在查询设计视图中没有任何内容。在查询设计视图中新建查询对象的第一步操作是指定数据源,因此,一旦由“新建查询”对话框进入查询设计视图,Access首先在查询设计视图中弹出“显示表”对话框,用以提示操作者指定数据源。这时,操作者需要在“显示表”对话框中逐个地指定数据源,并单击“添加”按钮“”,将指定的数据源逐个添加入查询设计视图上半部的数据源显示区域内。图4-3所示为在“零售商店管理信息系统”数据库中新建“销售数据记录查询”的第一步操作,为查询指定数据源。图4-3“显示表”对话框的操作Access查询对象的数据源可以是若干个表,也可以是已经存在的某些查询,还可以是若干个表与某些查询的组合。与此对应,“显示表”对话框中包含三个选项卡:“表”、“查询”、“表和查询”。应该根据实际需要进行适当的选择。例如,为“销售数据记录查询”指定的数据源是“销售数据记录”表。选择并添加完毕查询数据源后,单击“显示表”对话框上的“关闭”按钮“”,就完成了为查询对象指定数据源的操作。新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查询中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字段排列顺序不同。这一步操作可以通过两种方法完成。定义查询字段的两种方法新建查询对象的第二步操作是定义查询字段,也就是从选定的数据源中选择需要在查询中显示的数据字段。既可以选择数据源中的全部字段,也可以仅选择数据源中的部分字段,且各个查询字段的排列顺序可以与数据源中的字段排列顺序相同,也可以与数据源中的字段排列顺序不同。这一步操作可以通过两种方法完成。将数据源表中的“*”符号拖曳至设计视图下部的“字段”行中;或下拉“字段”行的列表框,从中选取“*”符号。这时,“字段”行中即出现“*”符号,“表”行中出现该字段所在的表名,“显示”行中的复选框中出现“√”符号。这个新建的查询对象就基本完成了,如图4-4所示。如此方式建立的查选对象在其运行时,将显示数据源表中所有字段中的所有记录数据。即,符号“*”代表着全部字段。(1)新建包含数据源全部数据字段的查询图4-4、新建包含数据源全部数据字段查询的操作(2)新建包含数据源部分数据字段的查询将数据源表中那些需要显示在查询中的数据字段逐个地拖曳至“字段”行的各列中;或逐个地下拉“字段”行列表框,从中选取需要显示的数据字段。这时,“字段”行中出现选中的字段名,“表”行中出现该字段所在表的表名,“显示”行中的复选框中出现“√”(它表明该查询字段将被显示,同时应该看到,取消这个标记则意味着得到了一个不被显示的查询字段)。如此选择查询字段,可以将查询字段的排列顺序设置为不同于数据源中字段的排列顺序,是非常灵活的一种方式。图4-5所示为仅选中“销售数据记录”表中四个字段的查询对象新建的情况。这样的查询对象在其运行时,将显示数据源表中选中字段中的所有记录数据,也就是说:不进行筛选这样一种关系运算。在整个新建查询对象的操作过程中,这个查询对象都将命名为“查询?”。当新建操作完成时,需要关闭查询设计视图,此时将出现“保存”对话框。应该在“保存”对话框中为新建查询对象命名为所需要的名字。图4-5、新建包含数据源部分数据字段查询的操作对于一个已经新建完成的查询对象,通常都需要对其进行一些设计修改。例如,希望图4-5所示的查询对象在其运行时,能够按照销售数量由大到小地排列显示;希望仅显示满足某种条件的记录数据(即进行筛选操作)等等。针对诸如此类的种种需求,就需要对以上初步建立的查询对象进行设计修改。2.查询设计视图应用建立查询的操作,实质上是生成SQL语句的过程。也就是说,Access提供了一个自动生成SQL语句的可视化工具——查询设计视图。那么,通过在查询设计视图中的一系列操作后,所生成的SQL语句到底是什么样的?为了看到一个查询所对应的SQL语句,可以将查询设计视图转换到SQL视图中来观察。单击查询设计视图中菜单栏上的【视图】|【SQL视图】,即进入SQL视图中。由图4-5查询设计视图转换到SQL视图中后,所看到的SQL语句如下:4.1.2查询对象的实质SELECT销售数据记录.货号,销售数据记录.货名,销售数据记录.销售单价,销售数据记录.销售数量FROM销售数据记录WHERE(((销售数据记录.销售单价)=5))ORDERBY销售数据记录.销售数量DESC;可以看出:查询对象的实质是一条SQL语句。打开查询的操作也就是运行相应SQL语句的过程,其结果是生成一个动态数据集合。这个动态数据集合,无论在形式上还是在所能接受的操作上,都如同一个数据表对象。这就是说,在数据表视图中所能进行的所有操作均能在查询视图中实施。如果查询视图数据来源于若干个数据表,则可以在查询视图中同时操作这若干个表中的数据,在一定的限定条件下,也可以同时对这些数据表进行追加记录、删除记录和更改数据的操作。SQL一词,是StructureQueryLanguage的缩写,即“结构化查询语言”的英文缩写。当今的所有关系型数据库管理系统都是以SQL作为核心的。SQL概念的建立起始于1974年,随着SQL的发展,ISO、ANSI等国际权威标准化组织都为其制订了标准,从而建立了SQL在数据库领域里的核心地位。4.1.3结构化查询语言简介SQL的四个特点(1)在方法上的突破:SQL不再局限于数据表中的记录与字段,而是通过设定表与表间的联接来组合地处理数据。(2)容易学习与维护:SQL语句自然语言,简洁直观,语句的功能非常强大,一条语句时常可以取代常规程序设计语言的一大段程序,因而容易维护。(3)语言共享:任意一种数据库管理系统都拥有自己的程序设计语言,其各种语言的语法规定及其词汇相差甚远。但是SQL在任何一种数据库管理系统中都是相似的,甚至是相同的。(4)全面支持客户/服务器结构:实现异种数据库间的数据共享,即在客户端使用的数据访问语言必须与服务器端所能识别数据查询语言相同。SQL就是当今唯一的一个已经形成标准的数据库共享语言。SQL语句按其功能的不同可以分为以下六大类①数据定义语句(DDL,Data-DefinitionLanguage)②数据操作语句(DML,Data-ManipulationLanguage)③操作管理语句(TMLT,transaction-ManagementLanguage)④数据控制语句(DCL,Data-ControlLanguage)⑤数据查询语句(DQL,Data-QueryLanguage)⑥游标控制语句(CCL,Cursor-ControlLanguage)SELECT语句的一般语法格式为:SELECT[predicate]{*|table.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,...]]}FROMtableexpression[,...][INexternaldatabase][WHERE...][GROUPBY...][HAVING...][ORDERBY...][WITHOWNERACCESSOPTION]1、SELECT语法在SELECT语法格式中,大写字母为SQL保留字,方括号所括部分为可有可无的内容,小写字母为语句参量。各项语句参量应该根据实际应用的需要取值,表4-1所列为SELECT语句中各个参量说明。2.SELECT语法简要说明表4-1SELECT语句参量说明参量取值及其含义说明Predicate下列谓词之一:ALL、DISTINCT、DISTINCTROW、TOP可用谓词来限制返回的记录数量。默认值为ALL*全部字段从特定的表中指定全部字段Table表的名称Field1字段的名称包含所要获取的数据Alias1字串常量用来作列标头Tableexpression表的名称这些表包含要获取的数据Externaldatabase数据库的名称该数据库包含tableexpression中的表WHERE条件表达式只筛选满足条件的记录GROUPBY.字段名列表根据所列字段名分组ORDERBY字段名列表根据所列字段名排序关闭查询设计视图,在随之出现的“保存”对话框中指定查询对象名称,然后确定之。对于一个设计完成的查询对象,可以在数据库视图中的查询对象选项卡上看到它的图标,用鼠标在一个查询对象图标上双击,即可运行这个查询对象。一个运行着的查询一般以查询视图的形式显示。在数据库视图中,单击查询对象选项卡,选择需要打开的查询对象,单击数据库视图上的“打开”按钮“”,或双击需要打开的查询对象图标,即进入查询视图。4.1.4运行查询对象图4-7所示即为上述“销售数据记录查询举例”对象打开后的视图。可以看到,查询视图与数据表视图是形式完全相同的视图,不同的是查询视图中显示的是一个动态数据集。对于本例,仅是“销售数据记录”表中的销售单价不低于5元的那一部分商品数据按照其销售数量的大小降序排列而成。图4-6“销售数据查询1”对象的查询视图