全面掌握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、示例
在ACCESS中Create 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 VIEW在ACCESS中只能创建选择查询,要创建其它类型的查询就要使用另一个重要的SQL语句“Create PROCEDURE”。
1、语法
Create PROCEDURE procedure (param1 datatype[, param2 datatype][, ...]) AS sqlstatement
Create PROCEDURE语句包含以下部分:
部分 |
说明 |
procedure |
过程的名称。 |
param1, param2 |
从1到255个字段名或参数。 |
datatype |
主要Microsoft Access SQL数据类型之一或其同义词。 |
sqlstatement |
SQL语句,如Select、Update、Delete、Insert、Create TABLE、Drop 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源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- 高效率在导入数据前删除记录(11.10)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)