SQL语言在ACCESS数据库中的应用.doc_第1页
SQL语言在ACCESS数据库中的应用.doc_第2页
SQL语言在ACCESS数据库中的应用.doc_第3页
SQL语言在ACCESS数据库中的应用.doc_第4页
SQL语言在ACCESS数据库中的应用.doc_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Access 开发人员参考 SELECT 语句语句 Microsoft Access SQL 指示 Microsoft Access 数据库引擎将数据库中的信息作为一组记录返回 语法语法 SELECT predicate table table field1 AS alias1 table field2 AS alias2 FROM tableexpression IN externaldatabase WHERE GROUP BY HAVING ORDER BY WITH OWNERACCESS OPTION SELECT 语句包含以下部分 部分部分说明说明 predicate 下列谓词之一 ALL DISTINCT DISTINCTROW 或 TOP 可以使用谓词来限定返回记录的数量 如果没有指定谓词 则默认值为 ALL 指定选择指定表中的所有字段 table表的名称 该表包含从中选择记录的字段 field1 field2 字段名 这些字段包含了要检索的数据 如果包括多个字段 将按它们的排列顺序对其进行检索 alias1 和 alias2用作列标题的名称 不是 table 中的原始列名 tableexpression表名称 其中包含要检索的数据 externaldatabase如果 tableexpression 中的表不在当前数据库中 则使用该参数指定该数据库名 说明说明 若要执行此项操作 Microsoft Jet 数据库引擎会搜索指定的表 并提取选定的列 再选择符合条 件的行 然后按指定的顺序对得到的行进行排序或分组 SELECT 语句不会更改数据库中的数据 SELECT 通常是 SQL 语句中的第一个词 大多数 SQL 语句都是 SELECT 或 SELECT INTO 语句 SELECT 语句最简化的语法为 SELECT fields FROM table 可以通过星号 来选择表中所有的字段 以下的示例选择在 Employees 表中的所有字段 SELECT FROM Employees 如果一个字段名包括于 FROM 子句内的多个表中 请在该字段前面加上表名和 圆点 号 在下 面的示例中 Department 字段同时存在于 Employees 表和 Supervisors 表中 SQL 语句从 Employees 表中选择出部门并从 Supervisors 表中选择出主管名 SELECT Employees Department Supervisors SupvName FROM Employees INNER JOIN Supervisors WHERE Employees Department Supervisors Department 创建 Recordset 对象时 Microsoft Jet 数据库引擎将使用表的字段名作为 Recordset 对象中的 Field 对象名 如果需要其他字段名或者名称不适合用来生成该字段的表达式 请使用 AS 保留字 以下示例使用标题 Birth 来命名生成的 Recordset 对象中的返回 Field 对象 SELECT BirthDate AS Birth FROM Employees 只要使用的聚合函数或查询返回的是不明确的或重复的 Field 对象名称 就必须使用 AS 子句为该 Field 对象另外提供一个替代名称 以下示例使用标题 HeadCount 来命名生成的 Recordset 对 象中的返回 Field 对象 SELECT COUNT EmployeeID AS HeadCount FROM Employees 可以在 SELECT 语句中使用其他子句进一步约束和组织所返回的数据 有关详细信息 请参阅相应 子句的帮助主题 示例示例 下面的一些示例假定 Employees 表中存在一个假想的 Salary 字段 请注意 该字段实际并不存在 于罗斯文数据库的 Employees 表中 本例基于 SQL 语句创建一个动态集类型的 Recordset 该语句选择 Employees 表中所有记录的 LastName 和 FirstName 字段 它调用 EnumFields 过程 该过程将 Recordset 对象的内容显示 到调试窗口 Sub SelectX1 Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Select the last name and first name values of all records in the Employees table Set rst dbs OpenRecordset SELECT LastName Populate the recordset rst MoveLast Call EnumFields to print the contents of the Recordset EnumFields rst 12 dbs Close End Sub 以下示例计算 PostalCode 字段中有条目的记录数 并将返回的字段命名为 Tally Sub SelectX2 Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Count the number of records with a PostalCode value and return the total in the Tally field Set rst dbs OpenRecordset SELECT Count Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Specify field width 12 EnumFields rst 12 dbs Close End Sub 以下示例显示雇员数以及平均薪水和最高薪水 Sub SelectX3 Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Count the number of employees calculate the average salary and return the highest salary Set rst dbs OpenRecordset SELECT Count Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Pass the Recordset object and desired field width EnumFields rst 17 dbs Close End Sub 调用过程向 Sub 过程 EnumFields 传递了一个 Recordset 对象 然后该过程设置 Recordset 的字段的格式并将这些字段显示到调试窗口 intFldLen 变量是需要的显示字段宽度 有些字段可能会被截断 Sub EnumFields rst As Recordset intFldLen As Integer Dim lngRecords As Long lngFields As Long Dim lngRecCount As Long lngFldCount As Long Dim strTitle As String strTemp As String Set the lngRecords variable to the number of records in the Recordset lngRecords rst RecordCount Set the lngFields variable to the number of fields in the Recordset lngFields rst Fields Count Debug Print There are print the record number and field values rst MoveFirst For lngRecCount 0 To lngRecords 1 Debug Print Right Space 6 For lngFldCount 0 To lngFields 1 Check for Null values If IsNull rst Fields lngFldCount Then strTemp Else Set strTemp to the field contents Select Case rst Fields lngFldCount Type Case 11 strTemp Case dbText dbMemo strTemp rst Fields lngFldCount Case Else strTemp str rst Fields lngFldCount End Select End If Debug Print Left strTemp Next lngFldCount Debug Print rst MoveNext Next lngRecCount End Sub Access 开发人员参考 SELECT INTO 语句语句 Microsoft Access SQL 创建生成表查询 语法语法 SELECT field1 field2 INTO newtable IN externaldatabase FROM source SELECT INTO 语句包含以下部分 部分部分说明说明 field1 field2要复制到新表中的字段的名称 newtable 要创建的表的名称 它必须符合标准命名约定 如果 newtable 和现有表同名 会发生一个可捕 捉的错误 externaldatabase外部数据库的路径 有关路径的说明 请参阅 IN 子句 source从中选择记录的现有表的名称 它可以是单个或多个表或查询 说明说明 可以通过生成表查询来存档记录 或制作表的备份副本 或者将副本导出到其他数据库 或作为某 个特定时间段的数据的报表产生基础 例如 可以通过每个月运行相同的生成表查询来生成一个月 销售区域报表 注释注释 您可能希望定义新表的主键 创建表时 新表中的字段会继承查询的基表中每个字段的数 据类型和字段大小 但不会传输其他字段或表属性 若要将数据添加到现有表中 请使用 INSERT INTO 语句 而不用创建追加查询 若要在运行生成表查询之前查找出将要选择哪些记录 请先检查使用相同选择条件的 SELECT 语句的结果 示例示例 以下示例选择 Employees 表中的所有记录 并将它们复制到名为 Emp Backup 的新表中 Sub SelectIntoX Dim dbs As Database Dim qdf As QueryDef Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Select all records in the Employees table and copy them into a new table Emp Backup dbs Execute SELECT Employees INTO Delete the table because this is a demonstration dbs Execute DROP TABLE Emp Backup dbs Close End Sub Access 开发人员参考 INSERT INTO 语句语句 Microsoft Access SQL 将一个或多个记录添加到表中 该语句称为追加查询 语法语法 多记录追加查询 INSERT INTO target field1 field2 IN externaldatabase SELECT source field1 field2 FROM tableexpression 单记录追加查询 INSERT INTO target field1 field2 VALUES value1 value2 INSERT INTO 语句包含以下部分 部分部分说明说明 target要追加记录的表或查询的名称 field1 field2 向其中追加数据的字段的名称 如果在 target 参数之后 或获取其中数据的字段的名称 如果 在 source 参数之后 externaldatabase外部数据库的路径 有关路径的说明 请参阅 IN 子句 source要复制其中记录的表或查询的名称 tableexpression 作为插入记录来源的表的名称 该参数可以是单个表名或者是从 INNER JOIN LEFT JOIN 或 RIGHT JOIN 操作或保存的查询产生的组合结果 value1 value2 要插入新记录特定字段中的值 每个值将插入到与该值在列表中的位置相对应的字段内 value1 将插入到新记录的 field1 字段 value2 插入到 field2 字段等等 这些值必须用逗号分隔 并且 用引号 引起来 说明说明 通过如上所述的单记录追加查询语法 可以使用 INSERT INTO 语句向表中追加单个记录 在这种 情形下 代码要指定每个记录字段的名称和值 必须指定每一个将被赋值的记录字段 并且要给出 该字段的值 如果没有指定每个字段的值 则在缺少值的列中插入默认值或 Null 值 记录将追加 到表的末尾 通过如上所示的多字段追加查询语法的 SELECT FROM 子句 还可以使用 INSERT INTO 追加一 组来自其他表或查询的记录 这种情形下 SELECT 子句指定将要追加到指定的 target 表中的字段 source 或 target 表可以指定表或查询 如果指定了查询 Microsoft Access 数据库引擎会将记录 追加到查询指定的任何表或所有表中 INSERT INTO 是可选的 但是如果包括它 应将它置于 SELECT 语句前面 如果目标表中包含主键 请确保追加到主键字段中的值是唯一的 非 Null 的 否则 Microsoft Access 数据库引擎不会追加这些记录 如果将一个自动编号字段记录追加到一个表中 并且希望对该追加的记录重新编号 那么不要在查 询语句中包含自动编号字段 如果希望保持字段的原始值 请务必在查询语句中包含自动编号字段 通过 IN 子句可以将记录追加到其他数据库的表中 若要新建表 请使用 SELECT INTO 语句来创建一个生成表查询 若要在运行追加查询之前找出将要追加哪些记录 可以先执行使用同样选择条件的选择查询并查看 其结果 追加查询把记录从一个或多个表复制到其他表中 包含所追加的记录的表不会受追加查询影响 如果不想从其他表中追加现有记录 可以通过 VALUES 子句指定每个字段在新的单个记录中的值 如果忽略了字段列表 VALUES 子句必须包括该表中每个字段的值 否则 INSERT 操作将会失败 通过附加的带有 VALUES 子句的 INSERT INTO 语句 可以创建希望得到的每一个新增记录 示例示例 本例选择假想的 New Customers 表中的所有记录并将这些记录添加到 Customers 表 如果未指定 各个列 那么 SELECT 中的表列名必须与 INSERT INTO 中的表列名完全匹配 Sub InsertIntoX1 Dim dbs As Database Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Select all records in the New Customers table and add them to the Customers table dbs Execute INSERT INTO Customers dbs Close End Sub 以下示例在 Employees 表中创建一个新记录 Sub InsertIntoX2 Dim dbs As Database Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Create a new record in the Employees table The first name is Harry the last name is Washington and the job title is Trainee dbs Execute INSERT INTO Employees dbs Close End Sub Access 开发人员参考 UPDATE 语句语句 Microsoft Access SQL 创建一个更新查询 以便基于特定的条件更改指定表的字段值 语法语法 UPDATE table SET newvalue WHERE criteria UPDATE 语句包含以下部分 部分部分说明说明 table表名 该表包含要修改的数据 newvalue表达式 该表达式确定将要插入到已更新记录的特定字段内的值 criteria表达式 用来确定将更新哪些记录 只有满足该表达式的记录才会被更新 说明说明 当需要更改多个记录或者需要更改的记录存在于多个表中时 UPDATE 语句是最有用的 可以同时更改多个字段 下面的示例把英国货主的订货量的值增加百分之十 并且把运费的值增加 百分之三 UPDATE Orders SET OrderAmount OrderAmount 1 1 Freight Freight 1 03 WHERE ShipCountry UK 要点要点 UPDATE 不会生成结果集 而且 使用更新查询来更新记录后 您不能取消该操作 如果 希望了解已更新哪些记录 请先检查使用相同条件的选择查询的结果 然后再运行更新查 询 不论什么时候都要维护数据的备份 如果更新了错误记录 您可以从备份副本中检索这些 记录 示例示例 以下示例将当前的 ReportsTo 值为 2 的所有雇员记录的 ReportsTo 字段中的值改为 5 Sub UpdateX Dim dbs As Database Dim qdf As QueryDef Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Change values in the ReportsTo field to 5 for all employee records that currently have ReportsTo values of 2 dbs Execute UPDATE Employees dbs Close End Sub Access 开发人员参考 DELETE 语句语句 Microsoft Access SQL 创建一个删除查询 用于从 FROM 子句中列出的一个或多个表中删除满足 WHERE 子句的记录 语法语法 DELETE table FROM table WHERE criteria DELETE 语句包含以下部分 部分部分说明说明 table从中删除记录的表的名称 可选 table从中删除记录的表的名称 criteria表达式 用于确定要删除哪些记录 注解注解 希望删除多个记录时 DELETE 语句特别有用 要从数据库中删除整个表 可以使用带有 DROP 语句的 Execute 方法 但是 如果删除表 表的 结构就会丢失 而使用 DELETE 语句时 只会删除表中的数据 表的结构和所有表属性 如字段属 性和索引 将保持不变 可以使用 DELETE 从与其他表存在一对多关系的表中删除记录 当查询中删除了关系的某一方中的 相应记录时 级联删除操作会删除在关系的多方表中的相应记录 例如 在 客户 表和 订单 表的关 系中 客户 表是关系的一方 而 订单 表则是关系中的多方 如果指定了级联删除选项 那么从 客户 表中删除一个记录将导致 订单 表中相应的记录被删除 删除查询将删除整个记录 而不仅仅删除特定字段中的数据 如果要删除特定字段的值 请创建一 个更新查询 将相应字段的值更改为 Null 要点要点 使用删除查询删除记录后 无法取消该操作 如果要知道删除了哪些记录 先检查使用相 同条件的选择查询的结果 然后运行删除查询 不论什么时候都要维护数据的备份 如果错删了记录 还可以从备份中检索这些记录 示例示例 本例删除职务为 Trainee 的雇员的所有记录 当 FROM 子句中仅包含一个表时 您不必在 DELETE 语句中列出该表的名称 Sub DeleteX Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Delete employee records where title is Trainee dbs Execute DELETE FROM dbs Close End Sub Access 开发人员参考 EXECUTE 语句语句 Microsoft Access SQL 用于启动过程的执行 语法语法 EXECUTE procedure param1 param2 EXECUTE 语句包含以下部分 部分部分说明说明 procedure要执行的过程的名称 param1 param2 由过程定义的参数的值 示例示例 以下示例将查询命名为 CategoryList 以下示例调用 EnumFields 过程 您可以在 SELECT 语句示例中找到该过程 Sub ProcedureX Dim dbs As Database rst As Recordset Dim qdf As QueryDef strSql As String Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb strSql PROCEDURE CategoryList Create a named QueryDef based on the SQL statement Set qdf dbs CreateQueryDef NewQry strSql Create a temporary snapshot type Recordset Set rst qdf OpenRecordset dbOpenSnapshot Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Pass the Recordset object and desired field width EnumFields rst 15 Delete the QueryDef because this is a demonstration dbs QueryDefs Delete NewQry dbs Close End Sub Access 开发人员参考 TRANSACTION 语句语句 Microsoft Access SQL 用于初始化和结束显式事务处理 语法语法 初始化新事务处理 BEGIN TRANSACTION 通过提交事务处理期间执行的所有工作来结束事务处理 COMMIT TRANSACTION WORK 通过回滚事务处理期间执行的所有工作来结束事务处理 ROLLBACK TRANSACTION WORK 说明说明 事务处理不会自动启动 若要启动一个事务处理 必须通过 BEGIN TRANSACTION 进行显式调用 事务处理嵌套的最大深度为五级 若要启动一个嵌套事务处理 请在现有的事务处理上下文中使用 BEGIN TRANSACTION 链接表不支持事务处理 Access 开发人员参考 TRANSFORM 语句语句 Microsoft Access SQL 创建交叉表查询 语法语法 TRANSFORM aggfunction selectstatement PIVOT pivotfield IN value1 value2 TRANSFORM 语句包含以下部分 部分部分说明说明 aggfunction对所选数据进行计算的 SQL 聚合函数 selectstatementSELECT 语句 pivotfield希望用于创建查询结果集中列标题的字段或表达式 value1 value2用于创建列标题的固定值 说明说明 使用交叉表查询汇总数据时 将从作为列标题的指定字段或表达式中选择值 以便能够以一种比使 用选择查询更紧凑的方式来查看数据 TRANSFORM 是可选的 但如果包括它 则应为 SQL 字符串中的第一个语句 它在指定作为行标 题的字段的 SELECT 语句之前 在指定行分组方法的 GROUP BY 子句之前 您也可以包含其他子 句 例如 指定其他选择或排序条件的 WHERE 还可以在交叉表查询中使用子查询作为谓词 特别是在 WHERE 子句中 pivotfield 中返回的值作为查询结果集中的列标题 例如 在交叉表查询中如果依据月销售量来透视 销售数据 将会创建 12 个列 可以约束 pivotfield 以便从可选 IN 子句中所列出的固定值 value1 value2 内选择标题 也可以包含固定值用于没有数据来创建其他列的情况 示例示例 以下示例使用 SQL TRANSFORM 子句创建交叉表查询 以显示每个雇员在 1994 年的每个日历季 度完成的订单数 运行此过程需要使用 SQLTRANSFORMOutput 函数 Sub TransformX1 Dim dbs As Database Dim strSQL As String Dim qdfTRANSFORM As QueryDef strSQL PARAMETERS prmYear SHORT TRANSFORM TRANSFORM booFirst False Else Debug Print fldLoop Name End If Next fldLoop Debug Print Do While Not EOF booFirst True For Each fldLoop In Fields If booFirst True Then Debug Print fldLoop Debug Print booFirst False Else Debug Print fldLoop End If Next fldLoop Debug Print MoveNext Loop End With End Function Access 开发人员参考 INNER JOIN 操作操作 Microsoft Access SQL 只要两个表的公共字段有匹配值 就将这两个表中的记录组合起来 语法语法 FROM table1 INNER JOIN table2 ON table1 field1 compopr table2 field2 INNER JOIN 操作包含以下部分 部分部分说明说明 table1 table 2 要组合其中记录的表的名称 field1 field2 被联接的字段的名称 如果它们不是数字 则这些字段的数据类型必须相同 并且包含同类数据 但 是 它们不必具有相同的名称 compopr任何关系比较运算符 或 说明说明 可以在任何 FROM 子句中使用 INNER JOIN 操作 这是最常用的联接类型 只要两个表的公共字 段上存在相匹配的值 Inner 联接就会组合这些表中的记录 可以将 INNER JOIN 用于 Departments 及 Employees 表 以选择每个部门的所有雇员 相反 选择所有部门 即使某些部门中并没有分配雇员 或者所有雇员 即使某些雇员没有分配到任何部 门 则可以使用 LEFT JOIN 或 RIGHT JOIN 操作来创建外部联接 如果试图联接包含 Memo 或 OLE 对象数据的字段 将产生错误 可以联接任何两个相似类型的数字字段 例如 可以联接自动编号和长整型字段 因为它们均是相 似类型 然而 不能联接单精度型和双精度型类型字段 以下示例演示如何通过 CategoryID 字段联接 Categories 和 Products 表 SELECT CategoryName ProductName FROM Categories INNER JOIN Products ON Categories CategoryID Products CategoryID 在前面的示例中 CategoryID 是联接字段 但是它不包含在查询输出中 因为它不包含在 SELECT 语句中 若要包含联接字段 请在 SELECT 语句中包含该字段名 在本例中为 Categories CategoryID 也可以在 JOIN 语句中链接多个 ON 子句 请使用如下语法 SELECT fields FROM table1 INNER JOIN table2 ON table1 field1 compopr table2 field1 AND ON table1 field2 compopr table2 field2 OR ON table1 field3 compopr table2 field3 也可以通过如下语法嵌套 JOIN 语句 SELECT fields FROM table1 INNER JOIN table2 INNER JOIN table3 INNER JOIN tablex INNER JOIN ON table3 field3 compopr tablex fieldx ON table2 field2 compopr table3 field3 ON table1 field1 compopr table2 field2 LEFT JOIN 或 RIGHT JOIN 可以嵌套在 INNER JOIN 之中 但是 INNER JOIN 不能嵌套于 LEFT JOIN 或 RIGHT JOIN 之中 示例示例 本例创建两个等同联接 一个是 Order Details 表与 Orders 表之间的联接 另一个是 Orders 表与 Employees 表之间的联接 这是很有必要的 因为 Employees 表不包含销售数据 而 Order Details 表不包含雇员数据 查询将产生雇员及其总销售额的列表 以下示例调用 EnumFields 过程 您可以在 SELECT 语句示例中找到该过程 Sub InnerJoinX Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Create a join between the Order Details and Orders tables and another between the Orders and Employees tables Get a list of employees and their total sales Set rst dbs OpenRecordset SELECT DISTINCTROW Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Pass the Recordset object and desired field width EnumFields rst 20 dbs Close End Sub Access 开发人员参考 LEFT JOIN 和和 RIGHT JOIN 操作操作 Microsoft Access SQL 在任何 FROM 子句中用于组合源表记录 语法语法 FROM table1 LEFT RIGHT JOIN table2 ON table1 field1 compopr table2 field2 LEFT JOIN 和 RIGHT JOIN 操作包含以下部分 部分部分说明说明 table1 table2要组合其中记录的表的名称 field1 field2 被联接的字段的名称 这些字段必须具有相同的数据类型 并且包含相同类型的数据 但它们不必同 名 compopr任何关系比较运算符 或 说明说明 通过 LEFT JOIN 操作可以创建一个左外部联接 左外部联接包含两个表中第一个 左 表中的所有 记录 即使在第二个 右 表中没有匹配的记录值 通过 RIGHT JOIN 操作可以创建一个右外部联接 右外部联接包含两个表中第二个 右 表中的所 有记录 即使在第一个 左 表中没有匹配的记录值 例如 可以将 LEFT JOIN 用于 Departments 左 和 Employees 右 表以选择所有部门 包括 那些没有被分配雇员的部门 若要选择所有雇员 包括那些没有被分配到任何部门的雇员 可以使 用 RIGHT JOIN 下面的示例展示了如何通过 CategoryID 字段联接 Categories 表和 Products 表 该查询将产生一 个所有分类的列表 其中包括不包含任何产品的分类 SELECT CategoryName ProductName FROM Categories LEFT JOIN Products ON Categories CategoryID Products CategoryID 在以下示例中 CategoryID 是联接字段 但是它不包括在查询结果中 因为它没有包括在 SELECT 语句中 若要包括联接的字段 请在 SELECT 语句中输入字段名 在本例中为 Categories CategoryID 注释注释 若要创建一个只包括在联接字段中具有相同数据的记录 请使用 INNER JOIN 操作 LEFT JOIN 或 RIGHT JOIN 可以嵌套到 INNER JOIN 语句中 但是 INNER JOIN 语句不 能嵌套到 LEFT JOIN 或 RIGHT JOIN 语句中 请参阅 INNER JOIN 主题中有关嵌套的 讨论 以了解如何在其他联接中嵌套联接 可以链接多个 ON 子句 请参阅 INNER JOIN 主题中有关子句链接的讨论 以了解如何操 作 如果试图联接包含 Memo 或 OLE 对象数据的字段 将产生错误 示例示例 本例假设 Employees 表中存在假想的 Department Name 和 Department ID 字段 请注意 这些 字段并不实际存在于 Northwind 数据库的 Employees 表中 以下示例选择所有部门 包括那些没有雇员的部门 以下示例调用 EnumFields 过程 您可以在 SELECT 语句示例中找到该过程 Sub LeftRightJoinX Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Select all departments including those without employees Set rst dbs OpenRecordset SELECT Department Name Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Pass the Recordset object and desired field width EnumFields rst 20 dbs Close End Sub Access 开发人员参考 UNION 操作操作 Microsoft Access SQL 创建联合查询 该查询将两个或两个以上的独立查询或表的结果组合在一起 语法语法 TABLE query1 UNION ALL TABLE query2 UNION ALL TABLE queryn UNION 操作包含以下部分 部分部分说明说明 query1 n一个 SELECT 语句 存储查询的名称或在 TABLE 关键字后面的存储表的名称 注解注解 可以在单个 UNION 操作中以任何组合方式合并两个或两个以上的查询 表和 SELECT 语句的结果 下面的示例将一个名为 New Accounts 的现有表和一个 SELECT 语句进行合并 TABLE New Accounts UNION ALL SELECT FROM Customers WHERE OrderAmount 1000 默认情况下 使用 UNION 操作时不会返回重复的记录 但是 可以包含 ALL 谓词以确保返回所有 记录 这样也会使查询运行得更快 在 UNION 操作中的所有查询必须请求相同数量的字段 但是 这些字段不必都具有相同的大小或 数据类型 请只在第一个 SELECT 语句中使用别名 因为别名在其他语句中会被忽略 在 ORDER BY 子句中 请根据第一个 SELECT 语句中使用的字段名来引用该字段 注释注释 可以在每个 query 参数中使用 GROUP BY 或 HAVING 子句 以便对返回的数据进行分组 可以在最后一个 query 参数的末尾使用 ORDER BY 子句 以便按指定顺序显示返回数据 示例示例 以下示例检索巴西的所有供应商和客户的名称和所在城市 以下示例调用 EnumFields 过程 您可以在 SELECT 语句示例中找到该过程 Sub UnionX Dim dbs As Database rst As Recordset Modify this line to include the path to Northwind on your computer Set dbs OpenDatabase Northwind mdb Retrieve the names and cities of all suppliers and customers in Brazil Set rst dbs OpenRecordset SELECT CompanyName Populate the Recordset rst MoveLast Call EnumFields to print the contents of the Recordset Pass the Recordset object and desired field width EnumFields rst 12 dbs Close End Sub Access 开发人员参考 PARAMETERS 声明声明 Microsoft Access SQL 声明在参数查询中的每个参数的名称和数据类型 语法语法 PARAMETERS name datatype name datatype PARAMETERS 声明包含以下部分 部分部分说明说明 name 参数的名称 该名称被赋给 Parameter 对象的 Name 属性 并且用来在 Parameters 集合中标识该 参数 可以将 name 作为应用程序运行查询时在对话框中显示的字符串 请用方括号 将包含空格或 标点的文本括起来 例如 Low price 和 Begin report with which month 都是有效的 name 参数 datatype主要 Microsoft Access SQL 数据类型或其同义词之一 说明说明 对于定期运行的查询 可以通过 PARAMETERS 声明来创建一个参数查询 参数查询能够自动处理 查询条件更改 若使用参数查询 在每次查询运行时代码都需要提供参数 PARAMETERS 声明是可选的 但如果包含它 应将它置于任何其他语句 包括 SELECT 语句 之 前 如果声明包含了多个参数 请用逗号分隔它们 以下的示例里包含了两个参数 PARAMETERS Low price Currency Beginning date DateTime 在 WHERE 或 HAVING 子句中可以使用 name 参数 不能使用 datatype 参数 以下的示例中要 求提供两个参数 然后将该条件应用于 Orders 表的记录中 PARAMETERS Low price Currency Beginning date DateTime SELECT OrderID OrderAmount FROM Orders WHERE OrderAmount Low price AND OrderDate Beginning date 示例示例 本示例要求用户提供职务 然后使用该职务作为查询条件 本示例调用 EnumFields 过程 您可以在 SELECT 语句示例中找到该过程 Sub ParametersX Dim dbs As Database qdf As QueryDef Dim rst As Recordset Dim strSql As String strParm As String Dim strMessage As String Dim intCommand As Integer Mod

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论