




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ACCESS数据库常用SQL语句SELECT 语句指示 Microsoft Jet 数据库引擎从数据库返回一组记录信息。语法SELECT predicate * | table.* | table.field1 AS alias1 , table.field2 AS alias2 , .FROM tableexpression , . IN externaldatabaseWHERE. GROUP BY. HAVING. ORDER BY. WITH OWNERACCESS OPTIONSELECT 语句包含以下部分:部分说明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.SupvNameFROM Employees INNER JOIN SupervisorsWHERE Employees.Department = Supervisors.Department;创建 Recordset 对象时,Microsoft Jet 数据库引擎将使用表的字段名作为 Recordset 对象中的 Field 对象名。如果需要一个不同的字段名或者名称不适合用来生成该字段的表达式,请使用 AS 保留字。下面的示例使用标题 Birth 来命名在所得到的 Recordset 对象中的返回 Field 对象:SELECT BirthDateAS Birth FROM Employees;只要使用的聚合函数或查询返回的是不明确的或重复的 Field 对象名称,就必须使用 AS 子句为该 Field 对象另外提供一个替代名称。下面的示例使用标题 HeadCount 来命名在结果 Recordset 对象中的返回 Field 对象:SELECT COUNT(EmployeeID)AS HeadCount FROM Employees;可以在 SELECT 语句中使用其他子句进一步约束和组织所返回的数据。有关详细信息,请参阅相应子句的帮助主题。请参阅ALL DISTINCT、DISTINCTROW、TOP 谓词 ORDER BY 子句 (Microsoft Jet SQL) DELETE 语句 SELECT.INTO 语句 FROM 子句 SQL 聚合函数 GROUP BY 子句 UNION 操作 HAVING 子句 UPDATE 语句 IN 子句 WHERE 子句 INSERT INTO 语句 WITH OWNERACCESS OPTION 声明 ALL、DISTINCT、DISTINCTROW、TOP 谓词指定使用 SQL 查询选择的记录。语法SELECT ALL | DISTINCT | DISTINCTROW | TOP n PERCENTFROM table一个包含这些谓词的 SELECT 语句具有以下部分:部分说明ALL作为不包括谓词处理。Microsoft Jet 数据库引擎会选择符合 SQL 语句中的条件的所有记录。以下两个示例是等价的,它们都返回 Employees 表中的所有记录: SELECT ALL *FROM EmployeesORDER BY EmployeeID;SELECT *FROM EmployeesORDER BY EmployeeID;DISTINCT忽略在选定字段中包含重复数据的记录。若要包括在查询的结果中,在 SELECT 语句中所列出的每个字段的值必须是唯一的。例如,Employees 表中列出的一些雇员可能有相同的名字 (LastName)。如果在 LastName 字段中有两个包含 Smith 的记录,则下面的 SQL 语句只返回一个包含 Smith 的记录: SELECT DISTINCTLastNameFROM Employees;如果忽略了 DISTINCT,这个查询将返回两个 Smith 记录。如果 SELECT 子句包含多个字段,若要在结果中包含给定的记录,那么所有字段的值的组合必须是唯一的。使用 DISTINCT 查询的输出结果是不可更新的,它不会影响其他用户所做的后续更改。DISTINCTROW忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 CustomerID 字段,但是订单表包含重复的 CustomerID 字段,因为每一个顾客可以有多个订单。下面的 SQL 语句显示了如何使用 DISTINCTROW 产生一个至少有一个订单但没有这些订单任何细节的公司列表: SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;如果忽略了 DISTINCTROW,对于每个有多个订单的公司这个查询语句将得到多个行。DISTINCTROW 仅在选择的字段源于查询中所使用的表的一部分而不是全部时才会生效。如果查询仅包含一个表或者要从所有的表中输出字段,DISTINCTROW 就会被忽略。TOP n PERCENT返回出现在由 ORDER BY 子句指定的起始和结束范围内的一定数量的记录。假定希望得到 1994 年级中前 25 名学生的名字: SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 1994ORDER BY GradePointAverage DESC;如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。也可以使用 PERCENT 保留字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 1994ORDER BY GradePointAverage ASC;ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号整数。TOP 谓词不影响查询是否可更新。table从中检索记录的表名。FROM 子句指定其中包含 SELECT 语句中所列字段的表或查询。语法SELECT fieldlistFROM tableexpression IN externaldatabase包含 FROM 子句的 SELECT 语句具有以下部分:部分说明fieldlist要检索的字段的名称以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。tableexpression用来标识从中检索数据的一个或多个表的表达式。该表达式可以是单个表名、保存的查询名、或者是 INNER JOIN、LEFT JOIN 或者 RIGHT JOIN 产生的结果。externaldatabase包含 tableexpression 中的所有表的外部数据库的完整路径。说明FROM 是必需的,并且在任何 SELECT 语句后面。在 tableexpression 中表名称的顺序无关紧要。为了提高性能和便于使用,建议您使用链接表而不是 IN 子句来从外部数据库中检索数据。下例展示了怎样从 Employees 表中检索数据:SELECT LastName, FirstNameFROM Employees;WHERE 子句指定 FROM 子句所列出的表中哪些记录会受 SELECT、UPDATE或 DELETE 语句的影响。语法SELECT fieldlistFROM tableexpressionWHERE criteria包含 WHERE 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。tableexpression将从中检索数据的表的名称。criteria表达式,记录必须满足该表达式才能包括在查询结果中。说明Microsoft Jet 数据库引擎会选择出符合 WHERE 子句所列条件的记录。如果没有指定 WHERE 子句,查询会返回表中的所有行。如果在查询中指定了多个表并且不包含 WHERE 子句或 JOIN 子句,查询将会产生各个表的迪卡尔积。WHERE 是可选的,但包含它时,则应在 FROM 后面。例如,可以选择销售部门中的所有雇员(WHERE Dept = Sales)或年龄在 18 岁到 30 岁之间的顾客(WHERE Age Between 18 And 30)。如果没有使用 JOIN 子句来对多个表执行 SQL 联接操作,那么所返回的 Recordset 对象将是不可更新的。WHERE 和 HAVING 相似。WHERE 确定要选择哪些记录。同样,一旦记录通过 GROUP BY 进行了分组,那么 HAVING 就确定将要显示哪些记录。通过 WHERE 子句,可以删除不希望由 GROUP BY 子句分组的记录。可以使用多种表达式来确定 SQL 语句要返回哪些记录。例如,下面的 SQL 语句选择出薪金多于 $21,000 的所有雇员:SELECT LastName, SalaryFROM EmployeesWHERE Salary 21000;WHERE 子句能够包含最多 40 个由逻辑运算符(如 And 和 Or)联接的表达式。输入包含空格或符号的字段名时,请使用中括号 ( ) 把这个名称括起来。例如,一个顾客信息表可能包含了特定顾客的信息:SELECT Customers Favorite Restarant指定了 criteria 参数时,数据文字必须是美国格式,即使没有使用 Microsoft Jet 数据库引擎的美国版本。例如,对于 May 10,1996,在英国它记为 10/5/96,而在美国它记为 5/10/96。请确保将数据文字放在数字符号 (#) 以内,如下例所示。若要在英国数据库中查找出日期为 May 10,1996 的记录,必须使用如下所式的 SQL 语句:SELECT *FROM OrdersWHERE ShippedDate = #5/10/96#;也可以使用 DateValue 函数,该函数可以感知由 Microsoft Windows 建立的国际设置。例如,用于美国数据库的代码是:SELECT *FROM OrdersWHERE ShippedDate = DateValue(5/10/96);用于英国数据库的代码是:SELECT *FROM OrdersWHERE ShippedDate = DateValue(10/5/96);注释如果条件字符串所引用的列为 GUID 类型,那么该条件表达式使用的语法稍微有所不同:WHERE ReplicaID = GUID 12345678-90AB-CDEF-1234-567890ABCDEF请确保包含如上所示的嵌套大括号和连字号。IN 子句标识在任何能够由 Microsoft Jet 数据库引擎连接的外部数据库(如 dBASE 或 Paradox 数据库或外部 Microsoft Jet 数据库)中的表。语法若要标识目标表:SELECT | INSERT INTO destination INpath | path type | type; DATABASE = path若要标识源表:FROM tableexpression INpath | path type | type; DATABASE = path包含 IN 子句的 SELECT 语句具有以下部分:部分说明destination将在其中插入数据的外部表的名称。tableexpression将检索其中的数据的表的名称。该参数可以是单个表名、存储查询或者从 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 产生的组合结果。path包含 table 的目录或文件的完整路径。type用于创建 table 的数据库类型的名称(如果数据库不是 Microsoft Jet 数据库,例如 dBASE III、dBASE IV、Paradox 3.x 或 Paradox 4.x)。说明使用 IN 子句一次只能连接一个外部数据库。某些情况下,path 参数所引用的路径包含了数据库文件。例如,当使用 dBASE、Microsoft FoxPro 或 Paraox 数据库表时,该 path 参数指定了包含 .dbf 或 .db 文件的目录。表文件名来源于 destination 或 tableexpression 参数。若要指定非 Microsoft Jet 数据库,请在名称的尾部追加一个分号 (;),并用引号() 或 () 将其括起来。例如,dBASE IV; 或 dBASE IV; 都是允许的。还可以使用 DATABASE 保留字来指定外部数据库。以下的各行指定了相同的表:. FROM Table IN dBASE IV; DATABASE=C:DBASEDATASALES;. FROM Table IN C:DBASEDATASALES dBASE IV;注释为了提高性能和易于使用,请使用链接表而不是 IN。还可以使用 IN 保留字作为表达式中的比较运算符。ORDER BY 子句以升序或降序排列的方式对指定字段查询的返回记录进行排序。语法SELECT fieldlistFROM tableWHERE selectcriteriaORDER BY field1 ASC | DESC , field2 ASC | DESC , .包含 ORDER BY 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 selectcriteria选择条件。如果语句中包含 WHERE 子句,则 Microsoft Jet 数据库引擎将会在对记录应用 WHERE 条件后排列所得到的值。field1,field2排序记录所依据的字段的名称。说明ORDER BY 是可选的。但是,如果希望按排序后的顺序显示数据,那么必须使用 ORDER BY。默认的排序顺序是升序(A 到 Z,0 到 9)。以下的两个示例均以姓氏的顺序对雇员姓名进行排序:SELECT LastName, FirstNameFROM EmployeesORDER BY LastName;SELECT LastName, FirstNameFROM EmployeesORDER BY LastName ASC;若要按降序排序(Z 到 A,9 到 0),请在每个希望以降序排序的字段后面添加 DESC 保留字。以下的示例选择出薪金记录,并对它们进行降序排序:SELECT LastName, SalaryFROM EmployeesORDER BY Salary DESC, LastName;如果在 ORDER BY 子句中指定了包含备注或 OLE 对象数据的字段,将出现错误。Microsoft Jet 数据库引擎不能按这些类型的字段排序。ORDER BY 通常是 SQL 语句中的最后一项。可以在 ORDER BY 子句中包含其他字段。将首先按 ORDER BY 后面列出的第一个字段对记录进行排序。然后,在该字段中具有相同值的记录按照所列出的第二个字段的值进行排序。这样一直进行下去。GROUP BY 子句将特定字段列表中相同的记录组合成单个记录。如果在 SELECT 语句中包含 SQL 聚合函数(如 Sum 或 Count),那么将为每条记录创建一个摘要值。语法SELECT fieldlistFROM tableWHERE criteriaGROUP BY groupfieldlist包含了 GROUP BY 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 criteria选择条件。如果语句包含 WHERE 子句,那么 Microsoft Jet 数据库引擎将在对记录应用 WHERE 条件后对值进行分组。groupfieldlist最多 10 个用于分组记录的字段的名称。groupfieldlist 中的字段名称的顺序决定了从最高到最低分组级别方法的分组级别。说明GROUP BY 是可选的。如果在 SELECT 语句中没有 SQL 聚合函数,将省略汇总值。在 GROUP BY 字段中的 Null 值会被分组,不会被忽略。但是,任何 SQL 聚合函数都不会计算 Null。通过 WHERE 子句可以排除不需要参加分组的行,通过 HAVING 子句可以过滤已经分组的记录。除非包含备注或 OLE 对象数据,否则,GROUP BY 字段列表中的字段可以引用任何 FROM 子句中所列表中的任何字段,即使该字段并不包含在 SELECT 语句中(假设 SELECT 语句至少包含了一个 SQL 聚合函数)。Microsoft Jet 数据库引擎不能对备注或 OLE 对象字段进行分组。在 SELECT 字段列表中的所有字段必须包含于 GROUP BY 子句中,或作为参数包含于 SQL 聚合函数中。HAVING 子句可以在使用 GROUP BY 子句的 SELECT 语句中指定显示哪些分组记录。在 GROUP BY 组合记录后,HAVING 显示由 GROUP BY 子句分组的记录中满足 HAVING 子句条件的的任何记录。语法SELECT fieldlistFROM tableWHERE selectcriteriaGROUP BY groupfieldlistHAVING groupcriteria包含 HAVING 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 selectcriteria选择条件。如果语句包含 WHERE 子句,那么 Microsoft Jet 数据库引擎将在 WHERE 条件应用于记录后对值进行分组。groupfieldlist最多 10 个用于分组记录的字段的名称。在 groupfieldlist 中的字段名称的顺序确定了从最高到最低分组级别方法的分组级别。groupcriteria表达式,确定要显示哪些分组记录。说明HAVING 是可选的。HAVING 与 WHERE 相似,WHERE 确定哪些记录会被选中。通过 GROUP BY 对记录分组后,HAVING 确定将显示哪些记录:SELECT CategoryID,Sum(UnitsInStock)FROM ProductsGROUP BY CategoryIDHAVING Sum(UnitsInStock) 100 And Like BOS*;HAVING 子句可以包含最多 40 个通过逻辑运算符(如 And 和 Or)链接起来的表达式。SELECT.INTO 语句 创建生成表查询。语法SELECT field1, field2, . INTO newtable IN externaldatabaseFROM sourceSELECT.INTO 语句包含以下部分:部分说明field1,field2要复制到新表中的字段的名称。newtable要创建的表的名称。它必须符合标准命名规则。如果 newtable 即为现有表的名称,会发生一个可捕捉的错误。externaldatabase外部数据库的路径。有关路径的详细描述,请参阅 IN 子句。source从中选择记录的现有表的名称。它可以是单个或多个表或查询。说明可以通过生成表查询来存档记录,或制作表的备份副本,或者将副本导出到其他数据库,或作为某个特定时间段的数据的报表产生基础。例如,可以通过每个月运行相同的生成表查询来生成一个月销售区域报表。注释 您可能希望定义新表的主键。创建表时,新表中的字段会继承查询的基表中每个字段的数据类型和字段大小,但不会传输其他字段或表属性。 若要将数据添加到现有表中,请使用 INSERT INTO 语句,而不用创建追加查询。 若要在运行生成表查询之前查找出将要选择哪些记录,请先检查使用相同选择条件的 SELECT 语句所产生的结果。 UNION 操作创建联合查询,该查询将两个或两个以上的独立查询或表的结果组合在一起。语法TABLE query1 UNION ALL TABLE query2 UNION ALL TABLE queryn . UNION 操作包含以下部分:部分说明query1-n一个 SELECT 语句、存储查询的名称或在 TABLE 关键字后面的存储表的名称。说明可以在单个 UNION 操作中以任何组合方式合并两个或两个以上的查询、表和 SELECT 语句的结果。下面的示例将一个名为 New Accounts 的现有表和一个 SELECT 语句进行合并:TABLE New Accounts UNION ALLSELECT *FROM CustomersWHERE OrderAmount 1000;默认情况下,使用 UNION 操作时不会返回重复的记录;但是,可以包含 ALL 谓词以确保返回所有记录。这样也会使查询运行得更快。在 UNION 操作中的所有查询必须请求相同数量的字段;但是,这些字段不必都具有相同的大小或数据类型。请只在第一个 SELECT 语句中使用别名,因为别名在其他语句中会被忽略。在 ORDER BY 子句中,请根据第一个 SELECT 语句中使用的字段名来引用该字段。注释 可以在每个 query 参数中使用 GROUP BY 或 HAVING 子句,以便对返回的数据进行分组。 可以在最后一个 query 参数的末尾使用 ORDER BY 子句,以便按指定顺序显示返回值。 INNER JOIN 操作只要两个表的公共字段有匹配值,就将这两个表中的记录组合起来。语法FROM table1 INNER JOIN table2 ON table1 . field1 compopr table2 . field2INNER JOIN 操作包含以下部分:部分说明table1, table2要组合其中的记录的表的名称。field1,field2要联接的字段的名称。如果它们不是数字,则这些字段的数据类型必须相同,并且包含同类数据,但是,它们不必具有相同的名称。compopr任何关系比较运算符:“=”、“”、“=”或者“”。说明可以在任何 FROM 子句中使用 INNER JOIN 操作。这是最常用的联接类型。只要两个表的公共字段上存在相匹配的值,Inner 联接就会组合这些表中的记录。可以将 INNER JOIN 用于 Departments 及 Employees 表,以选择出每个部门的所有雇员。而要选择所有部分(即使某些部门中并没有被分配雇员)或者所有雇员(即使某些雇员没有分配到任何部门),则可以通过 LEFT JOIN 或者 RIGHT JOIN 操作来创建外部联接。如果试图联接包含备注或 OLE 对象数据的字段,将发生错误。可以联接任何两个相似类型的数字字段。例如,可以联接自动编号和长整型字段,因为它们均是相似类型。然而,不能联接单精度型和双精度型类型字段。下例展示了如何通过 CategoryID 字段联接 Categories 和 Products 表:SELECT CategoryName, ProductNameFROM Categories INNER JOIN ProductsON Categories.CategoryID = Products.CategoryID;在前面的示例中,CategoryID 是被联接字段,但是它不包含在查询输出中,因为它不包含在 SELECT 语句中。若要包含被联接字段,请在 SELECT 语句中包含该字段名,在本例中是指 Categories.CategoryID。也可以在 JOIN 语句中链接多个 ON 子句,请使用如下语法:SELECT fieldsFROM table1 INNER JOIN table2ON table1.field1 compopr table2.field1 ANDON table1.field2 compopr table2.field2) ORON table1.field3 compopr table2.field3);也可以通过如下语法嵌套 JOIN 语句:SELECT fieldsFROM table1 INNER JOIN(table2 INNER JOIN ( table3INNER 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 LEFT JOIN、RIGHT JOIN 操作在任何 FROM 子句中用于组合源表记录。语法FROM table1 LEFT | RIGHT JOIN table2ON table1.field1 compopr table2.field2LEFT JOIN 和 RIGHT JOIN 操作包含以下部分:部分说明table1, table2要组合其中记录的表的名称。field1, field2被联接的字段的名称。这些字段必须具有相同的数据类型,并且包含相同类型的数据,但它们不必同名。compopr任何关系比较运算符:“=”、“”、“=”或 “”。说明通过 LEFT JOIN 操作可以创建一个左外部联接。左外部联接包含两个表中第一个(左)表中的所有记录,即使在第二个(右)表中没有匹配的记录值。通过 RIGHT JOIN 操作可以创建一个右外部联接。右外部联接包含两个表中第二个(右)表中的所有记录,即使在第一个(左)表中没有匹配的记录值。例如,可以将 LEFT JOIN 用于 Departments(左)和 Employees(右)表以选择所有部门,包括那些没有被分配雇员的部门。若要选择所有雇员,包括那些没有被分配到任何部门的雇员,可以使用 RIGHT JOIN。下面的示例展示了如何通过 CategoryID 字段联接 Categories 表和 Products 表。该查询将产生一个所有分类的列表,其中包括不包含任何产品的分类:SELECT CategoryName,ProductNameFROM Categories LEFT JOIN ProductsON 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 主题中有关子句链接的讨论,以了解如何操作。 如果试图联接包含了备注或 OLE 对象数据的字段,将产生错误。EFT JOIN 或 RIGHT JOIN 之中。TRANSFORM 语句创建交叉表查询。语法TRANSFORM aggfunctionselectstatementPIVOT 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 子查询子查询是指嵌套于 SELECT、SELECT.INTO、INSERT.INTO、DELETE 或 UPDATE 语句或其他子查询中的 SELECT 语句。语法可以通过三种语法形式来创建子查询:comparison ANY | ALL | SOME (sqlstatement)expression NOT IN (sqlstatement)NOT EXISTS (sqlstatement)子查询语句包含了以下部分:部分说明comparison表达式和比较运算符,用于对表达式与子查询的结果进行比较。expression用来搜索子查询的结果集的表达式。sqlstatementSELECT 语句,遵循和任何其他 SELECT 语句一样的格式和规则。它必须用圆括号括起来。说明可以在 SELECT 语句的字段列表中、在 WHERE 子句中或在 HAVING 子句中使用子查询来代替表达式。在子查询中,可以通过 SELECT 语句来提供一组要在 WHERE 或 HAVING 子句表达式中计算的一个或多个指定值。通过同义的 ANY 或 SOME 谓词,可以检索在主查询的记录中满足与子查询所检索出的任何记录进行比较的比较条件的记录。下面的示例返回那些单价高于以 25% 或更高折扣出售的任何产品的单价的产品:SELECT * FROM ProductsWHERE UnitPrice ANY(SELECT UnitPrice FROM OrderDetailsWHERE Discount = .25);使用 ALL 谓词可以只检索出在主查询的记录中满足子查询所检索出的所有记录的比较条件的记录。如果将前面的示例中的 ANY 改为 ALLG,查询将只返回那些单价高于以 25% 或更高折扣出售的任何产品的单价的产品。它的限制性更强。通过 IN 谓词可以只检索出在主查询的记录中作为子查询的一部分记录而包含相同值的记录。下面的示例返回所有以 25% 或更高折扣出售的所有产品:SELECT * FROM ProductsWHERE ProductID IN(SELECT ProductID FROM OrderDetailsWHERE Discount = .25);相应地,可以使用 NOT IN 来仅检索出在主查询的记录中作为子查询的记录而不包含相同值的记录。使用 EXISTS 谓词(带有可选的 NOT 保留字)可以通过 True/False 比较来确定子查询是否返回了任何记录。您也可以在子查询中使用表名的别名来引用在子查询外部的 FROM 子句中列出的表。下面的示例返回了薪金等于或大于具有同等职称的所有雇员的平均薪金的雇员名。Employees 表别名为“T1”:SELECT LastName,FirstName, Title, SalaryFROM Employees AS T1WHERE Salary =(SELECT Avg(Salary)FROM EmployeesWHERE T1.Title = Employees.Title) Order by Title;在前面的示例中,AS 保留字是可选的。允许一些子查询用在交叉表查询中,特别是作为谓词(在 WHERE 子句中的谓词)。不允许将作为输出的子查询(在 SELECT 列表中)用在交叉表查询中。INSERT INTO 语句将一个或多个记录添加到表中。该语句称为追加查询。语法多记录追加查询:INSERT INTO target (field1,field2,.) IN externaldatabaseSELECT 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 Jet 数据库引擎将把记录追加到查询所指定的任何一个表或所有表中。INSERT INTO 是可选的,一旦包括了它,它要在 SELECT 语句前面。如果目标表中包含主键,请保证追加到主键字段中的值是唯一的、非 Null 的;否则,Microsoft Jet 数据库引擎不会追加这些记录。如果将一个自动编号字段记录追加到一个表中,并且希望对该追加的记录重新编号,那么不要在查询语句中包含自动编号字段。如果希望保持字段的原始值,请务必在查询语句中包含自动编号字段。通过 IN 子句可以将记录追加到其他数据库的表中。若要新建表,则应当使用 SELECT. INTO 语句来创建一个生成表查询。若要在运行追加查询之前找出将要追加哪些记录,可以先执行使用同样选择条件的选择查询并查看其结果。追加查询把记录从一个或多个表复制到其他表中。包含所追加的记录的表不会受追加查询影响。如果不想从其他表中追加现有记录,可以通过 VALUES 子句指定每个字段在新的单个记录中的值。如果忽略了字段列表,VALUES 子句必须包括该表中每个字段的值;否则,INSERT 操作将会失败。通过附加的带有 VALUES 子句的 INSERT INTO 语句,可以创建希望得到的每一个新增记录。UPDATE 语句创建一个更新查询,以便基于特定的条件更改指定表的字段值。语法UPDATE tableSET newvalueWHERE criteria;UPDATE 语句包含以下部分:部分说明table表名,该表包含了要修改的数据。newvalue表达式,该表达式确定将要插入到已更新记录的特定字段内的值。criteria表达式,用来确定将更新哪些记录。只有满足该表达式的记录才会被更新。说明当需要更改多个记录或者需要更改的记录存在于多个表中时,UPDATE 语句是最有用的。可以同时更改多个字段。下面的示例把英国货主的订货量的值增加百分之十,并且把运费的值增加百分之三。UPDATE OrdersSET OrderAmount = OrderAmount * 1.1,Freight = Freight * 1.03WHERE ShipCountry = UK;要点 UPDATE 不会生成结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络工程师培养的挑战试题及答案
- 信息系统项目管理师考试必考知识试题及答案
- 运营公共综合题练习测试题附答案
- 西方政治制度与社会和谐的实现机制试题及答案
- 网络接口配置要点试题及答案
- 软件设计师职业再学习试题及答案
- 机电工程项目评估题目及答案
- 经济政策与产业结构调整试题及答案
- 西方政治制度中的多元文化问题试题及答案
- 社区治理与公共政策研究试题及答案
- 打印消防安全制度
- 文言文18个虚词及文言文120个实词的解释
- 江苏省淮阴区2025届高三下第一次测试数学试题含解析
- 人工智能赋能教师数字素养提升
- C919机组培训-导航系统
- 药理学知到智慧树章节测试课后答案2024年秋哈尔滨商业大学
- 智能病历质控系统需求说明
- 山东省烟台市莱州市一中2025届高考数学押题试卷含解析
- 2023年高考真题-生物(辽宁卷) 含答案
- 叉车出租行业市场调研分析报告
- 专题02代数推理题(真题2个考点模拟16个考点)(原卷版+解析)
评论
0/150
提交评论