二级ACCESS讲义之查询.docx
《二级ACCESS讲义之查询.docx》由会员分享,可在线阅读,更多相关《二级ACCESS讲义之查询.docx(13页珍藏版)》请在冰豆网上搜索。
二级ACCESS讲义之查询
第3章查询
3.1查询概述
·查询是Access数据库中的一个重要对象,是使用者按照一定条件从Access数据库表或已建立的查询中检索需要数据的最主要方法。
一、查询的功能
1、选择字段:
在查询中,选择表中的部分字段。
2、选择记录:
根据指定的条件查找所需的记录,并显示找到的记
3、选择记录:
利用查询添加、修改和删除表中记录。
4、实现计算:
在建立查询时进行各种统计计算。
5、建立新表:
利用查询得到的结果建立新表。
6、为窗体、报表或数据访问页提供数据
·查询对象不是数据的集合,而是操作的集合。
查询的运行结果是一个数据集合,也称为动态集。
它很像一张表,但并没有被存储在数据库中。
创建查询后,保存的只是查询的操作,只有在运行查询时,Access才会从查询数据源表的数据中抽取出来并创建它;只要关闭查询,查询的动态集就会自动消失。
二、查询的类型:
在Access中,查询分为5种,分别是选择查询、交叉表查询、参数查询、操作查询和SQL查询。
5种查询的应用目标不同,对数据源的操作方式和操作结果也不同。
(一)选择查询
1、选择查询是最常用的查询类型。
顾名思义,它是根据指定条件,从一个或多个数据源中获取数据并显示结果。
也对记录进行分组,并且对分组的记录进行总计、计数、平均以及其他类型的计算。
2、如,查找1992年参加工作的男教师,统计各类职称的教师人数等。
(二)交叉表查询
1、交叉表查询将来源于某个表或查询中的字段进行分组,一组列在数据表左侧,一组列在数据表上部,然后在数据表行与列的交叉处显示数据源中某个字段统计值。
2、如,统计每个系男女教师的人数,要求行标题显示系名,列标题显示性别,表的交叉处显示统计的人数。
(三)参数查询
1、参数查询是一种根据使用者输入的条件或参数来检索记录的查询。
2、如,可以设计一个参数查询,提示输入两个成绩值,然后Access检索在这两个值之间的所有记录。
(四)操作查询
1、操作查询与选择查询相似,都需要指定查找记录的条件,但选择查询是检查符合特定条件的一组记录,而操作查询是在一次查询操作中对所得结果进行编辑等操作。
2、操作查询有4种:
生成表、删除、更新和追加。
(五)SQL查询:
是使用SQL语句来创建的一种查询,包括联合查询、传递查询、数据定义查询和子查询。
1、联合杳询是将一个或多个表、一个或多个查询的字段组合为查询结吴巾的一个字段,执行联合查询时,将返回所包含的表或查询中的对应字段记录;
2、传递查询是直接将命令发送到ODBC数据库,它使用服务器能接受的命令,利用它可检索或更改记录;
3、数据定义查询可以创建、删除或更改表,或在当前的数据库中创建索引;
4、子查询是包含另一个选择或操作查询中的SQLSELECT语句,可以在查询设计网格的“字段”行输入这些语句来定义新字段,或在“准则”行来定义字段的准则。
三、查询的条件
1、运算符:
运算符是构成查询条件的基本元素。
Access提供了关系运算符,逻辑运算符和特殊运算符3种。
关系运算符
说明
=
等于
、,<>
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
逻辑运算符
说明
Not
当Not连接的表达式为真时,整个表达式为假
And
当And连接的表达式都是真的,整修表达式为真,否则为假
Or
当Or连接的表达式有一个为真时,整个表达式为真,否则为假
关系运算符
说明
In
用于指定一个字段值的列表,列表中的任一个值都可与查询的字段相匹配。
Between
用于指定一个字段值的范围,指定的范围之间用And连接。
Like
用于指定查找文本字段的字符模式,在所定义的字符模式中,用“?
”表示该位置可匹配任何一个字符;用“*”表示该位置可匹配零或多个字符;用“#”表示该位置可匹配一个数字;用方括号描述一个范围,用于表示可匹配的字符范围。
IsNull
用于指定一个字段为空
IsNotNull
用于指定一个字段为非空。
2、函数(简单介绍几个):
Access提供了大量的标准函数,如数值函数、字符函数、日期时间函数和统计函数等。
函数
说明
Abs
返回数值表达式值的绝对值。
Int
返回数值表达式值的整数部分。
Srq
返回数值表达式值的平方根。
Sgn
返回数值表达式的符号值。
3、使用数值作为查询条件
4、使用文本值作为查询条件
5、使用计算或处理日期结果作为查询条件
6、使用字段的部分值作为查询条件
7、使用空值或空字符串作为查询条件
注意:
在条件中字段名必须用方括号括起来;数据类型必须与对应字段定义的类型相符合。
3.2创建选择查询
·根据指定条件,从一个或多个数据源中获取数据的查询称为选择查询。
创建创建选择查询的方法有两种:
查询向导和设计视图。
一、使用查询向导:
使用查询向导创建查询,操作者可以在向导指示下选择一个或多个表、一个或多个字段,但不能设置查询条件。
例:
查找“教师”表中的记录,并显示“姓名”、“性别”、“工作时间”和“系别”4个字段。
注意:
1、在数据表视图显示查询结果时,字段的排列顺序与在“简单查询向导”对话框中选定字段的顺序相同。
故在选定字段时,应考虑按照字段的显示顺序选取。
2、当所建查询的数据源来自于多个表时,应建立表之间的关系。
二、使用“设计”视图
(一)查询“设计”视图
1、在Access中,查询有5种视图:
设计视图、数据表视图、SQL视图、数据透视表视图和数据透视图视图。
2、在设计视图中,既可以创建不带条件的查询,也可以创建带条件的查询,还可以对已建查询进行修改。
三、在查询中进行计算
(一)查询中的计算功能:
在Access查询中,可以执行两种类型的计算,预定义计算和自定义计算。
1、预定义计算即“总计”计算,是系统提供的用于对查询中的记录组或全部记录进行的计算,它包括总计、平均值、计数、最大值、最小值、标准偏差或方差等。
2、自定义计算使用一个或多个字段的值进行数值、日期和文本计算。
对于自定义计算,必须直接在“设计网格”中创建新的计算字段,创建方法是将表达式输入到“设计网格”中的空字段单元格,表达式可以由多个计算组成。
(二)总计查询:
总计查询是在成组的记录中完成一定计算的查询。
使用查询设计视图中的“总计”行,可以对查询中全部记录或记录组计算一个或多个字段的统计值。
例:
统计1992年参加工作的教师人数。
(三)分组总计查询:
将记录进行分组,对每个组的值进行统计。
分组统计时,应在该字段的“总计”行上选择“分组”。
例:
计算各类职称的教师人数。
(四)添加计算字段:
添加的新字段值是根据一个或多个表中的一个或多个字段并使用表达式计算得到,也称为计算字段。
例:
查找平均分低于所在班平均分的学生并显示其班级号、姓名和平均成绩。
假设,班级号为“学生编号”中的前8位。
3.3交叉表查询
一、认识交叉表查询
1、所谓交叉表查询,就是将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的2、与Excel中的数据透视表一样
二、使用“交叉表查询向导”
例:
创建一个交叉表查询,统计每班男女生人数。
注意:
使用向导创建交叉表的数据源必须来自于一个表或一个查询。
如果数据源来自多个表,可以先建立一个查询,然后以此查询作为数据源。
三、使用“设计”视图
例:
创建交叉表查询,使其统计各班男生平均成绩和女生平均成绩。
·当所建“交叉表查询”数据来源于多个表或查询时,使用设计视图。
当所用数据源来自于一个表或查询,使用“交叉表查询向导”。
如果“行标题”或“列标题”需要通过建立新字段得到,使用设计视图。
3.4 参数查询
·参数查询利用对话框,提示输入参数,并检索符合所输参数的记录。
可以创建一个参数提示的单参数查询,也可以创建多个参数提示的多参数查询。
一、单参数查询:
创建单参数查询,即指定一个参数。
在执行单参数查询时,输入一个参数值。
例:
按学生姓名查找某学生的成绩,并显示“学生编号”、“姓名”、“课程名称”及“成绩”等。
二、多参数查询:
创建多参数查询,即指定多个参数。
在执行多参数查询时,需要依次输入多个参数值。
例:
建立一个查询,使其显示某班某门课的学生“姓名”和“成绩”。
3.5操作查询
一、操作查询是指仅在一个操作中更改许多记录的查询。
如在一个操作中删除一组记录,更新一组记录等。
二、操作查询包括生成表查询、删除查询、更新查询、追加查询等。
1、生成表查询:
生成表查询是利用一个或多个表中的全部或部分数据创建新表。
2、删除查询:
从一个或多个表中删除指定的数据。
3、更新查询:
对一个或多个表中的记录进行更新。
4、追加查询:
从一个或多个表中将一组记录追加到另一个或多个表中。
注意:
无论哪一种操作查询,都可以在一个操作中更改许多记录,并且在执行操作查询后,不能撤消刚刚做过的更改操作。
因此在执行操作查询之前,最好单击工具栏上的“视图”按钮,预览即将更改的记录。
另外,在使用操作查询之前,应该备份数据。
3.6创建SQL查询
一、查询与SQL视图
1、在Access中,一个查询都对应着一个SQL语句,查询对象的实质是一条SQL语句。
2、当使用设计视图建立一个查询时,Access在后台就会构造一个等价的SQL语句。
二、SQL语言简介
(一)SQL(StructuredQueryLanguage,结构化查询语言)是数据库领域中应用最为广泛的数据库查询语言。
(二)SQL的特点:
1、SQL是一种一体化语言,包括数据定义、数据查询、数据操纵和数据控制等方面的功能,可以完成数据库活动中的全部工作。
2、SQL是一种高度非过程化语言,只需描述“做什么”,不需说明“怎么做”。
3、SQL是一种非常简单的语言,所用语句很接近于SQL是一个共享语言,全面支持客户机/服务器结构。
(三)SQL语句,SQL语句的功能包括:
查询、操纵、定义和控制。
SQL功能
动词
SQL功能
动词
数据定义
CREATE,DROP,ALTER
数据查询
SELECT
数据操作
INSTER,UPDATE,DELETE
数据控制
CRANT,REVOTE
(四)CREATE语句
·格式:
CREATETABLE<表名>
(<字段名1><数据类型>[列完整性约束条件],
[<字段名2><数据类型>[列完整性约束条件]]……)
例:
建立一个“雇员”表,包括雇员号、姓名、性别、出生日期、部门,备注字段。
CREATETABLE雇员
(雇员号CHAR(8)SMALLINTPrimaryKey,
姓名CHAR(4)NotNull,性别CHAR
(1),
出生日期DATE,部门CHAR(20)),备注MEMO;
(五)ALTER语句
1、格式:
ALTERTABLE<表名>
[ADD<新字段名><数据类型>[字段级完整性约束条件]]
[DROP[<字段名>]…….]
[ALTER<字段名><数据类型>]
(1)其中,<表名>是指需要修改的表的名字,ADD子句用于增加新字段和该字段的完整性约束条件,DROP子句用于删除指定的字段,ALTER子句用于修改原有字段属性。
例:
在“雇员”表中增加一个字段,字段名为“职务”,数据类型为“文本”;将“备注”字段删除;将“雇员号”字段的数据类型改为文本型,字段大小为8。
①添加新字段的SQL语句为:
ALTERTABLE雇员ADD职务CHAR(10);
②删除“备注”字段的SQL语句为:
ALTERTABLE雇员DROP备注;
③修改“雇员号”字段属性的SQL语句为:
ALTERTABLE雇员ALTER雇员号CHAR(8);
(六)DROP语句
·格式:
DROPTABLE<表名>
例:
删除已建立的“雇员”表
DROPTABLE雇员;
(七)INSERT语句
·格式:
INSERT
INTO<表名>[(<属性名1>[,<属性名2>…])]
VALUES(<常量1>)[,<常量2>]…);
例:
将一条新记录插入到“雇员”表中
INSERTINTO雇员VALUES(“0001”,“张磊”,“男”,#1960-1-1#,“办公室”);
例:
将一条新记录插入到“雇员”表中,其中“雇员号”为“0002”,“姓名”为“王宏”,“性别”为“男”
INSERTINTO雇员(雇员号,姓名,性别)VALUES(“0002”,“王宏”,“男”);
注意:
文本数据应用双引号括起来。
日期数据应用“#”号括起来。
(八)UPDATE语句
·格式:
UPDATE<表名>
SET<列名>=<表达式>[<列名>=<表达式>]…
[WHERE<条件>];
例:
将“雇员”表张磊的出生日期改为“1960-1-11”
UPDATE雇员SET出生日期=#1960-1-11#
WHERE姓名=“张磊”;
(九)DELETE语句
·格式:
DELETE
FROM<表名>
[WHERE<条件>];
例:
将“雇员”表中“雇员号”为“0002”的记录删除
DELETEFROM雇员WHERE雇员号=“0002”;
(十)SELECT语句
·格式:
SELECT[ALL|DISTINCT]*|<字段列表>FROM<表名1>[,<表名2>]…
[WHERE<条件表达式>]
[GROUPBY<字段名>[HAVING<条件表达式>]]
[ORDERBY<字段名>[ASC|DESC]];
·其中All(默认):
返回全部记录;Distinct:
略去选定字段中重复值的记录;From:
指明字段的来源,即数据源表或查询;Where:
定义查询条件;GroupBy:
指明分组字段,Having:
指明分组条件,必须跟随GroupBy使用;OrderBy:
指明排序字段,Asc|Desc:
排序方式,升序或降序。
例:
查找并显示“教师”表中“姓名”、“性别”、“工作时间”和“系别”4个字段
SELECT姓名,系别,工作时间,系别FROM教师;
例:
查找1992年参加工作的男教师,并显示“姓名”、“性别”、“学历”、“职称”、“系别”和“联系电话”
SELECT姓名,性别,学历,职称,系别,联系电话FROM教师WHERE性别=“男“AND工作时间>=#1/1/1992#;
三、创建SQL特定查询
·SQL特定查询分为联合查询、传递查询、数据定义查询和子查询等4种。
其中联合查询、传递查询、数据定义查询不能在查询“设计”视图中创建,必须直接在“SQL”视图中创建SQL语句。
对于子查询,要在查询设计网络的“字段”行或“条件”行中输入SQL语句。
1、联合查询:
联合查询是将一个或多个表、一个或多个查询组合起来,形成一个完整的查询。
执行联合查询时,将返回所包含的表或查询中对应字段的记录。
2、传递查询:
传递查询是自己并不执行而是传递给另外一个数据库来执行的查询。
传递查询可直接将命令发送到ODBC数据库服务器中,如SQLServer。
使用传递查询时,不必与服务器上的表链接,就可以直接使用相应的表。
例:
查询SQLServer数据库(名为“教学管理系统”)中“教师”表和“课程”表的信息,显示姓名,系别和课程名称字段的值。
注意:
如果将传递查询转换为另一种类型的查询,例如选择查询,将丢失输入的SQL语句。
如果在“ODBC连接字符串”属性中没有指定连接串,或者删除了已有字符串,Access将使用默认字符串“ODBC”,并且在每次运行查询时,提示连接信息。
3、数据定义查询:
数据定义查询与其他查询不同,利用它可以直接创建、删除或更改表,或者在当前数据库中创建索引。
在数据定义查询中要输入SQL语句,每个数据定义查询只能由一个数据定义语句组成。
4、子查询:
在对Access表中的字段进行查询时,可以利用子查询的结果进行进一步的查询。
不能将子查询作为单独的一个查询,必须与其他查询相结合。
3.7编辑和使用查询
一、运行已创建的查询
1、通过工具栏上的“执行”按钮
2、通过“数据库”窗口中“查询”对象下的“打开按钮”
3、鼠标双击要运行的查询
二、编辑查询中的字段
1、添加字段
2、删除字段
3、移动字段
三、编辑查询中的数据源
1、添加表或查询
2、删除表或查询
四、调整查询的列宽
·调整列宽的方法是:
打开要修改查询的设计视图,将鼠标指针移到要更改列的字段选择器的右边界,使鼠标指针变成双向箭头,拖动鼠标改变列的宽度,双击鼠标可将其调整为“设计网格”中可见输入内容的最大宽度。
五、排序查询的结果:
通过排序,查询中的记录指定顺序排列,可使显示的记录清晰、一目了然。
例:
对例3.10的查询结果按成绩从低到高的顺序排列。