操作要求:
在ACCESS数据库“教学管理.accdb”,其中有四个表:“教师”、“学生”、“课程”、“选课成绩”。其中教师表中信息如下图所示。
1、创建“教师工作时间-姓名-职称查询”。要求以教师表为数据源,查询在1990年到1995年之间参加工作的、姓张的、职称不为空的教师信息,结果显示所有字段。
2、创建“数学系-计算机系-教师查询”。以教师表为数据源,查询数学系或计算机系的教师信息。结果显示下面字段:教师编号、姓名、性别、工作时间、职称、系别。其中“姓名”重命名为“教师姓名”。
3、创建“学生-课程-选课成绩-不及格查询”。以学生、选课成绩、课程为数据源,建立一多表查询,选出成绩<60分的记录。要求结果显示“学生编号”、“姓名”、“课程名称”、“学分”、“成绩”五个字段信息
知识要点:
1、设计查询的基本方法
2、查询设计视图的组成,以及使用
3、单表查询、多表查询、条件and和or的设置
4、字段中"*"号的作用(代表表的所有字段),字段重命名方法(新字段名称:原字段名)
知识点说明:
查询是利用数据库中存储的海量数据获取信息的主要方法与技术,同时也是对数据库数据进行操纵的手段。我们通常使用标准SQL(结构化查询语言)对数据库进行维护与管理。而ACCESS为了方便客户使用,避免客户掌握SQL大量相关语法;从而利用ACCESS中的查询对象,通过可视化设计界面完成查询的设计,在内部将设计转换为SQL语句。查询相关理论知识同学们请参见内部教程或课件。
所以本部分首先简单介绍SQL的查询语句Select。然后通过示例演示查询设计时跟Select语句的关系。请同学们务必要认真阅读下面知识,以便于培养查询的设计能力,能举一反三,而不是记忆大量查询示例。
SELECT的基本语法:
SELECT [ALL /DISTINCT] [,< 目标字段或表达式>]…
FROM [,< 表名或视图名>]…
[WHERE ]
[GROUP BY [ HAING< 条件表达式>]]
[ORDER BY< 列名2> {ASC/ DESC}]
其中<>表示在实际的语句中要采用所需内容进行代替
[]表示可以根据需要进行选择,也可以不选
{}表示必选项
Select语句主要采用自然英语,通过描述任务而得到最终结果。即:
1、从(From)哪些数据源或表(表名跟在from后面)中
2、选择出满足一定条件(where后语句)的记录
3、显示记录中指定的字段(select后字段列表)
4、显示的数据是否要排序,按哪些字段如何排序(order by 完成。ASC升序,DESC降序,默认为ASC)
5、在选择数据时是否要分组,按什么字段分组(group by)
6、对选择出的记录,是否要消除重复记录(DISTINCT)
上述步骤,也是我们设计任何查询时要遵循的。如果同学们每次面对一个查询,都能这样思考,进行自主设计,那么任何查询都是相对简单的。在本节的三个示例中,我们都将首先分析设计方法,在给出查询示例来进行讲解。希望同学们自己先分析设计,独立思考一下。
1、查询设计视图及工具栏。
创建查询,最常用也是最重要的方法就是利用“设计视图”来完成。对于后续要讲到的“交叉表查询”而言,使用“交叉表查询向导”要更有效一些。打开设计视图的方法如下:
(1)在数据库对象窗口选择“查询”对象→右侧双击“在设计视图中创建查询”(下1图)。
(2)“新建”→“设计视图”(下2图)。
打开如下的查询设计视图。其上部分为数据源,下部分为设计网格。查询设计视图中设计查询的基本步骤如下:
(1)添加数据源:将查询要求中(条件中、显示中)所涉及到的数据源(表或查询)添加到数据源区域(如下图是课程、选课成绩、学生)
(2)添加字段:在设计网格中的“字段”行添加所有涉及到的字段(要求显示的和作为条件的)。
(3)确定字段出处:如果是多表查询(即数据源有多个表或查询构成)应指定字段来自于那个表,因为可能在多个表中有同名字段。
(4)排序:按题目要求对相关字段设定排序方式。
(5)显示:决定字段是否显示。这里要注意的是,我们不一定显示所有的字段。可以让一些字段仅仅作为条件出现,而不与显示
(6)设定条件:设计网格的“条件”行输入用于选择的条件,若该行多个字段都设定了条件,则条件之间是AND关系;而在”或“行设定的条件之间是OR关系。
进入查询设计视图后,上方的工具栏如下。其中最为重要的快捷按钮描述如下:
(1)视图方式:有三个选项,“设计视图”(显示如上图的查询设计界面)、“数据表视图”(显示查询作用于数据的结果,可用于查看查询是否正确)、“SQL视图”(显示当前查询的SQL语句)
(2)选择查询类型:当我们要设计一下特殊查询时,需要先在“选择查询类型”选定查询类型,查询设计视图能相应的变化。
(3)运行查询:对于一般查询该按钮并不重要,因为可以通过“数据表视图”来查看结果;但操作查询必须使用“运行查询”才能真正对操作的基础数据进行更改。
(4)表达式生成器:可以帮助同学们输入条件。
2、创建“教师工作时间-姓名-职称查询”。
要求以教师表为数据源,查询在1990年到1995年之间参加工作的、姓张的、职称不为空的教师信息,结果显示所有字段。
查询设计分析:
(1)数据源为“教师”表。
(2)用于进行选择的条件有三个:工作时间在1990到1995之间、姓名第一字为“张”、职称不为空,三者之间是AND关系。
(3)要显示的字段为数据表中所有字段。
(4)通过题意,没有统计相关计算,所以不需要分组;也没要求排序
在设计视图设计(如下图):
(1)在数据源区添加“教师”表
(2)将表中所有字段都添加的“字段”行,并选择“显示”打勾(默认状态)
(3)在参与条件的字段的“条件”行输入条件表达式
查看结果是否正确,保存查询。设计好查询后,点击“数据表视图”查看查询结果(如下图1);如果正确,则保存并指定查询名。
上述查询还可以如下图设计。下面设计要点:
(1)利用“*”表示表中的所有字段。
(2)视图中的姓名、工作时间、职称字段仅用于构成条件,所以不于显示。(如果再显示的话,则结果中就会重复了)
在上述查询中的条件表达式,还可以有很多种写法,请同学参看内部教程查询中的表达式部分,下面仅简单举例。
(1)判断姓张:left([姓名],1)="张"、mid([姓名],1,1)="张"
(2)在1990到1995参加工作:year([工作时间]) between 1990 and 1995 、[工作时间]>=#1990-1-1# and [工作时间]<=#1995-12-31#
(3)职称不为空:对于空NULL。只能用两种表达式来比较,is null(为空)、is not null(不为空)
其中,视图中like "张*",即利用“like+通配符”来匹配文本串的方法,很多地方又称之为“模糊查询”。
3、创建“数学系-计算机系-教师查询”。
以教师表为数据源,查询数学系或计算机系的教师信息。结果显示下面字段:教师编号、姓名、性别、工作时间、职称、系别。其中“姓名”重命名为“教师姓名”。(演示条件OR设计,字段重命名)
查询设计分析:
(1)数据源为“教师”表。
(2)用于进行选择的条件有两个:系别为数据系、系别为计算机系,两者之间为OR关系(注意如何建立)
(3)要显示的字段:教师编号、姓名、性别、工作时间、职称、系别
(4)要求将“姓名”重命名为“教师姓名”(如何设计)
在设计视图设计(如下图):
(1)在数据源区添加“教师”表
(2)将表中教师编号、姓名、性别、工作时间、职称、系别字段都添加的“字段”行,并选择“显示”打勾(默认状态)
(3)在系别字段的“条件”行输入“数学”,在“或”行输入“计算机”
(4)重命名字段方法:“新字段名称:原字段名”,如下图中 教师姓名:姓名
查看结果是否正确,保存查询。设计好查询后,点击“数据表视图”查看查询结果(如下图1);如果正确,则保存并指定查询名。
注意下图中,“姓名”字段的标题变为了“教师姓名”。
说明:本例是为了演示如何设计多个条件为OR情况下的查询,所以在条件分析时,做如上分析。事实上,我们也可以看做一个条件,书写如下:
[系别]="数学" or [系别]="计算机"、[系别] in ("数学