Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(59)

时 间:2018-02-25 11:15:09
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用SQL创建查询。
正 文:

第十八章 用SQL管理查询

查询是能够将存储于一个或多个表中符合要求的数据挑选出来,并对挑选的结果按照某种规则进行运算的对象,是ACCESS数据库中的重要数据对象。查询的主要功能有:

1)以一个表,或多个表,或查询为基础,创建一个新的数据集;

2)通过创建查询,完成数据的统计分析等操作;

3)使用参数查询,可以使查询结果更具有动态性,实效性;

4)利用交叉表查询,可以将数据表中的某个字段进行汇总,并将其分组,从而更便于查看和分析数据;

5)利用动作查询可以生成表,可以更新、删除数据源表中的数据,也可以为数据源表追加数据;

6)查询可作为窗体和报表数据的来源,使只能有一个数据源的窗体和报表,实现以多个数据表为数据源成为可能。

可见查询是ACCESS数据库不可或缺的部分,对数据的管理起着至关重要的作用,因而ACCESS数据库管理系统也提供了一系列对查询进行管理的SQL语句。

第一节 用SQL创建查询

ACCESS中,我们不仅能通过各种图形介面创建与管理查询,也可以直接用SQL语句来实现查询的创建与管理。

一、用SQL创建Select(选择)查询

1、语法

Create VIEW view [(field1[, field2[, ...]])] AS selectstatement

Create VIEW语句包含以下部分:

部分

说明

view

要创建的视图的名称。

field1, field2

selectstatement中指定的字段的对应字段的名称。

selectstatement

SQL Select 语句。

2、备注

定义视图的 Select 语句不能为 Select...INTO 语句。

定义视图的 Select 语句不能包含任何参数。

视图名称不能与现有表的名称相同。

如果 Select 语句定义的查询可更新,则视图也可更新。否则视图为只读。

如果 Select 语句定义的查询中有任何两个字段具有相同的名称,则视图定义必须包含一个字段列表,该列表为查询中的每个字段指定唯一名称。

3、示例

ACCESSCreate VIEW创建的实际上就是一个命名的查询,查询名就代表了一个视图,下面我们通过实例就能看到这一点。

例一:

Create VIEW vista AS Select 'Hello World';

这条SQL语句实际上是在ACCESS数据库中创建了一外名为“vista”的查询,其内容为“Select 'Hello World' AS 表达式1;”

例二:

Create VIEW 成绩

AS Select *

FROM 学生成绩;

这个SQL语句创建一个名为成绩的选择查询,其内容为“Select * FROM 学生成绩;”

二、用SQL创建其它类型的查询

Create VIEWACCESS中只能创建选择查询,要创建其它类型的查询就要使用另一个重要的SQL语句“Create PROCEDURE”

1、语法

Create PROCEDURE procedure (param1 datatype[, param2 datatype][, ...]) AS sqlstatement

Create PROCEDURE语句包含以下部分:

部分

说明

procedure

过程的名称。

param1, param2

1255个字段名或参数。

datatype

主要Microsoft Access SQL数据类型之一或其同义词。

sqlstatement

SQL语句,如SelectUpdateDeleteInsertCreate TABLEDrop TABLE等。

2、备注

SQL过程包含一个PROCEDURE子句(该子句指定过程的名称)、参数定义的可选列表和单个SQL语句。

过程名称不能与现有表或查询的名称相同。

事实上,ACCESS中所谓存储过程,和SQL Server中的Stored Procedure是不能比的。它只能算是“Stored Procedure Lite”,不支持多条SQL语句,不支持逻辑语句(呵呵,毕竟不是 T-SQL)等等,我也还不清楚它是不是预编译了。不过,ACCESS轻量级存储过程,对于在数据库操作中规范,减少出错机率应该也有帮助,并且性能可能会有提高。

3、示例

ACCESS中所谓“存储过程”其实就是一个查询对象,“查询”,就扮演了存储过程的角色,我们所提到的ACCESS存储过程或者查询都是指的同一个东西。

示例一:

Create PROCEDURE 删除指定考生号的记录

(STUNO TEXT)

AS Delete FROM 学生成绩 Where 考生号=STUNO;

这条SQL语句创建了一个名为删除指定考生号的记录的参数查询,查询的内容为:PARAMETERS STUNO Text ( 255 );

Delete 学生成绩.[考生号]

FROM 学生成绩

Where (((学生成绩.[考生号])=[STUNO]));

示例二:

Create PROCEDURE 浏览成绩

AS Select *

FROM 学生成绩;

这个例子创建了一个无参数的名为浏览成绩的查询,可以浏览整个学生成绩表,其内容为“Select * FROM 学生成绩;”,也可以作为视图代替学生成绩表。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助