5.1 初识查询
本节主要介绍查询的基础知识,包括查询的类型、视图以及创建方法等。只有掌握了这些基础知识,才能为后面的学习打下基础。
5.1.1 查询概述
查询是指在数据表中,根据给定的查询条件,对数据库中的数据记录进行检索,筛选出符合条件的记录,形成一个新的数据集合,从而方便对数据库中的表进行查看和分析。
用户在使用数据库的数据时,并不是简单地使用单个表中的数据,而是常常将有“关系”的多个表中的数据一起调出使用,有时还要把这些数据进行一定的计算以后才能使用,利用查询对象可以轻松达到这一目标。
概括地说,查询除了用来查看、搜索和分析数据外,还可以实现以下几项功能。
☆ 在数据库中添加、删除或更改数据。
☆ 实现筛选、计算、排序和汇总数据等操作。
☆ 可以完成复杂的多表之间的查询。
☆ 可以生成新的基本表。
☆ 自动处理数据管理任务,如定期查看最新数据。
☆ 查询结果可以作为其他查询、窗体和报表的数据源。
5.1.2 查询的类型
在Access 2016中,查询共分为5种类型:选择查询、操作查询、参数查询、交叉表查询和SQL查询。
1.选择查询
选择查询是最简单的查询类型,它从一个或多个表或查询中提取所需的数据,还可以使用条件表达式来限制查询结果,也可以对提取出的数据进行总计、求平均值等运算。选择查询又可分为4种类型:简单查询、汇总查询、重复项查询和不匹配项查询。
2.操作查询
操作查询是在一个操作中更改许多记录的查询。操作查询又可分为4种类型:生成表查询、更新查询、追加查询和删除查询。
提示
由于操作查询会更改表中的数据,而且这些更改无法撤销,用户在操作之前务必确认清楚,或者可以将数据进行备份,以免数据无法恢复而造成不必要的损失。
☆ 生成表查询:根据一个或多个表中的全部或部分数据新建表。
☆ 更新查询:对一个或多个表中的一组记录进行批量更改。例如,可以统一给某一类员工增加5%的工资。
☆ 追加查询:将一个(或多个)表中的一组记录追加到另一个(或多个)表的末尾。例如,获得了一些包含新客户信息表的数据库,利用追加查询将有关新客户的数据添加到原有“客户表”中即可,不必手工输入这些内容。
☆ 删除查询:从一个或多个表中删除一组记录。例如,可以使用删除查询来删除没有订单的产品。使用删除查询,将删除整个记录而不只是记录中的一些字段。
3.参数查询
参数查询是指在执行查询时,将弹出【输入参数】对话框,在其中输入参数,从而根据指定的参数返回查询结果。例如,可以创建一个参数查询,来提示用户输入员工姓名,然后查询出该员工的详细信息。
4.交叉表查询
交叉表查询是用来计算某一字段数据的总和、平均值或其他统计值,然后对结果进行分组,一组值垂直分布在数据表的左侧,另一组值水平分布在数据表的顶端,使得数据的显示形式更加清晰,用户更容易理解和分析。例如,用户想要查看产品小计,但还想要按月份进行统计,以便每行显示一种产品的小计,每列显示一个月份的产品小计。要同时显示一种产品的小计和一个月份的产品小计,就可以使用交叉表查询。
5. SQL查询
SQL查询是指使用SQL语句创建的查询。SQL查询又包括联合查询、传递查询、数据定义查询和子查询等4种。
☆ 联合查询:将一个或多个表、一个或多个查询的字段结合为一个记录集。
☆ 传递查询:用ODBC(开放式数据库互联)数据库的SQL语法将SQL命令直接传递到ODBC数据库进行执行处理,然后将结果传递回Access。
☆ 数据定义查询:该查询用于创建、修改、删除数据表或创建、删除索引。
☆ 子查询:包含另一个选择查询或操作查询中的SQL Select语句。
5.1.3 查询的视图
查询有三种视图模式:数据表视图、设计视图和SQL视图。
☆ 数据表视图:在该视图中,用户可以查看查询的结果。例如,在删除查询的数据表视图中,可以查看要删除的记录,如图5-1所示。
图5-1 数据表视图
☆ 设计视图:在该视图中,用户可以创建查询,设置查询的字段、条件等,如图5-2所示。
图5-2 设计视图
☆ SQL视图:在该视图中,用户可以查看自动生成的等效SQL语句,也可以直接在其中输入SQL语句来创建查询,如图5-3所示。
图5-3 SQL视图
5.1.4 创建查询的方法
用户主要有3种方法来创建查询:利用查询向导、利用设计视图、直接编写SQL语句。
利用查询向导创建的查询较为简单直观,单击【创建】选项卡下【查询】组中的【查询向导】按钮,即可启动向导,如图5-4所示。使用该方法可以创建4种类型的查询,包括简单查询、交叉表查询、重复项查询和不匹配项查询。
图5-4 单击【查询向导】按钮
当要创建有条件的查询或者其他复杂的查询时,查询向导并不能满足需求,此时可以利用设计视图来创建查询。单击【创建】选项卡下【查询】组中的【查询设计】按钮,即可进入查询的设计视图。使用该方法可以随时设定各种查询条件或以统计的方式来创建查询。
通常情况下,使用以上两种方法创建的查询可以满足用户的大部分需求。若要创建更高级的查询时,就需要直接编写SQL语句来实现。