全国计算机等级考试二级ACCESS数据库设计安为霞QQ:2473861108第二章查询•查询的功能•查询的类型•查询的条件•创建选择查询•创建交叉表查询•创建参数查询•创建操作查询•创建SQL查询•编辑和使用查询一查询的功能通过给定的条件对表或其他查询进行检索,筛选出符合条件的记录,构成一新的数据集合.•选择字段:从表中选择部分字段.•选择记录:根据条件筛选满足条件的记录.•编辑记录:通过操作查询完成对记录的添加/更改/删除操作.•实现计算:在建立查询的过程中进行统计计算.•建立新表:将查询的结果作为表对象保存.•为窗体/报表/数据访问页提供数据.二查询的类型•选择查询:最常见的查询,根据所给定的条件查询.•交叉表查询:以行/列在交叉位置显示汇总数据.•参数查询:根据用户输入的条件(参数)来检索记录.•操作查询:对表中的数据进行编辑.操作查询分四类:生成表查询,删除查询,更新查询,追加查询.•SQL查询:使用SQL语句做查询.包含联合查询,传递查询,数据定义查询和子查询.三查询的条件查询条件是运算符、常量、字段值、函数以及字段名和属性等任意组合的一种产生逻辑值的式子。•运算符•关系运算符:=、、、、=、=•逻辑运算符•Not•And•Or•特殊运算符•INin(“本科”,”研究生”)•Betweenbetween60and100•Likelike“李*”•IsNull•IsnotNull三查询的条件•函数(附录A)•条件基本输入规则•文本值要用半角的双引号括起来。(””)•access允许在表达式开头省去等号“=”•日期值要用半角的“#”括起来•在准则中字段名必须用方括号“[]”括起来•当字段名在多表中出现时应譔使用如下格式:[表名]![字段名]对字段加以确定其属于哪一表。三查询的条件•常用函数:•算术函数•Abs(数值表达式):返回数值表达式绝对值。•Int(数值表达式):返回小于等于参数的最大整数。•Fix(数值表达式):返回参数的整数部分。•Round(数值1[,数值2]):按指定位数对数值表达式进行四舍五入。•Sqr(数值):求数值表达式的平方根。•Sgn(数值):返回数值表达式的符号。三查询的条件•常用函数:•算术函数•Rnd(数值):产生一个0-1之间的随机数。参数大于零产生新的随机数,小于零产生相同的随机数,等于零产生最近产生的随机数。•Sin(数值):求正弦值。•Cos(数值):求余弦值。•Tan(数值):求正切值。•Exp(数值):计算e的N次方,返回一个双精度。•Log(数值):求以e为底的数值表达式的值的对数。三查询的条件•常用函数:•文本函数•Space(数值):返回由参数指定个数个空格。•String(数值,字符):返回字符串中第一个字符,返回长度为数值表达式的值。•Left(字符,数值):从字符的左边截取指定个数个字符。由数值表达式决定。•Right(字符,数值):从字符的右边截取指定个数个字符。由数值表达式决定。•Mid(字符,数值1[,数值2]):从字符串的指定位置(由数值1决定)截取指定个数(由数值2决定)个字符.•Len(字符):返回字符表达式字符的个数.三查询的条件•常用函数:•文本函数•Ltrim(字符):去掉字符的前导空格。•Rtrim(字符):去掉字符的尾部空格。•Trim(字符):去掉字符前导和尾部空格。•Instr([数值],字符串,子字符串[,比较方法]):检索子字符串在字符串中出现的位置,如果子字符串是字符串的字串返回出现的位置,如果不是返回零。数值表达式确定检索的起始位置。比较方法有三种,分别在比较中确定二进制比较,不区分大小写比较和基于数据库比较。•Ucase(字符):将字符串中的小写字母转换为大写字母。•Lcase(字符):将字符串中的大写字母转换为小写字母。三查询的条件•常用函数:•日期/时间函数•Date():返回系统的日期。•Time():返回系统的时间。•Now():返回系统的日期时间。•Year(日期):返回日期的年份值。•Month(日期):返回日期的月份值。•Day(日期):返回日期的日期值。•Weekday(日期[,第一天参数]):返回1-7的整数,表示星期几三查询的条件•常用函数:•日期/时间函数•Hour(时间):返回时间的小时值。•Minute(时间):返回时间的分钟值。•Second(时间):返回时间的秒数值。•DateAdd(间隔类型,间隔值,表达式):对表达式表示的日期按照间隔类型加上指定的时间间隔值,值为负表示减去•Dateadd(“yyyy”,10,[工作时间])•Dateadd(“m”,10,[工作时间])•Dateadd(“d”,10,[工作时间])三查询的条件•常用函数:•统计函数•sum(字段名)•avg(字段名)•count(字段名)•max(字段名)•min(字段名)四创建选择查询•查询向导:基于一个数据源、基于多个数据源•“设计”视图•查询五种视图:设计视图、数据表视图、SQL视图、数据透视表视图、数据透视图视图•设计视图窗口:字段列表区、设计网格区•创建不带条件的查询•创建带条件的查询•在查询中进行计算•预定义计算:系统提供的用于对查询中的记录组或全部记录进行的计算,它包括总和、平均值、计数、最大值、最小值、标准偏差和方差。四创建选择查询•自定义计算:可以用一个或多个字段的值进行数值、日期和文本计算。必须直接在设计网格中创建新的计算字段(将表达式输入到设计网格的空字段行中,表达式可以由多个计算组成)四创建选择查询总计项及含义总计项功能函数Sum求和Avg求平均值Min求最小值Max求最大值Count计数Stdev标准偏差Var方差其他总计项Groupby分组First第一条记录的值Lase最后一条记录的值Expression字段包含统计函数where条件项实例•查找一个表中的记录,只显示部分字段•查询学生(学生编号、姓名)所选课程的名称及成绩•查询某年参加工作的男教师的信息(不显示工作时间)•查询低于60分的女生信息和高于90分的男生信息•统计教师人数•统计某年参加工作的教师人数•各职称教师人数•将“*之*”改为一个确定的字段名•统计每班平均成绩•统计每个学生平均分•查找平均成绩低于所在班平均成绩的学生信息(姓名、性别、平均成绩)四创建选择查询五创建交叉表查询交叉表查询,就是将来源于某个表中的字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,然后在数据表行与列的交叉处显示表中某个字段的各种计算值。在创建交叉表查询时,用户需要指定三种字段:一是放在数据表最左端的行标题,它把某一字段或相关的数据放入指定的一行中;二是放在数据表最上面的列标题,它对每一列指定的字段或表进行统计,并将统计结果放入该列中;三是放在数据表行与列交叉位置上的字段,用户需要为该字段指定一个总计项。五创建交叉表查询•创建方法:交叉表查询向导和“设计”视图•向导与“设计”视图之间的区别:使用“向导”建立交叉表查询,所用的字段必须来源于同一个表或同一个查询;使用设计视图建立交叉表查询,字段可以来自于多个表或查询。注意:行标题和列标题必须选择分组项。行标题可以设置多个,列标题和值只能设置一个。向导创建行标题可以设置三个,设计视图创建行标题可以设置10个。实例•统计每班男女生人数•每班男女生平均成绩六创建参数查询•参数查询的基本应用说明参数查询与选择查询使用方法相同,区别在于参数查询的查询条件由用户根据所设计的参数方式而给定,用户给定的条件不同而查询结果发生变化。•单个参数的查询•多个参数的查询六创建参数查询•实例查找所输入的任意年龄的学生信息查找所输入任意爱好的学生信息七创建操作查询操作查询是通过一个操作更改表中的许多记录的查询。操作查询包括生成表查询、删除查询、更新查询、追加查询。操作查询除了从表中选择数据外,还对表中数据进行修改。•生成表查询:将查询结果生成一个新表。•删除查询:从单个表中删除记录,或从多个表中删除记录。如果要从多个表中删除相关记录必须满足以下条件:•在“关系”窗口中定义相关表之间的关系。•在“关系”对话框中选中“实施参照完整性”复选项。•在“关系”对话框中选中“级联删除相关记录”复选项。•删除查询将永久删除指定表中的记录,并且无法恢复。每次删除的是整条记录,而不是部分字段内容。•更新查询:对表中的记录进行更新或修改。•追加查询:将某个表中符合一定条件的记录添加到另一个表上,将一个或多个表的数据追加到另一个表的尾部。•实例•将成绩是90分以上的学生信息生成一个新表•将成绩表中低于60分的记录删除•将05年以前参加工作的教师的职称改为“教授”•将选课成绩在80到90分之间的信息添加到已建立的“90分以上的学生”表中七创建操作查询SQL查询是用户使用SQL语句直接创建的一种查询。SQL动词1.数据定义:CREATE、DROP、ALTER2.数据操作:INSTER、UPDATE、DELETE3.数据查询:SELECT4.数据控制:CRANT、REVOTE八创建SQL查询•CREATE定义基本表•CREATETABLE表名(字段名1数据类型1[字段级完整性约束条件1][,字段名2数据类型2[字段级完整性约束条件2]]…[,字段n数据类型n[字段级完整性约束条件n]])[,表级完整性约束条件];•例:CREATETABLE教师1(教师编号Char(10)PrimaryKey,姓名Char(4)NotNull,性别Char(1),工作时间DATE)•ALTER修改已建表的结构•ALTERTABLE表名[ADD新字段名数据类型[字段级完整性约束条件]][DROP[字段名]…][ALTER字段名数据类型];•ADD用于增加新字段和该字段的完整性约束条件•ALTERTABLE教师1ADD电子邮箱CHAR(30)•DROP用于删除指定字段•ALTERTABLE教师1DROP工作时间•ALTER用于修改原有字段属性•ALTERTABLE教师1ALTER姓名CHAR(10)八创建SQL查询•DROP删除不需要的表•DROPTABLE教师1•INSERT将一条新记录插入到指定的表中•insertinto课程values(k007,JS002,管理经济学,必修,6);•UPDATE对指定表的所有记录或满足条件的记录进行更新•update课程set教师编号=js005WHERE课程编号=k007;•DELETE将指定表满足条件的记录删除•deletefrom课程where课程编号=k007;八创建SQL查询•SELECT•SELECT[ALL|DISTINCT]*|字段列表FROM表名1[,表名2]…[WHERE条件表达式][GROUPBY字段名[HAVING条件表达式]][ORDERBY字段名[ASC|DESC]];•ALL检索所有的记录,DISTINCT检索去掉重复行的所有记录,默认为ALL;*表示检索所有的字段,字段列表可以是字段、常数或系统内部函数;FROM说明检索的数据来自于哪个表,可以是单个也可以是多个;WHERE说明检索的条件,可以是关系表达式也可以是逻辑表达式;GROUPBY对结果进行分组;Having必须跟GroupBy,限定分组的条件;OrderBy表示排序,ASC表示升序,DESC表示降序•SELECT姓名,性别,学历,职称from教师where性别=男;八创建SQL查询•SQL特定查询包括:联合查询,传递查询,数据定义查询和子查询等4种,其中联合查询,传递查询,数据定义查询不能在查询“设计”视图中创建。•联合查询:将来自一个或多个表或查询的字段组合为查询结果中的一个字段或列,可以合并两个表中的数据,并可以生成一个新表。•Select学生编号,姓名,成绩F