《计算机基础与Access数据库程序设计4》ppt课件(全).ppt
计算机基础与计算机基础与Access数据库程序设计数据库程序设计第第4章章 查询查询计算机基础与Access数据库程序设计4ppt课件(全)目目 录录4.1 关于查询的基础知识关于查询的基础知识4.2用向导建立查询用向导建立查询4.3用查询设计器建立查询用查询设计器建立查询 计算机基础与Access数据库程序设计4ppt课件(全)4.1关于查询的基础知识关于查询的基础知识 4.1.1 查询及其分类查询及其分类 依据查询的特点可以把查询分为多种类型,常见的查询类型有选择查询、交叉表查询、参数查询、操作查询和SQL查询等。1.选择查询选择查询 从一个或多个相互关联的表中查找符合条件的记录的查询称为选择查询。选择查询可以对结果记录直接输出或进行分类汇总统计等处理。利用选择查询可以解决绝大多数的数据检索问题,例如,查询每门课程的课程信息及选课信息的查询就属于选择查询(无选择条件),查询某门课程的课程信息和选课信息则是增加了查询条件的选择查询。计算机基础与Access数据库程序设计4ppt课件(全)选择查询可以用“简单查询向导”、“查找重复项查询向导”、“查找不匹配项查询向导”或查询设计器创建。2.交叉表查询交叉表查询 交叉表查询是指查询结果为对行、列交叉结果进行汇总统计的查询,例如,在“教学管理”数据库中查询每门课程的各民族学生选课人数就属于交叉表查询。交叉表查询可以用“交叉表查询向导”或查询设计器建立。3.参数查询参数查询 查询可以定义查询参数,以便在运行查询(打开查询)时灵活选择查询范围。例如查询学生信息时,如果可以在执行查询时指定具体的出生日期或出生日期范围,查询操作的针对性就会大大提高,这种可以在运行查询时指定查询参数的查询就是计算机基础与Access数据库程序设计4ppt课件(全)参数查询。4.操作查询操作查询 一般而言,查询操作不改变数据库数据。Access可以把对表的插入、删除、更新等操作用查询实现并把这类查询称为操作查询。操作查询包括删除查询、更新查询、追加查询、生成表查询等。删除查询用于删除符合条件的记录;更新查询用于更新符合条件的记录;追加查询用于向表中添加新记录;生成表查询用于建立新的数据库表。5.SQL查询查询 SQL是结构化查询语言(Structured Query Language)的缩写,是关系数据库的标准操作语言,利用SQL语言可以实现关计算机基础与Access数据库程序设计4ppt课件(全)系数据库的所有操作。Access中建立的所有查询都对应于一个SQL命令(语句)。对于一些常见的查询而言,可以用查询向导或查询设计器建立,可以在SQL视图中查看自动生成对应的SQL语句。对于某些复杂的查询,用查询向导或查询设计器可能无法创建,必须用SQL命令直接建立这样的查询,Access的“SQL特定查询”就是这类查询。可以通过直接输入查询所对应的SQL语句来建立查询,这就是SQL查询。4.1.2 查询中的表达式、函数查询中的表达式、函数 一般把实现某种运算的式子叫做表达式。各种类型的运算量都可以通过相应的表达式进行运算处理。Access中常用的表达式有算术表达式、字符表达式、日期表达式、关系表达式、计算机基础与Access数据库程序设计4ppt课件(全)逻辑表达式等。1.算术表达式算术表达式 算术表达式是由算术运算符连接数值型(数字型、货币型)运算量(常量、字段或函数)组成的有运算意义的式子。算术表达式的运算结果是一个数值。Access算术运算符如表4-1所示。需要特别注意:乘方、取模运算,乘方运算符不可以用两个连续的乘号表示,取模运算的运算符是Mod(在表达式中Mod运算符两端必须留空格符)。算术表达式的计算次序是最内层括号优先计算,然后逐级向外层括号展开,在同级括号内,按“先乘方、再乘除之后整除、然后取模、最后加减”的顺序进行计算,如果运算级别相同(乘和除,加和减),则从左到右计算。计算机基础与Access数据库程序设计4ppt课件(全)2.字符表达式字符表达式 字符串只能进行连接运算,运算符为“+”和“&”两种,其作用相同。连接运算是把第二个字符串(常量、字段或函数)接续到第一个字符串(常量、字段或函数)末尾形成一个结果字符串的运算。例如,AAA&Abc的结果是字符串AAAAbc。再比如,民族+族,其运算结果是在民族字段值之后连接一个“族”字(tStudent表民族字段值均省略了“族”字)。“+”运算符只能连接两个字符串,“&”运算符则可以连接不同类型的运算量。&运算时,首先把非字符串类型的运算量转换为字符串,然后再连接相应的字符串。3.日期表达式日期表达式 日期表达式有如下几种类型:u 日期型量(常量、字段或函数)加上一个整型值n,结果计算机基础与Access数据库程序设计4ppt课件(全)为从相应日期起,n天后的日期;u 日期型量(常量、字段或函数)减去一个整型值n,结果为从相应日期起,n天前的日期;u 两个日期(常量、字段或函数)相减,结果是二者之间相差的天数。4.关系表达式关系表达式 关系表达式是由关系运算符连接两个同类型运算量(常量、字段或函数)所形成的有运算意义的式子。关系运算表达式中可以包含圆括号。关系运算符连接的运算量中如果包含算术表达式、字符连接表达式、日期表达式,则这些表达式优先计算。包含括号时,优先计算内层括号内的式子。计算机基础与Access数据库程序设计4ppt课件(全)关系表达式的结果为“真”(用True表示)或“假”(用False表示)。当比较条件成立时,运算结果为True,否则运算结果为False。需要注意的是字符串之间的关系运算,ASCII字符按其字符编码大小进行比较,汉字是按选项设置中设置的“新建数据库排序次序”进行比较的。5.逻辑表达式逻辑表达式 逻辑表达式是由逻辑型运算量(True、False、是/否型字段或函数、关系表达式)和逻辑运算符组成的、有运算意义的式子。逻辑运算符已经在节介绍过,在此不再赘述。为清晰和安全起见,在输入逻辑运算符时,一般在运算符前后需要各留一个空格。计算机基础与Access数据库程序设计4ppt课件(全)6.区间判断区间判断 区间判断适用于任何数据类型的表达式,其语法格式如下:Not Between And 当表达式结果大于或等于区间下界值并且小于或等于区间上界值时,表达式结果为True,否则为False。例如,下列表达式:出生日期出生日期 Between#1992/1/1#And#1994/1/1#当记录的出生日期字段值在1992年1月1日至1994年1月1日之间(含边界值)时,返回结果为True。7.子集合判断子集合判断子集合判断同样适用于任何数据类型的表达式,其语法格式如计算机基础与Access数据库程序设计4ppt课件(全)下:Not IN ()如果表达式结果存在于集合元素列表中则判断结果为True,否则为False。子集合判断特别适合于取值较多且不连续的情况,这时用逻辑表达式表示会很复杂。8.字符串匹配、空值判断字符串匹配、空值判断 字符串匹配运算用于测试指定字符串表达式的值是否与指定匹配字符串匹配,其语法结构如下:Not Like 如果表达式与匹配字符串匹配则运算结果为True,否则运算结果为False。计算机基础与Access数据库程序设计4ppt课件(全)空值判断语法格式如下:Is Not Null 未选择Not选项时,如果表达式的值是空值,则返回True,否则返回False。选择了Not选项时,运算结果正好相反。9.表达式计算次序表达式计算次序 Access中的表达式一般比较简单,如果表达式中包含多种运算,可以使用圆括号指定计算次序。圆括号可以嵌套使用,计算时,优先计算内重括号,逐次扩展计算外层括号。同级括号内先计算函数,然后计算算术表达式、字符表达式、日期表达式,之后进行关系运算、区间判断、集合判断、字符串匹配判断和空值判断,最后进行逻辑运算。计算机基础与Access数据库程序设计4ppt课件(全)10.常用函数常用函数 函数是系统提供的、可以直接在表达式中使用的预定义运算。常用的函数如表4-2、表4-3所示,表中函数需要熟记并能熟练应用。【例【例4-1】tStudent表中保存的是大学生记录,显然,学生入学时有一个合理的年龄范围,怎样控制出生日期的合理性呢?假定学生的年龄在1065岁之间。【解答】【解答】当前的系统时间可以由函数Date()得到,Date()10*365约是10年以前,同样,Date()65*365约是65年以前。定义“出生日期”字段的字段有效性规则如下:=Date()-65*365 And =DateSeral(Year(Date()-65,1,1)And =DateSeral(Year(Date()-10,1,1)本表达式把出生日期控制在65年前的1月1日至10年前1月1日之间,基本上可以把学生入学年龄控制在合理的范围。4.1.3 SQL SELECT语句语句 典型的SQL SELECT语句语法格式如下:SELECT ALL|DISTINCT FROM|WHERE GROUP BY HAVING ORDER BY ASC|DESC ,ASC|DESC 计算机基础与Access数据库程序设计4ppt课件(全)通常,SQL语句的关键字字母全部大写。选择ALL选项输出所有查询结果行,选择DISTINCT选项将过滤掉查询结果中重复出现的行;输出表达式序列是用逗号分隔的字段运算表达式列表,可以指定输出列的列名;查询对象列表中给出每个要查询的表;JOIN选项用于进行多表连接查询;WHERE选项用于指定查询结果行的过滤条件,只有满足条件的结果行才被输出;GROUP BY选项用于对查询结果行进行分组统计处理,分组字段列表值相同的结果行将被作为一个统计分组进行汇总;HAVING选项只能与GROUP BY选项结合使用,其作用是把分组结果中满足筛选条件的分组保留下来,其他不满足条件的分组则不予输出;ORDER BY选项用于结果排序,查询结果可以按指定的排序字段值升序(选ASC)或降序(选DESC)排列,当指定多个排序字段时,依次按第一个字段的指定顺序排序,第一计算机基础与Access数据库程序设计4ppt课件(全)个字段值相同时继续按第二个字段值顺序排序,依此类推。SQL语句(包括SQL SELECT语句)可以在一行内或多行书写,关键字、逻辑运算符等与其他语法内容之间须留有空格。在SQL语句中,字段名可以不加方括号。1.输出表达式输出表达式 输出表达式可以是字段(列)名、字段(列)名表达式、星号。当输出表达式为字段名时,对应输出列的显示标题即为该字段的字段名(或指定的标题)。如果输出表达式是一个字段运算表达式,对应输出列的显示标题由系统指定。可以在命令中指定显示标题,格式如下:AS 【例4-2】用SQL SELECT语句查询每个学生的学号、姓名、计算机基础与Access数据库程序设计4ppt课件(全)性别、年龄、民族。【解答】显然,tStudent表中没有“年龄”字段,因此需要计算求得年龄。实际上,年龄可以通过当前年度减去出生日期年度计算求得,符合要求的SQL SELECT语句为:SELECT 学号学号,姓名姓名,性别性别,Year(Date()-Year(出生日期出生日期)AS 年龄年龄,民民族族FROM tStudent查询结果查询结果计算机基础与Access数据库程序设计4ppt课件(全)在查询设计器中运行SQL语句的方法如下:(1)在数据库操作界面中选择“查询”对象;(2)双击对象显示子窗口中的“在设计视图中创建查询”,系统打开查询设计视图并立即打开“显示表”对话框,用于向查询设计视图中添加表/查询,如下图所示;计算机基础与Access数据库程序设计4ppt课件(全)(3)关闭“显示表”对话框,然后右击查询设计视图窗口上部空白处,在弹出的快捷菜单中选择“SQL视图”命令,或选择“视图”“SQL视图”命令,系统自动打开SQL语句设计器视图,直接在视图中输入上述SQL SELECT语句,如下图所示。语句末尾一般要加一个分号作为语句结束符,不加亦可;计算机基础与Access数据库程序设计4ppt课件(全)(4)单击“运行”按钮,或选择“查询”“运行”命令,均可运行查询,选择“视图”“SQL视图”命令可以切换回SQL语句设计器视图;(5)单击SQL语句设计器视图窗口中的“关闭”按钮,系统显示保存查询提示对话框,可以选择保存设计好的查询。如果查询某个表的所有字段,不必依次列出所有字段,用星号即可,例如,下列语句可以查询输出tStudent表的所有信息:SELECT *FROM tStudent 查询结果中可能有重复的输出结果行,在输出表达式列表之前选择DISTINCT选项可以去掉重复的行,例如,下面计算机基础与Access数据库程序设计4ppt课件(全)的语句将只输出“男”、“女”两种性别,如下图所示。SELECT DISTINCT 性别性别 FROM tStudent2.查询对象列表查询对象列表 如果查询对象只有一个,不需要JOIN选项。有多个查询对象时,可以选择查询对象列表,也可以选择JOIN选项。查询对象列表中有多个查询对象时,先生成这些查询对象的笛计算机基础与Access数据库程序设计4ppt课件(全)卡尔积。例如,下列语句将输出tTeacher表、tCourse表的笛卡尔积,如下图所示。SELECT *FROM tTeacher,tCourse计算机基础与Access数据库程序设计4ppt课件(全)选择查询对象列表时,SQL SELECT语句的执行过程如下:(1)读取查询对象列表中指定的表,执行笛卡尔积操作;(2)选取满足WHERE选项中给出的条件(逻辑表达式)的结果行;(3)按GROUP BY选项中指定的分组字段(或字段组合)对满足WHERE条件的结果行进行分组统计,如果有HAVING选项,就只保留那些满足HAVING选项中筛选条件(逻辑表达式)的统计结果行;(4)按给定的输出表达式列表计算输出结果行并按ORDER选项中的排序字段及排序方式输出结果行。计算机基础与Access数据库程序设计4ppt课件(全)3.JOIN选项选项 JOIN选项用于进行连接操作,其语法格式如下:INNER|LEFT|RIGHT|FULL JOIN ON JOIN选项包括以下几种:(1)内连接(INNER JOIN);(2)左连接(LEFT JOIN);(3)右连接(RIGHT JOIN);(4)全连接(FULL JOIN)。常用的连接是内连接(INNER JOIN),用内连接可以实现前述用WHERE条件实现的多表操作。计算机基础与Access数据库程序设计4ppt课件(全)内连接操作是把查询对象1的表行和查询对象2的表行中,满足连接条件的对应行连接起来作为结果行。【例4-3】用SQL SELECT语句查询每个教师的教师号、教师名及任课信息。【解答】要查询教师号、教师名可以在tTeacher表中查询到,而任课信息可以在tCourse表中获得,把tTeacher和tCourse表的表行按教师号相等进行连接即可,语句如下:SELECT *FROM tTeacher INNER JOIN tCourse ON tTeacher.教师号=tCourse.任课教师 运行结果如下页图所示。计算机基础与Access数据库程序设计4ppt课件(全)由上图可以看出,结果行中教师的出生日期、性别、联系电话、基本工资和任课教师(教师号)是要求中不需要的,修改一下输出表达式列表(实际上是进行关系投影操作)即可。SELECT tTeacher.教师号教师号,tTeacher.教师名教师名,tCourse.课程号课程号,tCourse.课程名课程名,tCourse.学时学时FROM tTeacher INNER JOIN tCourse ON tTeacher.教师号教师号=tCourse.任课教师任课教师 当有多个查询对象时,输出表达式列表中的字段需要加表名前缀,没有前缀的星号表示输出所有查询对象的全部列,如计算机基础与Access数据库程序设计4ppt课件(全)果输出某一查询对象的全部列,可以用星号加表名前缀表示。4.WHERE选项选项 选择查询对象列表(无JOIN选项)且有多个查询对象的时候,如果没有WHERE选项,则会输出这些查询对象的笛卡尔积结果中的全部结果行,在这些结果行中,有许多是不合理的或不需要的,只有那些tTeacher表的教师号与tCourse表的任课教师相等的行才是合理的行,可以通过WHERE选项选取那些满足指定条件的行。下列SQL SELECT语句可以实现【例4-3】的相同功能。SELECT tTeacher.教师号教师号,tTeacher.教师名教师名,tCourse.课程号课程号,tCourse.课程名课程名,tCourse.学时学时 FROM tTeacher,tCourseWHERE tTeacher.教师号教师号=tCourse.任课教师任课教师;WHERE选项中的条件表达式可以是关系表达式或逻辑表达式、计算机基础与Access数据库程序设计4ppt课件(全)范围判断、集合判断、字符串匹配判断或空值判断等。【例4-4】查询1993年出生的学生信息。【解答】出生日期是一个时间段,逻辑表达式为“出生日期#12/31/1992#And 出生日期=#1/1/1993#And 出生日期#12/31/1992#And 出生日期出生日期85计算机基础与Access数据库程序设计4ppt课件(全)需要注意的是,在Access中,HAVING使用汇总计算列时必须使用原始统计表达式。如HAVING Avg(成绩)85,不能使用HAVING 平均成绩85。7.ORDER BY选项选项 通过 ORDER BY选项可以指定输出结果行的排列次序。例如,使【例4-8】结果行按平均成绩升序排列的语句如下:SELECT 学号学号,Avg(成绩成绩)AS 平均成绩平均成绩FROM tScoreGROUP BY 学号学号 HAVING Avg(成绩成绩)85ORDER BY Avg(成绩成绩)需要注意的是,在Access中,ORDER BY使用汇总计算列时必须使用原始统计表达式。如ORDER BY Avg(成绩),不能使用ORDER BY 平均成绩。计算机基础与Access数据库程序设计4ppt课件(全)4.1.4 SQL数据更新语句简介数据更新语句简介 数据更新语句包括插入(INSERT)语句、修改(UPDATE)语句和删除(DELETE)语句。1.INSERT语句语句 INSERT语句用于向表中插入记录,其语法格式如下:INSERT INTO ()VALUES()字段名列表中给出的字段名必须包含主键字段和其他所有“必填字段”设置为“是”(即不允许取空值)且未设置默认值的字段,字段顺序可以任意。值列表中给出的值序列必须与字段名列表中的字段名对应一致,即个数、类型、顺序一一对应。如果字段名列表中包含表的全部字段且顺序与表的结构定义顺序相同,则可省略字段名列表,值列表中须给出与结构定义字段计算机基础与Access数据库程序设计4ppt课件(全)类型、顺序、个数对应一致的值序列。插入记录如果违反了关系的有效性规则(字段有效性规则或表有效性规则)或参照完整性规则,则插入操作不被执行。下面的语句向tStudent表添加一条新记录:INSERT INTO tStudent(学号学号,姓名姓名,出生日期出生日期,性别性别,个人特长个人特长,民族民族,定向培养定向培养)VALUES(2011010101,张三张三,#6/9/1994#,男男,击剑击剑,汉汉,True)2.UPDATE语句语句 UPDATE语句用于修改表中的记录,其语法格式如下:UPDATE SET =,=WHERE UPDATE语句会把指定表中所有满足条件的记录的指定字段值替换为对应表达式的值。如果不存在满足条件的记录则什计算机基础与Access数据库程序设计4ppt课件(全)么也不做。下面的语句把刚刚添加的记录的姓名和民族修改为新值:UPDATE tStudent SET 姓名姓名=张三强张三强,民族民族=回回WHERE 学号学号=20110101013.DELETE语句语句 DELETE语句用于删除表中的记录,其语法格式如下:DELETE FROM WHERE 该语句从指定表中删除所有满足条件的记录,如果没有满足条件的记录,则不执行任何删除操作。下列语句从tStudent表删除一条记录(刚刚添加的记录):DELETE FROM tStudent WHERE 学号学号=2011010101计算机基础与Access数据库程序设计4ppt课件(全)4.2 用向导建立查询用向导建立查询 用向导建立查询是最方便、直接的建立查询的方法。Access提供了丰富的查询向导,包括“简单查询”、“查找重复项查询”、“查找不匹配项查询”和“交叉表查询”。4.2.1 简单查询简单查询 打开数据库操作界面后,展开并选中“对象”列表中的“查询”,对象显示子窗口中显示“在设计视图中创建查询”、“使用向导创建查询”以及已建立的所有查询。用“简单查询向导”建立选择查询的操作步骤如下:(1)双击对象显示子窗口中的“使用向导创建查询”或者单击“新建”对象操作工具栏按钮(选择“插入”“查询”菜单亦可),在显示的“新建查询”对话框中选择“简单查询向导”,然后单击“确定”按计算机基础与Access数据库程序设计4ppt课件(全)钮,系统打开“简单查询向导”初始界面(右下图);计算机基础与Access数据库程序设计4ppt课件(全)(2)首先需要选择查询字段。假定依次选择了tCourse表的“课程号”、“课程名”、“任课教师”和tScore表的“学号”、“成绩”;(3)选定字段后,单击“下一步”按钮,向导进入“明细/汇总”选择界面(左下图),选择“明细”单选按钮,单击“下一步”按钮,向导进入“完成”界面(右下图);计算机基础与Access数据库程序设计4ppt课件(全)(4)在“为查询指定标题”文本框输入查询的名字(本例为“课程选修查询”),单击“完成”按钮,即完成了查询设计并关闭对话框。如果关闭之前选中了“打开查询查看信息”,则会打开查询(如图所示),如果关闭之前选中了“修改查询设计”则会打开查询设计器。计算机基础与Access数据库程序设计4ppt课件(全)(5)如果在“明细/汇总”选择界面中选择了“汇总”,界面中的“汇总选项”按钮有效,单击该按钮,将打开“汇总选项”对话框,如图所示;计算机基础与Access数据库程序设计4ppt课件(全)(6)可以选择计算“汇总”(求和)、“平均”值、“最大”值和“最小”值,也可以统计关系子表(本例为tScore表)中的记录总数。选中对应的汇总计算复选框,单击“确定”按钮关闭对话框,返回向导后,单击“下一步”按钮进入“完成界面”,不再赘述。查询结果如下图所示。计算机基础与Access数据库程序设计4ppt课件(全)4.2.2 查找重复项查询查找重复项查询 查找重复项查询可以对结果行的某字段或某几个字段搜索重复值,只有那些有重复值的记录才符合条件,没有重复值的记录将被排除掉。例如,查询哪些课程有考试成绩相同的人,都什么课、什么人考试成绩相同?用“查找重复项查询向导”解决此问题的操作步骤如下:(1)单击“新建”对象操作工具栏按钮,或选择“插入”“查询”命令,在显示的“新建查询”对话框中选择“查找重复项查询向导”,然后单击“确定”按钮,这时,系统打开“查找重复项查询向导”初始界面;(2)初始界面用于选择表或查询,选中“表”单选按钮时,界面中对象列表内显示数据库中的表;选中“查询”单选按钮时,界面中对象列表内显示数据库中的查询;选中“二者”单选按钮计算机基础与Access数据库程序设计4ppt课件(全)时,界面中对象列表内显示数据库中的表及查询。本例要求需要在tScore表中查询,选中“表”单选按钮,单击选中对象列表中的tScore表,单击“下一步”按钮,向导显示重复值字段选择界面(左下图)。“可用字段”列表中包含选定的表的所有字段,从中选择重复值字段到“重复值字段”列表(本例选择“课程号”、“成绩”),单击“下一步”按钮,向导进入其他查询字段选择界面(右下图);计算机基础与Access数据库程序设计4ppt课件(全)(3)不选择其他字段时,查询输出结果为各重复值及计数个数;选择其他字段时,查询输出结果为所有重复字段值记录。选择“学号”字段到“另外的查询字段”列表,单击“下一步”按钮,向导进入“完成”界面,指定查询名称为“考试成绩相同”,单击“完成”按钮关闭向导。如果单击“完成”按钮之前选中了“查看结果”(本例的选择)单选按钮,则向导关闭后立即运行查询,如图所示。计算机基础与Access数据库程序设计4ppt课件(全)4.2.3 查找不匹配项查询查找不匹配项查询 查找不匹配项查询名称比较拗口,但很有实用性。例如,哪些同学没有选修任何课程?这个问题该如何解决呢?如果某个学生的学号在选课表tScore中没有出现过,该同学就一定未选修过任何课程。用“查找不匹配项查询向导”解决此问题的操作步骤如下:(1)单击“新建”对象操作工具栏按钮,或选择“插入”“查询”命令,在显示的“新建查询”对话框中选择“查找不匹配项查询向导”,然后单击“确定”按钮,这时,系统打开“查找不匹配项查询向导”初始界面;(2)首先需要指定查询结果中含有哪个表或查询中的记录,本例要查询未选课的学生,选中tStudent表,单击“下一步”按钮,向导进入子表选择(含有相关记录的表)界面,选择tScore计算机基础与Access数据库程序设计4ppt课件(全)表,单击“下一步”按钮,向导进入匹配字段选择界面(左下图);(3)匹配字段为子表中存在的与主表对应的字段,本例为“学号”字段,在“tStudent表中的字段”列表和“tScore表中的字段”列表中均选中“学号”并单击两个列表中间的匹配按钮(),单击“下一步”按钮,向导进入输出字段选择界面(右下图),从“可用字段”列表中选中“学号”、“姓名”、“性别”、“民族”,单击“下一步”按钮,向导进入“完成”界面;计算机基础与Access数据库程序设计4ppt课件(全)(4)输入查询名称“未选课的学生”,单击“完成”按钮关闭对话框,这里假定选定了“查看结果”单选按钮,打开的查询结果窗口内容如图所示。计算机基础与Access数据库程序设计4ppt课件(全)4.2.4 交叉表查询交叉表查询 交叉表是一种统计分析表格,表格的行、列对应于统计项目,在行、列交叉点单元格显示统计结果,统计内容可以是求和、平均值、最大值、最小值、计数以及其他统计运算等。例如,统计每门课程每个民族的学生选课人数就属于交叉表查询,建立此交叉表的操作步骤如下:(1)交叉表查询向导只能对一个表或查询进行交叉表统计。由于查询内容包含在tStudent和tScore表中,因此需要通过“简单查询向导”建立一个包含tStudent表中“学号”、“姓名”、“出生日期”、“性别”、“民族”和tScore表“课程号”、“成绩”的选择查询(明细查询)并命名为“学生选课查询”;计算机基础与Access数据库程序设计4ppt课件(全)(2)单击“新建”对象操作工具栏按钮,或选择“插入”“查询”命令,在显示的“新建查询”对话框中选择“交叉表查询向导”,然后单击“确定”按钮,这时,系统打开“交叉表查询向导”初始界面,如图所示;计算机基础与Access数据库程序设计4ppt课件(全)(3)交叉表信息必须来源于一个表或查询,选择“学生选课查询”,单击“下一步”按钮,向导进入行标题字段选择界面,如图所示;计算机基础与Access数据库程序设计4ppt课件(全)(4)选中“民族”字段作为行标题字段,单击“下一步”按钮,向导进入列标题字段选择界面,如图所示;计算机基础与Access数据库程序设计4ppt课件(全)(5)选中“课程号”作为列标题,单击“下一步”按钮,向导进入统计字段及统计函数选择界面(左下图),因为是统计选课人数,所以统计字段选择“学号”,统计函数选择“计数”(统计函数因统计字段类型不同而有所区别),单击“下一步”按钮,向导进入“完成”界面,输入查询名称为“课程分民族选修人数统计”,单击“完成”按钮,打开的查询结果窗口如右下图所示。计算机基础与Access数据库程序设计4ppt课件(全)4.3 用查询设计器建立查询用查询设计器建立查询 4.3.1 查询设计器基本操作查询设计器基本操作 打开数据库操作界面后,展开并选中“对象”列表中的“查询”,这时,对象显示子窗口中显示“在设计视图中创建查询”、“使用向导创建查询”以及已建立的所有查询。可以通过下列3种方式打开查询设计器:u 双击“在设计视图中创建查询”;u 单击选中“在设计视图中创建查询”,再单击“设计”对象操作按钮;u 单击“新建”对象操作工具栏按钮,或选择“插入”“查询”命令,系统打开“新建查询”对话框,单击选中对话框中的“设计视图”,然后单击“确定”按钮。计算机基础与Access数据库程序设计4ppt课件(全)执行上述任一操作后均可打开查询设计视图(左下图),同时打开“显示表”对话框(右下图)。“显示表”对话框用于选择来源表或查询。“表”选项卡显示所有的表,“查询”选项卡显示所有的查询,“两者都有”选项卡显示所有的表和查询。单击选中列表框中的表或查询后,单击“添加”按钮即可把相应的表或查询添加到查询设计器中。计算机基础与Access数据库程序设计4ppt课件(全)以建立节【例4-2】查询每个学生的学号、姓名、性别、年龄、民族为例,操作步骤如下:(1)在显示表对话框中选中tStudent表并单击“添加”按钮把tStudent表添加到查询设计器,如下图所示,添加多个表时,系统自动为具有关系定义的主表和子表之间建立关系连线并自动按关联字段相等建立内连接;查询在设计器中的显示方式及作用与表相同。计算机基础与Access数据库程序设计4ppt课件(全)(2)设计器下部表格“字段”行用于设置查询的输出列,双击表或查询中的字段名即可把对应字段添加到字段行,单击选中字段行单元格后,相应单元格即变为下拉列表,从中可以选择字段,也可以直接编辑输入字段表达式,依次选择tStudent表的学号、姓名、性别、年龄、民族(下图)。“表”行指示对应字段来源于哪个表(或查询),排序行用于选择对应字段(或表达式)输出时的排序次序,“显示”行复选框用于指定对应字段(表达式)是否输出显示(选中表示显示);计算机基础与Access数据库程序设计4ppt课件(全)(3)年龄字段需要计算生成。可以编辑输入“字段”行单元格内容以定义输出表达式,本例定义输入为“年龄:Year(Date()-Year(出生日期)”,如图所示,字段定义为表达式时,直接输入表达式即可(字段名需要用方括号括起来)。要指定输出标题,在表达式之前加标题字符序列并与表达式用冒号(英文冒号)分隔;计算机基础与Access数据库程序设计4ppt课件(全)(4)单击设计器关闭按钮,系统显示保存查询提示对话框,单击“是”按钮,确认后继续显示“另存为”对话框,输入查询名称为“年龄查询”,单击“确定”按钮即完成了查询定义。(5)右击刚刚保存的“年龄查询”,在弹出的快捷菜单中选择“打开”命令。或单击选中“年龄查询”后继续单击“打开”按钮,均可运行该查询,其结果与【例4-2】输出结果完全相同。在查询设计器窗口处于活动状态时,单击“运行”按钮或选择“查询”“运行”命令可以立即运行测试查询。之后,选择“视图”“设计视图”命令可以切换回查询设计器状态。4.3.2 添加、删除表添加、删除表/查询查询 在查询设计器窗口可以随时添加或删除表。在查询设计器窗口处于活动状态下,选择“查询”“显示表”计算机基础与Access数据库程序设计4ppt课件(全)命令,或右击查询设计器上部表/查询显示子窗口的空白区域,在弹出的快捷菜单中选择“显示表”命令,或单击“显示表”工具栏按钮,均可打开“显示表”对话框,通过该对话框即可向设计器中添加新的表或查询。单击选中查询设计器中的表或查询,然后选择“查询”“删除表”命令(注意,删除查询时也如此选择),或右击查询设计器中的表或查询,在弹出的快捷菜单中选择“删除表”命令,均可从设计器中删除指定的表或查询,同时会自动删除相关字段定义。查询中包含多个来源表或查询时,需要在这些来源对象之间正确建立关系,相关操作与3.4节相同。计算机基础与Access数据库程序设计4ppt课件(全)4.3.3 字段设置字段设置 查询字段可以是字段名或表达式(常量也可以)。通过字段运算处理可以实现功能要求复杂的查询。1.一般字段设置一般字段设置 添加字段名的方法有如下几种:u 星号表示所有字段,有多个来源表、查询时,星号前可以加表(查询)名前缀,表示相应表(查询)的所有字段;u 双击表或查询中的字段名(包括星号),相应字段名即自动添加到最后一列字段定义之后;u 单击字段名单元格并从弹出的下拉列表中选择字段名;u 先单击选择表,然后选择对应列的字段;u 直接在字段单元格中输入加表或查询名前缀的字段名;计算机基础与Access数据库程序设计4ppt课件(全)u 表达式只能直接在字段行对应单元格中输入,字段名须用方括号括起来。查询对象有多个时字段名须加表(查询)名前缀,输入完成后,如果未指定标题,系统自动添加标题。要删除某一字段名,删除对应的列即可。单击选中待删除列的任一单元格,然后选择“编辑”“删除列”命令即可删除指定列。要插入字段定义,先单击选中待插入位置列的任一单元格,然后选择“插入”“列”命令,即可在选中列之前插入一个空白列。2.合并字段合并字段 可以合并某些字段的全部或部分内容以生成新字段。【例4-9】查询tStudent表,将学号的后6位与姓名合并为一个计算机基础与Access数据库程序设计4ppt课件(全)字段输出,输出标题为“编号姓名”,输出的结果在学号和姓名之间加一个减号分隔。【解答】要取出学号的后6位,可以用Right函数或Mid函数,结果再与姓名字段连接即可。对应的字段表达式分别如下:编号姓名:Right(学号,6)+-+姓名编号姓名:Mid(学号,5,6)+“-”+姓名第2种格式字段定义及查询结果第2种格式字段定义及查询结果计算机基础与Access数据库程序设计4ppt课件(全)【例4-10】查询输出tCourse表内容,将课程名、学时字段合并,其中,学时用括号括起来,形如(学时:60),字段名为“课程及学时”。【解答】学时字段为数字字段,需要转换为字符串才能与课程名字段连接,对应的字段表达式如下(括号前后各留一个空格):课程及学时:课程名+(学时:+Str(学时)+)计算机基础与Access数据库程序设计4ppt课件(全)3.拆分字段拆分字段 可以合并字段,也可以拆分字段。【例4-11】查询输出学生学号及姓名,学号字段按下列规则拆分输出:14位,年级;56位,学院编号;78位,专业代码;910位,序号。【解答】可以用字符串函数取出各位段内容,前4位用Left函数,最后两位用Right函数,其他用Mid函数即可。设计的查询及其查询结果分别如下页图所示。计算机基础与Access数据库程序设计4ppt课件(全)计算机基础与Access数据库程序设计4ppt课件(全)【例4-11】拆分的是文本型字段,其他类型的字段也可以进行拆分。数值型字段要先转换为字符串再进行拆分。日期型字段可以用函数直接进行拆分,Year函数可以拆分出年度,Month函数可以拆分出月份,Day函数可以拆分出日。4.3.4 排序与条件设置排序与条件设置1.排序设置排序设置 可以指定查询结果的排序次序,依次在设计器“排序”行选择对应列的输出排序次序即可,其操作与节介绍的记录筛选排序设置操作相同。2.条件设置条件设置 设计器中的条件对应于SQL SELECT语句的WHERE选项计算机基础与Access数据库程序设计4ppt课件(全)中的条件,用于从中间结果中筛选出满足条件的记录。例如,查询男同学的选课信息就可以从前述“学生选课查询”结果中获得,保留其