罗斯文数据库的查询设计.docx

上传人:b****5 文档编号:29232315 上传时间:2023-07-21 格式:DOCX 页数:23 大小:641.45KB
下载 相关 举报
罗斯文数据库的查询设计.docx_第1页
第1页 / 共23页
罗斯文数据库的查询设计.docx_第2页
第2页 / 共23页
罗斯文数据库的查询设计.docx_第3页
第3页 / 共23页
罗斯文数据库的查询设计.docx_第4页
第4页 / 共23页
罗斯文数据库的查询设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

罗斯文数据库的查询设计.docx

《罗斯文数据库的查询设计.docx》由会员分享,可在线阅读,更多相关《罗斯文数据库的查询设计.docx(23页珍藏版)》请在冰豆网上搜索。

罗斯文数据库的查询设计.docx

罗斯文数据库的查询设计

罗斯文数据库的查询设计

   一样的在表设计完成时期以后就能够够进行窗体的设计,然后再依照需要完善报表功能。

在窗体与报表设计进程中会较多的利用到查询,一样的能够要据需要随时成立。

只是为了先让大伙儿都查询有个系统的了解,因此咱们把罗斯文数据库中的查询放到前面来看。

   查询一样能够分为五种大体类型:

选择查询,参数查询,交叉表查询,操作查询和SQL查询。

用得最多的应是选择查询。

能够结合罗斯文中的实例一路来学习一下。

罗斯文数据库中共有21个查询,这些查询别离为窗体和报表提供了数据源,咱们挑选其中的一些来学习。

   1.定单查询:

   定单查询是为“定单”窗体提供数据的,包括定单表中的全数字段和客户表中的部份字段。

一样咱们在设计查询时用的最多的是用设计视图创建查询。

由于定单查询是一个比较简单的查询,因此咱们通过该查询来学习一下如何通过简单查询向导来创建最简单的查询,然后再利用设计视图来查看和修改。

   在数据库的查询对象窗口,双击“利用向导创建查询”

   

或单击“新建”按钮,在跳出的“新建查询”的窗口当选择“简单查询向导”

在“表/查询”当选择“表:

定单”,选中该表中的所有字段加入到“选定的字段”中

再从“表:

客户”当选择字段公司名称,地址,城市,地域,邮政编码,国家

单击“下一步”,选择“明细”;若是要在查询中实现将记录进行分组,计数、求和、求平均值等计算,那么要在这一步选择“汇总”进入“汇总选项”进行相应的设置。

选择“下一步”,给查询起名“定单 查询”,单击“完成”,自动打开查询,显示查询结果。

若是要对查询进行查看或修改能够进入设计视图中,从菜单“视图”当选择“设计视图”,即可进入设计视图界面。

固然工具栏也有“视图”按钮

设计视图分为上下两上窗口,在上面显示查询中要用到的数据源来自于哪些表或查询,在下面列出的是查询结果中需要用到的字段,该字段来自哪个表,哪个字段需要设置排序方式,是不是需要显示该字段,和查询条件等。

很多查询只需查询出知足条件的记录,并非需要全数的记录,如此就需要在“条件”中输入条件,一样用表达式来表示,只有满中表达式的记录才被显示出来。

因此咱们需要了解一下表达式。

表达式:

表达式是许多MicrosoftAccess运算的大体组成部份。

表达式是能够生成结果的运算符号和操作数的组合。

例如,能够在窗体或报表的控件中利用以下表达式来显示“小计”和“运货费”控件的数值总和:

=[小计]+[运货费]

常见的运算符如算术运算符“=”,“+”,“-”,“*”,“/”;比较运算符“>”,“<”,“>=”,“<=”,“<>”,“=”;逻辑运算符“and”,“or”,“not”;连接运算符“&”,“+”;及经常使用的!

和.(点)运算符。

常见的操作数如字符串,日期/时刻值,常量,变量,函数及引用窗体或报表中的字段值,控件值或属性等。

常见表达式示例:

数学及比较运算表达式

表达式

说明

=[数量]*[价格]

计算数量与价格的乘积,可以得出总价

=[到货日期]-[发货日期]

计算两个日期之间的天数

>2500

比2500大的数

日期表达式

表达式

说明

Between#1997-01-01#And#1997-12-31#

在1997-01-01各1997-12-31之间的数据

<#2007-12-30#

2007-12-30以前的数据

30天以前的数据

=(Date()-[出生日期])/365

计算年龄

Month([出生日期])=3

3月份出生的人

逻辑运算表达式

表达式

说明

“北京”or“上海”

城市为北京或上海的数据

IsNotNull

不为空

“性别”=“男”and“年龄”>30

大于30岁的男性数据

=“中国”&“北京”

值为“中国北京”

通配符表达式

表达式

说明

Like“张*”

以张开头的数据

Like“张?

以张开头后面还有一个字的数据

聚合函数表达式

表达式

说明

Sum([数量]*[价格])

求数量和价格相乘后的和

Avg(费用)

求费用的平均值

Count(*)

计算记录条数

2.“当前产品列表”查询

        当前产品列表统计出未被中止的产品。

       在数据库的查询对象窗口,双击“在设计视图中创建查询”或单击“新建”按钮,在跳出的“新建查询”的窗口当选择“设计视图”,进入设计视图界面,从显示表中添加“产品”表。

选中“产品ID”,“产品名称”,“中止”三个字段(注:

选中字段能够把字段从设计视图界面的上方拖到下方,也能够双击字段名称),去掉“中止”下面“显示”的勾,在条件一栏输入“no”,代表只查询出未被中止的产品,但只要显示产品的ID和名称就好了,是不是中止的状态不用显示出来。

咱们还想将输出的结果依照产品名称进行排序,在“产品名称”下面的“排序”栏里选中升序。

如此查询就完成了,点保留,给查询起个名字就能够够了。

       咱们打开罗斯文数据库中的当前产品列表查询,会发觉数据源是“产品列表”,不是“产品”表,那个地址是用到了表的别名,一样的咱们在查询中为了方便,常常会给比较长的表名取个短一些的名称,更方便引用表。

方式是在显示的表上点击鼠标右键,选择属性,在别名中填上适合的别名就好了。

      本例中其实完全没有那个必要,可能只是想让大伙儿了解如此一个用法罢了.

3.“各类产品”查询

       各类产品查询为各类产品报表提供数据源,在查询对象当选中“各类产品”,单击“设计”按钮,

       咱们发觉默许的是按SQL视图显示的,这时从“视图”当选择“设计视图”即可显示设计视图,固然要再切换到SQL视图,再从“视图”当选择“SQL视图”即可。

通过在“设计视图”中设计查询,再切换到“SQL视图”中查看SQL语句也是咱们学习SQL语句的方式。

       查询的数据来自“类别”表和“产品”表,“类别名称”字段和“产品名称”字段的“排序”都是升序,查询结果将先按类别名称排序,当类别名称相同时再依照产品名称排序。

中止条件为“no”,结果只包括未被中止的产品。

4.“按汉语拼音顺序的产品列表”查询

   那个查询是为“按汉语拼音顺序的产品列表”报表提供数据源的。

双击查询即可运行并显示查询的结果,在查询结果中并未按拼音顺序来排列,那个功能是在报表中实现的。

进入设计视图

   那个查询的数据来自两个表,“类别”表和“产品”表。

查询的结果中只包括未被中止的产品,因此在产品字段上设置了条件,那个地址0代表“否”,在ACCESS顶用0代表“否”,FALSE,“假”,而用-1代表“是”,TRUE,“真”

5.十种最贵的产品

   进入设计视图:

   查询的数据来自于表“产品”,选用的字段只有产品名称和单价两个,若是要给选择的字段另外取个名称,能够给那个字段前面添加名称,中间用英文状态的冒号“:

”隔开,如上图。

   要查询出十种最贵的产品,只要将产品按产品单价降序来排列再取前十种即可。

在单价字段上设好“降序”排列,在工具栏上的上限值列表框

中输入10即可。

双击查询查看运行结果,体会在设计视图中设置的作用。

6.季度定单

   那个查询列出了在1997年度有定单的客户,不是某个季节的记录,而是含盖了全年度的记录,那个结果用于给“季度定单”窗体提供数据源,在窗体中再具体实现按四个季度显示统计结果。

   进入设计视图:

   那个查询的数据来自于“客户”表和“定单”表,“定单”表顶用到的订购日期只是作为一个条件项,不用被显示出来,条件里是一个表达式,代表的含义是订购日期介于1997年1月1日到12月31日之间的,那个地址用到“between…and…”这种语法。

日期型的数据应该在双侧加上“#”号。

接下来咱们还要考虑到有些客户可能在1997年度有多次定货,而咱们希望的结果是每一个客户只显现一次。

这时能够在查询视图的上半部份窗口的空白处右击鼠标,从浮动菜单当选择“属性”,也可直接在工具栏上选择“属性”

设置查询属性中的“唯一值”属性为“是”即可。

设置了那个属性就能够保证每组中的重复数据只会列出一个。

在那个地址还要提一下的是要注意一下选择表的联接类型,在联接线上双击能够显示联接属性,联接属性分为三种,能够依照要求选择。

 

一样默许的联接类型为1,只包括两个表中联接字段相等的行,在本例中改成联接类型为3,包括定单表中的所有记录,在SQL语句方面别离表现为内联接,左联接和右联接,这是有区别的,能够参考运行结果体会联接的作用。

7.扩展定单明细

   扩展定单明细为窗体“客户定单子窗体2”提供数据源,查询中带有计算字段,查询出每一个定单每种产品的一些明细信息。

   进入设计视图:

   查询的数据来自于“产品”表和“定单明细”表,查询结果按定单ID升序排列。

   查询中的字段总价是个计算字段,总价为该字段的名称,计算表示用“定单明细”表中的“单价”乘以“数量”后再乘以(1-[折扣]),相当于算出了打过折后的总价。

字段顶用到一个CCur()转换函数,它的作用是将数据转换为货币类型,另外表达式顶用了先除以100,再乘以100,相当把数据还原,同时小数点后面保留两位小数。

只是我试了直接用CCur([定单明细].[单价]*[数量]*(1-[折扣])),取得的结果也是两位的?

欢迎一起讨论。

8.定单小计

   定单小计统计出每一个定单上各类产品的销售金额的共计金额,为汇总销售额等多个查询提供数据。

   进入设计视图:

   查询的数据来自于“定单明细”表,选用的字段只有一个“定单ID”,小计字段是个计算字段,小计是那个字段的名称,后面是计算表达式。

计算方式同“扩展定单名细”查询中的“总价”字段,那个地址由于只有一个表,因此[定单明细].[单价]能够直接写成[单价],该字段为:

小计:

CCur([单价]*[数量]*(1-[折扣])/100)*100。

本例到那个地址只是计算出了每一个定单ID中每种产品的总价,而咱们要统计出的是每一个定单ID中所有产品总价的和,因此咱们要对定单ID进行分组,要用到“共计”行的功能,“共计”行默许是不显示的,可在设计窗体的下半部份右击鼠标,选择“共计”,或单击工具栏上的按钮

,如此都会多出一行共计来,在共计行,可从下拉框中对每一个字段选择相应的操作,能够作为分组依据或条件字段也能够选择聚合函数或其他函数来对字段进行计算,若是要自己写表达式,那么选择表达式。

在本例能够把“定单ID”字段设成份组字段,对“小计”字段要进行求和,只要选成“共计”就能够够了。

罗斯文的例如中并无选用“共计”的功能,而是对“小计”字段设成了“表达式”,而在表达式中加上了求和函数Sum(),大伙儿能够比较一下,用这两种方式生成的查询运行结果都是一样的,而SQL查询的语句也是一样的。

对于表达式如果一开始觉得写起来有些困难的话,可以借助于生成器来生成,生成器中有数据库中的各种对象,操作符以及函数,只要进行选择再修改一下就可以了。

方法是在字段上右击鼠标,从中选择“生成器”,在生成器的下方选择相关参数,计算符等,表达式生成在上方可进行修改。

9.按年度汇总销售额

“按年度汇总销售额”查询为“按年度汇总销售额”报表提供数据,另外“按季度汇总销售额”查询与本查询完全一样,也确实是本查询也能为“按季度汇总销售额”报表提供数据源,按季度的功能是在报表中实现的。

本例要统计出已经发货的各定单的计单ID号及各定单小计金额。

进入设计视图:

查询的数据来自于查询“定单小计”及“定单”表,取“定单”表中的发货日期字段,并按该字段升序排列,另外该字段还设了条件,为“IsNotNull”,那个表达式代表数据不为空,没有填写过发货日期的记录那么为空,代表尚未发货,并排除在外。

10.按金额汇总销售额

       “按年度汇总销售额”查询统计了1997年定单的小计金额在2500元以上的定单,为“按金额汇总销售额”报表提供数据。

进入设计视图:

        查询的数据来自于“客户”,“定单”表及“定单小计”查询。

对小计字段另取名称为“销售金额”,加上条件“>2500”,表示只要定单小计在2500元以上的记录;发货日期加上条件“Between#1997-1-1# and#1997-12-31#”表示只要发货日期在1997年的记录。

两个条件在同一行表示要求同求知足。

 

11.各国雇员销售额

       “各国雇员销售额”查询统计各国雇员的销售情形,为“各国雇员销售额”报表提供数据。

进入设计视图:

        查询的数据来自于“雇员”,“定单”表及“定单小计”查询,发货日期字段的条件为“Between[起始日期]And[终止日期]”,因为表中并无[起始日期]字段,因此运行时,ACCESS会将它看做一个参数,并跳出提示框,[终止日期]同理,在运行时输入正确的参数,并会取得查询结果。

12.各年销售额

     “各年销售额”查询统计某一年的每一个定单的销售情形,为“各年销售额”报表提供数据。

进入设计视图:

       查询的数据来自于“定单”表及“定单小计”查询,年份是个计算字段,用了一个Format()函数,这是一个文本格式函数,具体参数及用法请查看帮忙。

重点来看发货日期的条件设置,那个条件由两部份组成,中间用“And”联结,表示要同时知足前后两个条件,前面一半为“IsNotNull”代表发货日期不能为空,后面一半为“Between[Forms]!

[各年销售额对话框]!

[起始日期]And[Forms]!

[各年销售额对话框]!

[终止日期]”,这也是一个“Betweenand”的用法,只只是里面引用了两个窗体中的参数,[Forms]!

[各年销售额对话框]!

[起始日期]代表“各年销售额对话框”窗体中的“起始日期”中的值,[终止日期]同理,在运行中,若是“各年销售额对话框”窗体是打开的并能读取到相关参数,那么直接给出运行结果,不然象“各国雇员销售额”查询中一样,跳出提示框要求输入。

事实上好多报表都会从窗体或报表中读取一些数据作为报表的计算依据,咱们要熟悉这种参数的设置方式。

 

13.发货单

       “发货单”查询详细统计出每一个定货单的详细信息,包括定单情形,货主情形等,为“发货单”报表提供数据。

进入设计视图:

       那个查询选择的表很多,其实在设计时方式仍是一样的,别离选择如上图的6个表,依照需要选择相应的字段,其中销售人字段是个计算字段,把[姓氏]和[名字]联在一路显示,用到一个联接运算符,总价字段也是一个计算字段,与前面例中的计算方式相同。

关于表中设置的一些属性会在查询中直接带过来,如在相联接的两个表“客户”和“定单”表中有相同的两个字段“客户ID”,如选择“客户”表中的“客户ID”显示的是ID号,而选择“定单”表中的“客户ID”显示的是客户名称,这是由于“定单”表中的该字段设了查阅属性的缘故,只是字段中实际存储的值都是一样的,只是阻碍显示,可依照需要从相关表当选择相应字段。

在那个查询中在“共计”行对每一个字段都采纳了“分组”,其实如此的成效和排序是一样的,如不用“分组”而对每一个字段依次进行排序,运行的结果也是一样的。

固然若是需要分组计算时,那么是不可替代的。

14.各类销售额

      “各类销售额”查询为“各类销售额”报表提供数据,统计了1997年各类产品的销售情形。

进入设计视图:

       那个查询的数据来自于3个表及一个“扩展定单明细”查询,查询中对类别及产品名称进行了多级分类,再对分类后的产品求出销售总金额。

因此在查询中“类别ID”,“类别名称”及“产品名称”字段的“共计”行都设为分组字段,总价字段是计算字段要进行求和,因此设成“共计”,另取名称为“产品销售额”。

在这种多级分类统计的查询中一样能够设置条件,本例中的订购日期,不要显示,只是作为条件字段,因此“共计”行设为“条件”,条件为“Betweenand”的名型,查询出1997年的数据。

 

15.1997年产品销售额

       “1997年产品销售额”查询统计出不同类别的产品在不同季度的销售额,为“1997年各类销售总额”查询提供数据。

进入设计视图:

       查询的数据来自于上图中的四个表,其中“发货季度”字段是个计算字段,用到了一个日期函数DatePart(),具体的参数和用法能够查看帮忙,在本例中取日期中的季度,结果为1-4中的一个值,后面加上一个联接字符串,现加上季度,能够形成“1季度”如此的字符串。

在“共计”行:

需要分组的字段“类别名称”,“产品名称”,“发货季度”设成“分组”,而且分类应是有前后的,大类放在前面;需要设置条伯的字段“发货日期”设成“条件”;需要计算的计算的字段“产品销售额”设成“表达式”。

16.1997年各类销售总额

        “1997年各类销售总额”查询以“1997年的总销售额”查询为数据,进一步查询出每种类别的销售总额,比较简单,详见设计视图:

       其实本例也不必然非要通过“1997年的总销售额”查询来产生。

也能够如以下图设置生成,运行结果也是完全一样的。

 

17.高于平均价钱的产品

       “高于平均价钱的产品”查询,以产品平均价钱作为衡量依据,统计出比平均价钱高的产品。

        进入设计视图:

        那个查询的数据来自于“产品”表,选择的字段也很简单,只有两个“产品名称”与“单价”,那个查询的关键在于设置“单价”字段的条件,并非是所有的产品都显示出来,单价大于平均价的才显示出来,条件顶用到比较运算符“>”,平均价钱哪里来呢,在本例顶用了一个SQL查询语句,也叫子查询。

象这种在条件中包括SQL语句的查询叫嵌套查询,能够进行多层嵌套。

用“SelectAVG([单价]From产品”来求出产品表中所有单价的平均值。

本例的条件中若是不用子查询,改用函数也是能够的,能够改成“>DAvg("单价","产品")”。

18.各城市的客户和供给商

“各城市的客户和供给商”查询是一个联合查询,它将“客户”表和“供给商”表的信息联合在一路,查询出每一个城市的客户及供给商。

联合查询由多个Select语句组成,各语句之间用关键字“UNION”联接起来。

要求在第一个查询语句中就要列出所有的字段,字段名也以第一个查询中的为准,后面各查询语句中所用的字段的个数,数据类型,顺序都要与第一个查询中相同。

本例中的查询语句如下:

Select城市,公司名称,联系人姓名,"客户"AS[关系]

FROM客户

UNIONSelect城市,公司名称,联系人姓名,"供给商"

FROM供给商

ORDERBY城市,公司名称;

前两行中是第一个查询语句:

从“客户”表当选择“城市”、“公司名称”、“联系人姓名”,另加一个字段“关系”,以字符串“客户”作为“关系”字段的值。

第三每四行中包括“UNION”关键字及第二个查询语句:

从“供给商”表当选择“城市”、“公司名称”、“联系人姓名”,另加一个字段,以字符串“客户”作为字段的值,那个地址字段名省略,因为默许会取第一个查询语句中的字段名。

最后一行是个将查询出来的结果依照城市和公司名称的升顺来进行排序。

19.各类产品的季度定单

   “各类产品的季度定单”查询是一个交叉表查询,它以行列交叉的行形列出不同产品,不同客户在1997年的各个季度中所有的订购额。

为“季度定单”子窗体提供数据。

   一样简单的交叉表查询能够利用“交叉表查询向导”来生成,只是本例中的数据来源于多个表,还有计算字段,因此需要在设计视图中创建。

进入设计视图:

   查询的数据来自于“定单”,“定单明细”,“产品”表。

要实现交叉表查询,需要从菜单“查询”当选择“交叉表查询”,如此就会在设计视图的下半部份多出“共计”行及“交叉表”行而少了一行“显示”。

因为交叉表需要在行列的交叉处显示汇总结果,而那个结果那么是依照行列的多重分组计算出来的。

然后选择相应的字段,在“交叉表”行及“合计”行中对各字段进行设置:

本例中“产品名称”,“客户ID”,“订购年份”作为行题目,其中“订购年份”字段顶用到“Year()”函数,代表取订购日期中的年份的值;订购年份后面一个字段用来作为列题目,该字段也是一个计算字段,用到一个“DatePart()”函数,及“&”联合运合符。

显示的结果为"第1季度","第2季度","第3季度","第4季度"四个中的一个;“产品金额”设置为“值”是个计算字段,计算方式同前面的查询;关于分组计算来讲,交叉表中的行与列是分组依据,值是计算结果,即共计行的设置是:

“产品名称等前4个字段设成“分组”,“产品金额”设为表达式。

“订购日期”是个条件这段,并非显示,条件为1997年的数据。

可双击查询查看运行结果,对照生成的结果来查看设置的具体成效。

到那个地址查询也全数终止了,只有少数几个没看,没有新的知识点,因此略过了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1