数据库及应用基础:第4章 查询_第1页
数据库及应用基础:第4章 查询_第2页
数据库及应用基础:第4章 查询_第3页
数据库及应用基础:第4章 查询_第4页
数据库及应用基础:第4章 查询_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库及应用基础第4章查询学习目标通过本章的学习,应该掌握(1)查询的基本概念。(2)查询的功能及分类。(3)根据给定条件建立查询规则。(4)查询的设计方法。(5)查询的应用。(6)SQL语言及其应用。回顾*表结构表表中数据字段类型字段名称字段属性字母、汉字、数字、空格不能是”。”、”!”文本型、数字型、备注型、日期/时间型、逻辑型等特征值的集合常规属性和查阅属性控制操作和显示方式回顾*主要内容4.1查询概述4.2选择查询4.3交叉表查询4.4参数查询4.5操作查询4.6使用向导创建查询4.7SQL查询4.1查询概述

存储数据的目的是为了重复使用这些数据。在使用这些数据时,用户根据自己的需求可以从单个数据表中获取所需要的信息,也可从多个相关的数据表中获得信息,所采用的手段就是使用查询技术。

Access提供的查询功能为用户提供了从若干个数据表中获取信息的手段,是分析和处理数据的一种重要工具。

4.1.1查询的概念

查询是能够将存储于一个或多个表中符合要求的数据挑选出来,并对挑选的结果按照某种规则进行运算的对象。利用不同的查询,可以方便、快捷地浏览数据表中的数据,同时利用查询可以实现数据的统计分析与计算等操作,查询还可以作为窗体和报表的数据源。查询也可以看做一个“表”,只不过是以表或查询为数据来源的再生表,是动态的数据集合。

查询主要有以下几方面的功能。(1)选择字段和记录

(2)修改记录(3)统计和计算(4)建立新表(5)为其他数据库对象提供数据源

根据对数据源的操作方式以及查询结果,Access提供的查询可以分为五种类型,分别是选择查询、交叉表查询、参数查询、操作查询和SQL查询。1.选择查询选择查询是最常用的查询类型,它能够根据用户所指定的查询条件,从一个或多个数据表中获取数据并显示结果,还可以利用查询条件对记录进行分组,并进行求总计、计数、平均值等运算。例:查询学生的学号、姓名、选课名称和成绩4.1.2查询的类型2.交叉表查询交叉表查询将源数据或查询中的数据分组,一组在数据表的左侧,另一组在数据表的上部,数据表内行与列的交叉单元格处显示表中数据的某个统计值。交叉表查询可以计算并重新组织数据表的结构。这是一种可以将表中的数据看作字段的查询方法。3.参数查询参数查询为用户提供了更加灵活的查询方式,通过参数来设计查询准则,由用户输入查询条件并根据此条件返回查询结果。4.操作查询操作查询是指在查询中对源数据表进行操作,可以对表中的记录进行追加、修改、删除和更新。操作查询包括删除查询、更新查询、追加查询和生成表查询。5.SQL查询

SQL是指使用结构化查询语言SQL创建的查询。用户可以使用查询设计器创建查询,还可以使用SQL语句创建查询,实现对数据的查询和更新操作。

查询共有五种视图,分别是设计视图、数据表视图、SQL视图、数据透视表视图和数据透视图。(1)设计视图设计视图就是查询设计器,通过该视图可以创建除SQL之外的各种类型查询。(2)数据表视图数据表视图是查询的数据浏览器,用于查看查询运行结果。4.1.3查询视图(3)SQL视图

SQL视图是查看和编辑SQL语句的窗口,通过该窗口可以查看用查询设计器创建的查询所产生的SQL语句,也可以对SQL语句进行编辑和修改。(4)数据透视表视图和数据透视图在数据透视表视图和数据透视图中,可以根据需要生成数据透视表和数据透视图,从而对数据进行分析,得到直观的分析结果。

在Access中,创建查询的方法主要两种,使用查询设计视图创建查询和使用查询向导创建查询。

1.使用查询设计视图创建查询使用查询设计视图创建查询首先要打开查询设计视图窗口,然后根据需要进行查询定义,具体操作步骤如下:(1)打开数据库。4.1.4创建查询方法(2)选择“创建”选项卡的“查询”组,单击“查询设计”按钮,打开“查询设计器”窗口,如图4-1所示。

查询设计器窗口由两部分组成,上半部分是数据源窗口,用于显示查询所涉及的数据源,可以是数据表或查询,下半部分是查询定义窗口,也称为QBE网格,主要包括以下内容:①字段:查询结果中所显示的字段。②表:查询的数据源,即查询结果中字段的来源。③排序:查询结果中相应字段的排序方式。④显示:当相应字段的复选框被选中时,则在结构中显示,否则不显示。⑤条件:即查询条件,同一行中的多个准则之间是逻辑“与”的关系。⑥或:查询条件,表示多个条件之间的“或”的关系。(3)在打开查询设计视图窗口的同时打开弹出“显示表”对话框,如图所示。(4)在“显示表”对话框中,选择作为数据源的表或查询,将其添加到查询设计器窗口的数据源窗口中。在查询设计器窗口的QBE网格中,单击该按钮即可打开下拉列表,通过“字段”列表框选择所需字段,选中的字段将显示在QBE网格中。

(5)在查询设计器窗口的QBE网格中,打开“排序”列表框,可以指定查询的排序关键字和排序方式。排序方式分为升序、降序和不排序三种。(6)使用“显示”复选框可以设置某个字段是否在查询结果中显示,若复选框被选中,则显示该字段,否则不显示。(7)在“条件”文本框中输入查询条件,或者利用表达式生成器输入查询条件。(8)保存查询,创建查询完成

2.使用查询向导创建查询使用查询向导创建查询,就是使系统提供的查询向导,按照系统的引导,完成查询的创建。查询向导共有四种类型:

简单查询向导交叉表查询向导查找重复项查询向导查找不匹配项查询向导操作步骤如下:(1)打开数据库。(2)选择“创建”选项卡的“查询”组,单击“查询向导”按钮,打开“新建查询”对话框,如图4-6所示。图4-6“新建查询”对话框(3)在“新建查询”对话框中,选择所需的查询向导,根据系统的引导选择参数或输入相应的信息。(4)保存查询,完成查询创建。4.1.5运行查询

查询创建完成后,将保存在数据库中。运行查询后才能看到查询结果。可以通过下面的方法运行查询。(1)在上下文选项卡“查询工具|设计”的“结果”组中单击“运行”按钮。(2)在上下文选项卡“查询工具|设计”的“结果”组中单击“视图”按钮。(3)在导航窗口中选择要运行的查询双击。(4)在导航窗口中选择查询对象右单击,在快捷菜单中选择“打开”命令。(5)在查询设计视图窗口的标题栏右单击,在快捷菜单中选择“数据表视图”。4.2选择查询

选择查询是最常用的查询类型,它能够根据用户所指定的查询条件,从一个或多个数据表中获取数据并显示结果,还可以利用查询条件对记录进行分组,并进行求总计、计数、平均值等运算。选择查询产生的结果是一个动态记录集,不会改变源数据表中的数据。

设计查询时,要确定查询目标。首先要确定查询的数据源,查询的数据源可以是表和已经建立的查询,然后再确定需要显示的字段或表达式。

【实例4-1】在选课管理数据库中,创建以下查询。(1)查询学生的学号、姓名和性别。(2)查询学生的所有信息。(3)查询学生的学号、姓名及所修课程的课程号。(4)查询学生的学号、姓名、选课名称和成绩。4.2.1简单查询【操作步骤】①打开数据库“选课管理”。②选择“创建”选项卡中的“查询”组,单击“查询设计”按钮,打开查询设计器窗口,在“显示表”对话框中选择“学生”表双击,将学生表添加到查询设计视图的数据源窗口中,如图4-8所示。③通过字段下拉列表按钮选择字段“学号”、“姓名”和“性别”,这些字段将显示在查询定义窗口中,如图所示。保存查询“学生信息”,完成查询的创建。

如果查询的数据源是两个或以上的表或查询,在设计查询需要创建数据源之间的连接关系。查询连接的类型,共分为三种:内部连接、左连接和右连接。(1)内部连接内部连接是指将两个表中连接字段相等的记录提取出来进行合并,从中选取所需要的字段形成一条记录,显示在查询结果中。内部连接是系统默认的连接类型。4.2.2查询中的连接类型(2)左连接左连接是指取左表中的所有记录和右表中连接字段相等的记录作为查询的结果。(3)右连接右连接是指取右表中的所有记录和左表中连接字段相等的记录作为查询的结果。如果查询中使用的表或查询之间没有建立连接关系,那么查询将以笛卡尔积的形式产生查询结果。也就是说,一个表的每一条记录和另一个表的所有记录连接构成新的记录,这样就会在查询结果中产生大量的数据。

在实际应用中,经常查询满足某个条件的记录,这需要在查询时进行查询条件的设置。例如,查询所有“女同学”的记录,查询职称为“教授”的教师的信息等等。通过在查询设计视图中设置条件可以实现条件查询。查询中的条件通常使用关系运算符、逻辑运算符和一些特殊运算符来表示。

4.2.3查询中条件的设置1.条件的表示(1)关系运算关系运算符由>、>=、<、<=、=和<>等符号构成,主要用于数据之间的比较,其运算结果为逻辑值,即“真”和“假”。如表所示。

关系运算符含义>大于>=大于等于<小于<=小于等于=等于<>不等于(2)逻辑运算逻辑运算符由Not、And和Or构成,主要用于多个条件的判定,其运算结果是逻辑值。如表4-2所示。关系运算符含义Not逻辑非And逻辑与Or逻辑或(3)其他运算

Access提供了一些特殊运算符用于对记录进行过滤,常用的特殊运算符如表4-3所示。关系运算符含义In指定值属于列表中所列出的值Between…and…指定值的范围在…到…之间Is与null一起使用确定字段值是否为空值Like用通配符查找文本型字段是否与其匹配通配符“?”匹配任意单个字符;“*”匹配任意多个字符;“#”匹配任意单个数字;“!”不匹配指定的字符;[字符列表]匹配任何在列表中的单个字符(1)数字型:直接表示。例:28、-3.287(2)文本值:用双引号(")或单引号(')括起。例:"陈江川"、'男'(3)日期型:用#括起来。例:#2006-10-25#例如:查询2008年9月1日入校的学生信息。(4)是否型:真为True/On/Yes,

假为False/Off/No。例如:查询团员的信息。(5)空值:isNull非空值:isNotNull例如:查询无职称的教师信息。(6)对象名和字段名:用方括号([])括起,且对象名与字段名用感叹号(!)分隔。例:[年龄]、[学生]![姓名]2.查询条件的设置在查询设计视图中,设置查询条件应使用QBE网格中的条件选项来设置。首先选择需设置条件的字段,然后在“条件”文本框中输入条件。条件的输入格式与表达式的格式略有不同,通常省略字段名。如果有多个条件,且涉及到不同的字段,则分别设置相应字段的条件。如果两个条件之间and运算符连接,则输入的信息放在同一行中;如果两个条件之间or运算符连接,则输入的信息放在不同行中。

3.查询举例【实例4-2】在教学管理数据库中,创建以下查询。(1)查询1985年以后出生的学生的学号、姓名和出生日期。(2)查询家庭住址在“海淀区”的同学的姓名和家庭住址。(3)查询学号前2位是“05”或“06”的同学的姓名和专业。(4)查询职称是“教授”或“副教授”的教师的姓名、性别和职称。(5)查询职称为“中级以上”职称的教师的姓名、性别和职称。(6)查询选修“C程序设计”课程的学生的学号、姓名和成绩。(7)查询“高等数学”大于90分或“计算机基础”大于85的同学的姓名、课程和成绩。(8)查询未参加考试的同学的学号、姓名和课程名称。【操作步骤】以(3)和(6)为例。(3)查询学号前2位是“05”或“06”的同学的姓名和专业。

①打开数据库“选课管理”,选择“创建”选项卡的“查询”组,单击“查询设计”按钮,打开查询设计器窗口,将“学生”表添加到查询设计视图的数据源窗口中。②将字段“学号”、“姓名”和“专业”添加到查询定义窗口中,同时将学号字段的“显示”复选按钮取消;对应“系号”字段,在“条件”行输入“like"0[56]*"”,如图所示。保存查询,运行结果如图所示。(6)查询选修“C程序设计”课程的学生的学号、姓名和成绩。

①打开查询设计器窗口,将“学生”、“课程”和“选课”表添加到查询设计视图的数据源窗口中。

②将学生表中的字段“学号”、“姓名”、课程表中的字段“课程名称”和“选课”表中的字段“成绩”依次添加到查询定义窗口中,同时将“课程名称”字段的“显示”复选按钮取消;对应“课程名称”字段,在“条件”行输入“="C程序设计"”,如图所示。保存查询。运行结果如图所示。

4.2.4在查询中进行计算和统计

在设计选择查询时,除了进行条件设置外,还可以进行计算和分类汇总。例如,计算学生的年龄、计算教师的工龄、统计教师的工资、按性别统计学生数、按系别统计教师的任务工作量等,这需要在查询设计时使用表达式及查询统计功能。1.表达式用运算符将常量、变量、函数连接起来的式子称为表达式,表达式计算将产生一个结果。可以利用表达式在查询中设置条件或定义计算字段。

Access系统提供了算术运算、关系运算、字符运算和逻辑运算等4种基本运算表达式2.系统函数函数是一个预先定义的程序模块函数。包括标准函数和用户自定义函数。标准函数可分为数学函数、字符串处理函数、日期/时间函数、聚合函数等,其中聚合函数可直接用于查询中。函数及功能列表如表4-5所示。函数名称功能Sum计算指定字段值的总和。适用于数字、日期/时间、货币型字段Avg计算指定字段值的平均值。适用于数字、日期/时间、货币型字段Min计算指定字段值的最小值。适用于文本、数字、日期/时间、货币型字段Max计算指定字段值的最大值。适用于文本、数字、日期/时间、货币型字段Count计算指定字段值的计数。当字段中的值为空(null)时,将不计算在内Var计算指定字段值方差值。适用于文本、数字、日期/时间、货币型字段StDev计算指定字段值标准差值。适用于文本、数字、日期/时间、货币型字段First返回指定字段的第一个值。Last返回指定字段的最后一个值。Expression在字段中自定义计算公式,可以套用多个总计函数(1)数值函数(2)字符函数左子串截取:Left(字符串,数值)

例:查询0501班学生信息。右子串截取:Right(字符串,数值)

例:查询姓名的末尾是“明”字教师信息。子串截取:Mid(字符串,数值1,数值2)

例:查询姓名的第二个字是“立”的教师信息。求字符串长度:Len(字符串)

例:查询姓名只有两个字的教师信息。空格生成:Space(数值)字符重复函数:String(数值,字符串)(3)日期时间函数求系统日期:Date()

例:查询100天之内参加工作的教师信息。求年份:Year(日期)

例:查询工龄超过10年的教师信息,要求显示教师编号、姓名、性别、工作时间。求月份:Month(日期)求日份:Day(日期)

例:查询9月1日入校的学生信息。求星期:Weekday(日期)星期日为第1天(1),星期一为第2天(2)…

例:查询星期二入校的学生信息。求小时:Hour(日期)3.计算型选择查询能够将挑选出的数据按照某种规则进行统计和计算的查询。(1)总计查询(2)分组总计查询(3)添加计算字段(1)总计查询对表中符合条件的某些字段的值进行计算与统计。需在设计视图中的总计行设置总计项类型。添加总计行方法:单击汇总按钮。总计项类型:GroupBy分组

合计平均值最大值

最小值

数First第一条记录Last最后一条记录Expression表达式Where条

件(2)分组总计查询根据表中某些字段的值对表中记录进行分类汇总。

用于分组字段的“总计”方式设置成“分组”。(3)添加计算字段计算字段是表中并不存在的字段,它的值是通过对表中某些字段进行运算而得到的,故其实质是一个表达式。添加方法:在设计视图中的“字段”行中直接添加一个内容为表达式的新字段。

新标题:表达式①当数据源为多个表或查询,而计算表达式中的某一字段在多个表中都存在时,引用时必须指定来源于哪个表。②表达式中可以包含统计函数,此时该字段的总计方式为表达式。4.查询举例【实例4-3】在选课管理数据库中,创建以下查询。(1)查询学生的学号、姓名、出生日期并计算年龄。(2)统计各系学生的平均年龄。(3)统计各年份出生的学生人数。(4)统计每位教师的所教课程的总学时。(5)统计“计算机系”教师的课程总学时数。(6)统计学生的课程总成绩和平均成绩。【操作步骤】

打开数据库“选课管理”,在数据库中选择查询为操作对象,单击“在设计视图中创建查询”选项,打开查询设计器窗口,将查询所需要的表添加到查询设计视图的数据源窗口中。(1)查询学生的学号、姓名、出生日期并计算年龄将学生表的字段“学号”、“姓名”、“出生日期”添加到QBE网格中,然后在空白列中输入“年龄:Year(Date())-Year([出生日期])”,其中,Year(Date())-Year([出生日期])是计算年龄的表达式,而“年龄:”用于设置年龄的显示标题,如图所示,保存查询。(6)统计学生的课程总成绩和平均成绩将学生表的字段“学号”、“姓名”、选课表的字段“成绩”添加到查询定义窗口中,注意,将成绩字段添加2次。然后在“总计”行中,对应“学号”和“姓名”字段,选择“分组”;对应第1个“成绩”字段,选择“合计”并添加标题“总成绩”,对应第2个“成绩”字段,选择“平均值”并添加标题“平均成绩”,如图所示。4.3交叉表查询

交叉表查询通常以一个字段作为表的行标题,以另一个字段的取值作为列标题,在行和列的交叉点单元格处获得数据的汇总信息,以达到数据统计的目的。交叉表查询既可以通过交叉表查询向导来创建,也可以在设计视图中创建。【实例4-4】在选课管理数据库中,创建以下交叉表查询。(1)查询学生的各门课成绩。(2)查询教师的所授课程及学时。(3)查询各系男、女教师的人数。(4)查询学生单科成绩、平均成绩及总成绩。【操作步骤】以(1)为例打开数据库“选课管理”,选择“创建”选项卡的“查询”组,单击“查询设计”按钮,打开“查询设计器”窗口。将学生表、课程表和选课表添加到查询设计视图的数据源窗口中,同时将学生表的字段“学号”、“姓名”、课程表中的“课程名称”以及选课表的字段“成绩”添加到查询定义窗口中。

选择“查询工具”选项卡的“查询类型”组,单击“交叉表”按钮,查询定义窗口中将出现“总计”和“交叉表”行,首先,在“交叉表”行,对应“学号”和“姓名”字段选择“行标题”、对应“课程名称”选择“列标题”,对应“成绩”字段,选择“值”,然后,在“总计”行,对应“学号”、“姓名”和“课程名称”字段选择“groupby”,对应“成绩”字段,选择“First”,如图所示。保存查询并运行,运行结果如图所示。图4-43查询(1)运行结果说明(1)在交叉表查询设计时,如果在“交叉表”行中,设置某个字段的选项为“值”,则在“总计”行中可以有多种选择,每个选项都与表4-5的系统函数相对应。如果获取的数据是单一数据,则可以选择“第一条记录”或“最后一条记录”。(2)本案例的(4)是利用交叉查询的结果创建的查询,数据源是已经创建的查询。

4.4参数查询

参数查询是一种动态查询,可以在每次运行查询时输入不同的条件值,系统根据给定的参数值确定查询结果,而参数值在创建查询时不需定义。这种查询完全由用户控制,能一定程度上适应应用的变化需要,提高查询效率。参数查询一般创建在选择查询基础上,在运行查询时会出现一个或多个对话框,要求输入查询条件。根据查询中参数个数的不同,参数查询可以分为单参数查询和多参数查询。【实例4-5】在教学管理数据库中,创建以下参数查询。(1)按学号查询学生的所有信息。(2)按系名查询学生的选课成绩。(3)按年级查询学生的姓名、性别和所在系。(4)在最低分和最高分之间查询学生的学号、姓名、以及“高等数学”课程成绩。【操作步骤】(2)按系名查询学生的选课成绩

将学生表、选课表、课程表和系部表添加到查询设计视图的数据源窗口中,将学生表的“学号”、“姓名”字段、课程表的“课程名称”、选课表的“成绩”和系部表的“系名称”添加到查询定义窗口中,对应“系名称”字段,在“条件”行输入“[输入学生系名:]”,如图所示。(4)在最低分和最高分之间查询学生的学号、姓名、以及“高等数学”课程成绩。将学生表、选课表、课程表添加到查询设计视图的数据源窗口中,将学生表的“学号”、“姓名”字段、课程表的“课程名称”、选课表的“成绩”添加到查询定义窗口中,对应“课程名称”字段,在“条件”行输入“高等数学”,对应“成绩”字段,在“条件”行输入“Between[最低分]And[最高分]”,如图所示。

保存查询并运行,显示第一个“输入参数值”对话框,输入最低分“70”,单击“确定”按钮打开第二个“输入参数值”对话框,输入最高分“90”,单击“确定”按钮,如图4-54所示。系统会显示高等数学成绩介于70和90之间的学生信息。说明:(1)在参数查询中,在“条件”行中输入的参数条件实际上是一个变量,运行查询时用户输入的参数将存储在该变量中,执行查询时系统自动将字段或表达式的值与该变量的值进行比较,根据比较的结果显示相应的结果。(2)在查询(4)中,表达式“Mid([学号],1,2)”调用了字符串处理函数Mid(),它的功能是从学号字段的第一位开始,取学号字段的前2位。4.5操作查询

前面介绍的查询是按照用户的需求,根据一定的条件从已有的数据源中选择满足特定准则的数据形成一个动态集,将已有的数据源再组织或增加新的统计结果,这种查询方式不改变数据源中原有的数据状态。操作查询是在选择查询的基础上创建的,可以对表中的记录进行追加、修改、删除和更新。操作查询包括删除查询、更新查询、追加查询和生成表查询。

删除查询又称为删除记录的查询,可以从一个或多个数据表中删除记录。使用删除查询,将删除整条记录,而非只删除记录中的字段值。记录一经删除将不能恢复,因此在删除记录前要做好数据备份。删除查询设计完成后,需要运行查询才能将需要删除的记录删除。4.5.1删除查询【实例4-6】在选课管理数据库中,创建以下删除查询。(1)删除成绩不及格的学生的选课记录。(2)删除04级学生的记录。

说明:

在删除行的下拉框中有两个选项,Where或From,其中,Where的作用是选择满足条件的所有记录,而From的作用是选择连续的满足条件的记录,直到遇到不满足条件的记录为止。由于表间存在着关系,在进行删除查询时要注意到表间的关系,若关系完整性设置了级联,当删除一对多关系中“一”方的表中的记录时,那么“多”方表中与之相关联的记录也会被删除。

在数据库操作中,如果只对表中少量数据进行修改,可以直接在表操作环境下,通过手工进行修改。如果需要成批修改数据,可以使用系统提供的更新查询功能来实现。更新查询可以对一个或多个表中符合查询条件的数据进行批量的修改。4.5.2更新查询【实例4-7】在教学管理数据库中,创建以下更新查询。(1)将不及格学生的课程成绩置0。(2)将所有必修课程的学时增加8学时,学分增加0.5学分(假设必修课程的课程编号以字母B开头)。【操作步骤】

打开数据库“选课管理”,选择“创建”选项卡的“查询”组,单击“查询设计”按钮,打开“查询设计器”窗口。(1)将不及格学生的课程成绩置0

将选课表添加到查询设计视图的数据源窗口中,同时将“成绩”字段添加到查询定义窗口中。选择上下文选项卡“查询工具”的“查询类型”组,单击“更新查询”按钮,则在查询定义窗口中出现“更新到”行。在“条件”行输入“<60”,然后在“更新到”行输入0,如图所示。保存查询,输入查询名“将不及格学生的课程成绩置0”,查询设置完成。运行查询,系统自动显示更新数据对话框,如图所示。单击“确定”按钮,满足条件的记录将被自动更新。(2)将所有必修课程的学时增加8学时,学分增加0.5学分将课程表添加到查询设计视图的数据源窗口中,同时将“课程号”、“学时”、“学分”字段添加到QBE网格中,然后将“课程号”修改为表达式“Mid([课程号],1,1)”。右单击数据源窗口,在快捷菜单中选择“查询类型|更新查询”,则在QBE网格中出现“更新到”行。对应表达式“Mid([课程号],1,1)”在“条件”行输入“"B"”,对应“学时”和“学分”字段,在“更新到”行分别输入“[学时]+8”和“[学分]+.5”,如图所示。。保存查询,输入查询名“将所有必修课程的学时学分增加”,查询设置完成。4.5.3追加查询

追加查询可以从一个或多个表将一组记录追加到一个或多个表的尾部,可以大大提高数据输入的效率。【实例4-8】在教学管理数据库中,新增加一个新生档案表,其结构与学生表相似,创建追加查询,将新生档案表中的数据追加到学生表中。

4.5.4生成表查询

生成表查询可以使查询的运行结果以表的形式存储,生成一个新表,这样就可以利用一个或多个表或已知的查询再创建表,从而使数据库中的表可以创建新表,实现数据资源的多次利用及重组数据集合。

【实例4-9】在选课管理数据库中,创建以下生成表查询。(1)查询计算机系学生的学号、姓名和性别并生成学生名单表。(2)查询学生的各门课成绩并生成成绩表。4.6使用向导创建查询

利用查询设计视图可以按照用户的需求设置查询条件,选择需要的字段和表达式,还可以利用查询对源数据表进行操作,这种方法对使用者的要求较高。如果使用查询向导创建查询,就可以按照Access系统提供的查询向导,按照系统的引导,完成查询的创建。这种方法容易学习和掌握。查询向导有四种类型:简单查询向导、交叉表查询向导、查找重复项查询向导和查找不匹配项查询向导。4.6.1简单查询向导

简单查询向导用于创建最简单的选择查询,这种方法操作过程简单易用。【实例4-10】在选课管理数据库中,使用简单查询向导查询课程的基本信息。4.6.2交叉表查询向导

交叉表查询向导用于创建交叉表查询查询,它的显示数据来源于某个字段的值或统计值。【实例4-11】在选课管理数据库中,使用交叉表查询向导创建查询按系别统计教师各职称的人数。4.6.3查找重复项查询向导

利用查找重复项查询向导可以查询表中是否出现重复的记录,或者确定记录在表中是否共享相同的值,或对表中具有相同字段的值的记录进行统计等等。例如,学生表中是否有相同的记录,统计职称相同的人数等。【实例4-12】在选课管理数据库中,使用查找重复项查询向导查询是否有同一个学生选课成绩相同的记录。4.6.4查找不匹配项查询向导

具有“一对多”的表中,在“一”方的表中的每一条记录,在“多”方可以有多条记录与之对应,但也可以没有任何记录与之对应,使用查找不匹配项查询向导可以查询在一个表中查找与另一个表没有相关记录的记录。【实例4-13】在选课管理数据库中,使用查找不匹配项查询向导创建查询没有选课的学生记录。

4.7SQL查询SQL查询是使用SQL语言创建的一种查询。SQL(StructuredQueryLanguage)结构化查询语言是标准的关系型数据库语言。SQL语言的功能包括数据定义、数据查询、数据操纵和数据控制4个部分。每个查询都对应着一个SQL查询命令。当用户使用查询向导或查询设计器创建查询时,系统会自动生成对应的SQL命令,可以在SQL视图中查看,除此之外,用户还可以直接通过SQL视图窗口输入SQL命令来创建查询。

4.7.1SQL语言的特点SQL语言具有以下特点:(1)高度的综合(2)高度非过程化(3)交互式与嵌入式相结合(4)语言简洁,易学易用4.7.2SQL语言的数据定义功能SQL语言的数据定义功能包括定义表、定义视图和定义索引,具体地说,是指表、视图和索引等对象的创建、修改和删除,在Access中没有视图,这里只介绍定义表和定义索引。1.定义基本表定义基本表使用CREATETABLE命令,其语法格式为:CREATETABLE<表名>([<列名1>]<数据类型1>[<列级完整性性约束1>][,[<列名2>]<数据类型2>[<列级完整性性约束2>]][,……])[,[<列名n>]<数据类型n>[<列级完整性性约束n>]][<表级完整性性约束n>]

该语句的功能是,创建一个以<表名>为名的,以指定的列属性定义的表结构。其中,<表名>是所定义的基本表的名称,它可以由一个或多个属性(列)组成,<列级完整性性约束n>和<表级完整性性约束n>用来定义与该表有关的完整性约束条件,这些完整性约束条件将被保存在数据库中,当用户对表中数据进行操作时,系统将自动检查该操作是否违背这些完整性约束条件。2.修改基本表修改基本表使用ALTERTABLE命令,其语法格式为:ALTERTABLE<表名>[ADD<新列名><数据类型1>[<完整性性约束>]][,……][DROP<完整性约束>][ALTER<列名><数据类型>]该语句的功能是,修改以<表名>为名的表结构。其中,ADD子句用于增加新列和新的完整性约束条件。DROP子句用于删除指定的列和完整性。ALTER子句用于修改原有的列的定义,包括列名、列宽和列的数据类型。3.删除表删除表使用DROPTABLE命令,其语法格式为:DROPTABLE<表名>该语句的功能是,删除以<表名>为名的表。4.创建索引创建索引使用CREATEINDEX命令,其语法格式为:

CREATE[UNIQUE]INDEX<索引名>ON<表名>(<列名1>[ASC|DESC])[,<列名2>[ASC|DESC],……]该语句的功能是,为指定的表创建索引。其中,[ASC|DESC]是指索引值的排列顺序,UNIQUE表示唯一索引。5.删除索引创建索引使用DROPINDEX命令,其语法格式为:DROPINDEX<索引名>该语句的功能是,删除指定的索引。6.SQL数据定义实例【实例4-14】使用SQL语言完成下列操作(1)创建一个表:student,它由学号、姓名、性别、年龄和专业5个属性列组成,其中学号和姓名属性不能为空,并且唯一。(2)在student表中增加一个“入学时间”列,其数据类型为日期型。(3)删除student表中姓名唯一的约束。(4)分别按照姓名字段为student表创建索引,索引名为xmsy。(5)删除姓名索引。【SQL命令】(1)CREATETABLEstudent(学号char(10)NOTNULLUNIQUE,姓名char(12)NOTNULLUNIQUE,性别char(2),年龄int,专业char(15))(2)ALTERTABLEstudentADD入学时间date(3)ALTERTABLEstudentDROPUNIQUE(姓名)(4)CREATEINDEXxmsyONstudent(学号)(5)DROPINDEXxmsy

4.7.3SQL语言的数据操纵功能SQL的数据操纵包括表中数据更新、数据插入和数据删除等相关操作。1.数据更新数据更新使用UPDATE命令,其语法格式为:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>……][WHERE<条件>]该语句的功能是,用表达式的值更新指定表中指定列的值。其中,<列名>=<表达式>用表达式的值更新指定列的值。where子句用于设置筛选条件,选择满足指定条件的记录进行数据更新。2.数据插入

数据插入使用INSERT命令,其语法格式为:INSERTINTO<表名>[(列名1[,列名2,……])]VALUES[(常量1[,常量2,……])]该语句的功能是,将一个新记录插入到指定的表中。其中,INTO子句中的(列名1[,列名2,……])指表中插入新值的列,如果省略该选项,则新插入记录的每一列必须在VALUES子句中有值对应。VALUES子句中的(常量1[,常量2,……])指表中插入新列的值,各常量的数据类型必须与INTO子句中所对应列的数据类型相同,且个数也要匹配。3.数据删除数据删除使用DELETE命令,其语法格式为:DELETEFROM<表名>WHERE<条件>该语句的功能是,删除指定表中满足条件的记录。如果省略where子句,则删除表中的所有数据。

4.SQL数据操纵实例【实例4-15】使用SQL语言完成下列操作(1)在student表中插入一条新记录("08010001","赵丹","男",26,"计算机应用")(2)将所有学生的年龄增加1。(3)删除学号为"04010001"的记录。【SQL命令】(1)INSERTINTOstudent(学号,姓名,性别,年龄,专业)VALUES("08010001","赵丹","男",26,"计算机应用")(2)UPDATEstudentSET年龄=年龄+1(3)DELETEFROMstudentWHERE学号="04010001"4.7.4SQL语言的数据查询功能

数据查询是SQL的核心功能,SQL语言提供了SELECT语句用于检索和显示数据库中表的信息,该语句功能强大,使用方式灵活,可用一个语句实现多种方式的查询。SELECT语句的格式为:SELECT[ALL|DISTINCT]<目标列表达式1>[,<目标列表达式2>……]FROM<表名或查询名列表>[INNERJOIN<数据源表或查询>ON<条件表达式>][WHERE<条件表达式>][GROUPBY<分组字段名>[HAVING<条件表达式>]][ORDERBY<排序选项>[ASC|DESC]]该语句的功能是,从指定的表或查询中找出符合条件的记录,按目标列表达式的设定,选出记录中的字段值形成查询结果。其中,ALL|DISTINCT表示记录的范围,ALL表示所有记录,DISTINCT表示不包括重复行的记录。<目标列表达式>表示查询结果中显示的数据,一般为列名或表达式。FROM子句表示数据源,即查询所涉及的相关表或已有的查询。WHERE子句表示查询条件,用于选择满足条件的的记录。GROUPBY子句对查询结果进行分组。HAVING子句限制分组的条件。ORDERBY子句对查询结果进行排序。【实例4-16】在选课管理数据库中,使用SQL语言完成下列查询(1)查询所有学生的信息。(2)查询所有学生的学号、姓名、出生日期并计算年龄。(3)查询1985-1990年间出生的学生的姓名和出生日期。(4)查询所有学生的选课信息,显示学号、姓名和出生日期。(5)查询所有选修“C程序设计”的学生的选课信息,显示学号、姓名和成绩。(6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论