SELECT
语法
SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
FROM源
SELECT...INTO 语句可分为以下几个部分:
部分 说明
field1, field2 欲复制至新表的字段的名称。
NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存表的名称相同时,将会发生可以捕捉到的错误。
Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。
source 从其中选择记录的现存表的名称。它可以是单一表或多重表或一个查询。
说明
可以使用生成表查询来存档记录、生成表的复制备份、或生成输出至另一个数据库的表的副本、或用作定期显示数据的报表的依据。例如,可以每月运行一次同样的生成表查询,生成地区的销售月报。
SELECT...INTO 语句示例
此示例选择在员工表中的所有记录,然后复制到命名为 Emp Backup 的新表中。
Sub SelectIntoX()
Dim dbs As Database
Dim qdf As QueryDef
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 选择员工表中的所有记录,
' 并且复制到称作员工备份的新表中。
dbs.Execute "SELECT Employees.* INTO " _
& "[Emp Backup] FROM Employees;"
' 删除 QueryDef 因为这是一个演示。
dbs.Execute "DROP TABLE [Emp Backup];"
dbs.Close
End Sub
LEFT JOIN 和 RIGHT JOIN 运算
用于 FROM 子句时,把源表记录组合起来。
语法
FROM表1 [ LEFT | RIGHT ] JOIN表2
ON 表1.字段1 compopr 表2. 字段2
LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:
部分 说明
table1, table2 记录被组合的表的名称。
field1, field2 被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>."
说明
用 LEFT JOIN 运算 创建左边外部联接.左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
用RIGHT JOIN 运算 创建 右边外部联接.右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。
例如,可以使用 LEFT JOIN 与部门(左边)及员工(右边)表来选择所有的部门,包含了没有分配到员工的部门。可以使用 RIGHT JOIN 选择所有的员工,包含了没有分配到部门的员工。
下列示例显示如何在类标识符字段中联接类表及产品表。查询将会列出所有种类的列表,包含那些没有产品在其中的种类:
SELECT CategoryName,
ProductName
FROM Categories LEFT JOIN Products
ON Categories.CategoryID = Products.CategoryID;
在本例中,CategoryID 是联接的字段,但由于它不包含在 SELECT 语句中,因此,也不包含在查询结果中。要包含联接的字段,请在 SELECT 语句中输入字段名 — 在这个示例中为 Categories.CategoryID。
--------------------------------------------------------------------------------
注意
欲创建只包含联接字段中数据相同的记录的查询,请用 INNER JOIN 运算。
在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写嵌套的 INNER JOIN。请参阅 INNER JOIN 主题中有关使用嵌套的讨论,从其中可获知如何在其它联接中编写嵌套联接的信息。
可以链接多个 ON 子句。若需更多信息,请参阅在 INNER JOIN 主题中的子句链接的讨论。
若试图联接包含 Memo或 OLE Object数据的字段,会导致错误。
PARAMETERS 声明
把参数的名称和数据类型在参数查询中说明。
语法
PARAMETERS name datatype [, name datatype [, ...]]
PARAMETERS 声明有这些部分:
部分 说明
name 参数的名称。具有Name特性(此特性属于 Parameter对象),并被用于在Parameters中标识此参数。当应用程序运行查询时,可用 name 作为字符串显示在对话框中。包含空格或标点符号的文本应用方括号 ([ ]) 括起来。例如,[Low price] 及 [Begin report with which month?] 都是有效的 name 参数。
datatype 基本 Microsoft Jet SQL数据类型或其同义字之一。
说明
对于有规则运行的查询,可用 PARAMETERS 声明创建一个参数查询。参数查询便于自动更改查询准则。对于参数查询,代码必须提供每次查询运行时使用的参数。
PARAMETERS 声明是可选的,但是当使用时,须置於任何其他语句之前,包括 SELECT 语句。
如果声明包含一个以上的参数,用逗点将它们分隔。下列示例中声明了两个参数:
PARAMETERS [Low price] Currency, [Beginning date] DateTime;
在 WHERE 或 HAVING 子句中可以使用 name,但不能用数据类型。下列示例中要提供两个参数,然后使用这个条件来查询 Orders 表中的记录。
PARAMETERS [Low price] Currency,
[Beginning date] DateTime;
SELECT OrderID, OrderAmount
FROM Orders
WHERE OrderAmount > [Low price]
AND OrderDate >= [Beginning date];
WITH OWNERACCESS OPTION 声明
在具有安全工作组的多用户环境中,使用该声明和查询给运行该查询的用户与查询所有者相同的权限。
语法
sqlstatement
WITH OWNERACCESS OPTION;
说明
WITH OWNERACCESS OPTION 声明是可选的。
下列示例使用户能够查看工资信息(即使用户没有权限查看工资表),提供查询主人拥有的权限:
SELECT LastName,
FirstName, Salary
FROM Employees
ORDER BY LastName
WITH OWNERACCESS OPTION;
如果用户无法创建表或添加,可使用 WITH OWNERACCESS OPTION来运行 制表或追加查询。
如果要强制工作组安全性设置及用户的权限,不要包含 WITH OWNERACCESS OPTION 声明。
此选项要求您必须访问与该数据库相关的 System.mdw 文件。它只在安全的多用户实现中才真正有用。
TRANSACTION 语句
用于启动和结束显式事务。
语法
启动新事务.
BEGIN TRANSACTION
通过提交事务期间进行的所有工作来结束事务。
COMMIT [TRANSACTION | WORK]
通过回滚事务期进行的所有工作来结束事务。
ROLLBACK [TRANSACTION | WORK]
说明
事务不会自启动。要启动事务,必须使用BEGIN TRANSACTION来启动。
事务可嵌套多达5层。要启动嵌套事务,使用当前事务中的BEGIN TRANSACTION。
连接表不支持事务。
CREATE INDEX 语句
在现有的表上创建新的索引。
--------------------------------------------------------------------------------
注意 对于非 Microsoft JET 数据库,Microsoft Jet 数据库引擎不支持使用 CREATE INDEX (除了在 ODBC 链接表上创建虚拟索引)或任何的数据定义语言 (DDL) 语句。而使用 DAO创建方法。更详细的信息,请参阅说明部分。
--------------------------------------------------------------------------------
语法
CREATE [ UNIQUE ] INDEX 索引
ON 表(字段 [ASC|DESC][, 字段 [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
CREATE INDEX 语句可分为以下几个部分:
部分 说明
index 欲创建的索引的名称。
table 将包含该索引的现存表的名称。
field 欲被索引的字段的名称。要创建单一字段索引,在表名称后面的括号中列出字段名。要创建多重字段索引,列出包括在索引中的每一个字段的名称。如果索引为递减排序,使用 DESC 保留字;否则,索引总是递增排序。
说明
在不同记录的索引字段之中不允许有重复值时,请使用 UNIQUE 保留字。
在可选的 WITH 子句中,可以强制数据有效性规则:你可以:
通过使用 DISALLOW NULL 选项来禁止在新记录的索引字段中使用 Null 项。
通过使用 IGNORE NULL 选项,避免在索引中包含索引字段为 Null 值的记录。
使用PRIMARY保留字指定带索引的字段为 主键。这里隐喻此键是唯一的,所以可以省略 UNIQUE 保留字。
可以使用 CREATE INDEX 把虚拟索引 建立在连接表 上,此表位于 ODBC 数据源中,例如未建立索引的SQL服务器。不需要权限或访问远程服务器来创建虚拟索引,且远程数据库并不会察觉到虚拟索引也不受虚拟索引的影响。对于由外部链接之表和数据库内部之表皆可使用相同的语法。在一个通常为“只读”状态的表格上创建虚拟索引将尤为有用。
您也可以使用 ALTER TABLE 语句 在表中添加单一或多重字段索引,也可以使用 ALTER TABLE 语句或 DROP 语句 删除用 ALTER TABLE 或 CREATE INDEX 创建的索引。
--------------------------------------------------------------------------------
注意 在已经具有主键的表上创建新索引时,不得使用 PRIMARY 保留字;否则,会发生错误。
GRANT 语句
赋予当前 用户 或组特权。
语法
GRANT {特权[, 特权, 匽} ON
{TABLE 表 |
OBJECT 对象|
CONTAINER}
TO {特许名称[, 特许名称, 匽}
--------------------------------------------------------------------------------
这 DROP 语句分为以下几个部分:
部分 说明
特权 赋予的 特权。用下列关键词标明特权:
SELECT, DELETE, INSERT, UPDATE, DROP, SELECTSECURITY, UPDATESECURITY, DBPASSWORD, UPDATEIDENTITY, CREATE, SELECTSCHEMA, SCHEMA和 UPDATEOWNER.
表名 任何有效的表名。
对象 它可以包括任何非表对象。已存储的查询(表或过程)就是一个例子。
包容器 有效包容器的名称。
特许名称 用户名或组名
REVOKE 语句
从当前 用户 或 组中取消. 特权。
语法
REVOKE {特权[, 特权, 匽} ON
{TABLE 表 |
OBJECT 对象|
CONTAINER}
FROM {特许名称[, 特许名称, 匽}
--------------------------------------------------------------------------------
UPDATE 语句可分为以下几个部分:
部分 说明
特权 被取消的 特权。用下列关键词标明特权:
SELECT, DELETE, INSERT, UPDATE, DROP, SELECTSECURITY, UPDATESECURITY, DBPASSWORD, UPDATEIDENTITY, CREATE, SELECTSCHEMA, SCHEMA和 UPDATEOWNER.
table 任何有效的表名。
object 它可以包括任何非表对象。已存储的查询(表或过程)就是一个例子。
包容器 有效包容器的名称。
特许名称 用户名或组 名
ADD USER 语句
在一个当前组中添加一个或更多当前用户。
语法
ADD USER 用户[, 用户, 匽 TO 组
--------------------------------------------------------------------------------
UPDATE 语句可分为以下几个部分:
部分 说明
用户 被加到工作组信息文件的用户名。
组 被加到工作组信息文件的组名。
说明
一旦一个 用户 被添加到 组 中,这个 用户 就具有了 组 所具有的权限。