ACCESS数据库常用SQL语句教学内容.doc

上传人:豆**** 文档编号:33581150 上传时间:2022-08-11 格式:DOC 页数:37 大小:188KB
返回 下载 相关 举报
ACCESS数据库常用SQL语句教学内容.doc_第1页
第1页 / 共37页
ACCESS数据库常用SQL语句教学内容.doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《ACCESS数据库常用SQL语句教学内容.doc》由会员分享,可在线阅读,更多相关《ACCESS数据库常用SQL语句教学内容.doc(37页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流ACCESS数据库常用SQL语句【精品文档】第 37 页ACCESS数据库常用SQL语句SELECT 语句指示 从数据库返回一组记录信息。语法SELECT predicate * | table.* | table.field1 AS alias1 , table.field2 AS alias2 , .FROM tableexpression , . IN externaldatabaseWHERE. GROUP BY. HAVING. ORDER BY. WITH OWNERACCESS OPTIONSELECT 语句包含以下部分:部分说明predi

2、cate这些谓词之一:ALL、DISTINCT、DISTINCTROW 或 TOP。可以使用谓词来限定返回记录的数量。如果没有指定谓词,默认值为 ALL。*指定选择所指定的表的所有字段。table表的名称,该表包含了其记录被选择的字段。field1,field2字段名,这些字段包含了要检索的数据。如果包括多个字段,将按它们的排列顺序对其进行检索。alias1, alias2用作列标题的名称,不是 table 中的原始列名。tableexpression其中包含要检索的数据的表的名称。externaldatabase如果 tableexpression 中的表不在当前数据库中,则使用该参数指定该

3、数据库名。说明若要执行此项操作,Microsoft Jet 数据库引擎会搜索指定的表,并提取出选定的列,再选择出符合条件的列,然后按指定的顺序对得到的行进行排序或分组。SELECT 语句不会更改数据库中的数据。SELECT 通常是 中的第一个词。大多数 SQL 语句是 SELECT 或 SELECT.INTO 语句。SELECT 语句最简化的语法为:SELECT fields FROM table可以通过 (*) 来选择表中所有的字段。以下的示例选择在 Employees 表中的所有字段:SELECT * FROM Employees;如果一个字段名包括于 FROM 子句内的多个表中,请在该字

4、段前面加上表名和 .(圆点)号。在下面的示例中,Department 字段同时存在于 Employees 表和 Supervisors 表中。SQL 语句从 Employees 表中选择出部门并从 Supervisors 表中选择出主管名:SELECT Employees.Department, Supervisors.SupvNameFROM Employees INNER JOIN SupervisorsWHERE Employees.Department = Supervisors.Department;创建 Recordset 对象时,Microsoft Jet 数据库引擎将使用表的字

5、段名作为 Recordset 对象中的 Field 对象名。如果需要一个不同的字段名或者名称不适合用来生成该字段的表达式,请使用 AS 。下面的示例使用标题 Birth 来命名在所得到的 Recordset 对象中的返回 Field 对象:SELECT BirthDateAS Birth FROM Employees;只要使用的聚合函数或查询返回的是不明确的或重复的 Field 对象名称,就必须使用 AS 子句为该 Field 对象另外提供一个替代名称。下面的示例使用标题 HeadCount 来命名在结果 Recordset 对象中的返回 Field 对象:SELECT COUNT(Emplo

6、yeeID)AS HeadCount FROM Employees;可以在 SELECT 语句中使用其他子句进一步约束和组织所返回的数据。有关详细信息,请参阅相应子句的帮助主题。请参阅 ALL、DISTINCT、DISTINCTROW、TOP 谓词指定使用 查询选择的记录。语法SELECT ALL | DISTINCT | DISTINCTROW | TOP n PERCENTFROM table一个包含这些谓词的 SELECT 语句具有以下部分:部分说明ALL作为不包括谓词处理。会选择符合中的条件的所有记录。以下两个示例是等价的,它们都返回 Employees 表中的所有记录: SELECT

7、 ALL *FROM EmployeesORDER BY EmployeeID;SELECT *FROM EmployeesORDER BY EmployeeID;DISTINCT忽略在选定字段中包含重复数据的记录。若要包括在查询的结果中,在 SELECT 语句中所列出的每个字段的值必须是唯一的。例如,Employees 表中列出的一些雇员可能有相同的名字 (LastName)。如果在 LastName 字段中有两个包含 Smith 的记录,则下面的 SQL 语句只返回一个包含 Smith 的记录: SELECT DISTINCTLastNameFROM Employees;如果忽略了 DIS

8、TINCT,这个查询将返回两个 Smith 记录。如果 SELECT 子句包含多个字段,若要在结果中包含给定的记录,那么所有字段的值的组合必须是唯一的。使用 DISTINCT 查询的输出结果是不可更新的,它不会影响其他用户所做的后续更改。DISTINCTROW忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 CustomerID 字段,但是订单表包含重复的 CustomerID 字段,因为每一个顾客可以有多个订单。下面的 SQL 语句显示了如何使用 DISTINCTROW 产生一个至少有一个订单但没有这些订单

9、任何细节的公司列表: SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;如果忽略了 DISTINCTROW,对于每个有多个订单的公司这个查询语句将得到多个行。DISTINCTROW 仅在选择的字段源于查询中所使用的表的一部分而不是全部时才会生效。如果查询仅包含一个表或者要从所有的表中输出字段,DISTINCTROW 就会被忽略。TOP n PERCENT返回出现在由 ORDER BY 子句指定的

10、起始和结束范围内的一定数量的记录。假定希望得到 1994 年级中前 25 名学生的名字: SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 1994ORDER BY GradePointAverage DESC;如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。也可以使用 PERCENT 保留

11、字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 1994ORDER BY GradePointAverage ASC;ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号。TOP 谓词不影响查询是否可更新。table从中检索记录的表名。FROM 子句指定其中包含 SELECT 语句中所列字段的表或查询。语法SELECT field

12、listFROM tableexpression IN externaldatabase包含 FROM 子句的 SELECT 语句具有以下部分:部分说明fieldlist要检索的字段的名称以及任何字段名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。tableexpression用来标识从中检索数据的一个或多个表的表达式。该表达式可以是单个表名、保存的查询名、或者是 INNER JOIN、LEFT JOIN 或者 RIGHT JOIN 产生的结果。externaldatabase包含 tableexpression 中

13、的所有表的外部数据库的完整路径。说明FROM 是必需的,并且在任何 SELECT 语句后面。在 tableexpression 中表名称的顺序无关紧要。为了提高性能和便于使用,建议您使用而不是 IN 子句来从外部数据库中检索数据。下例展示了怎样从 Employees 表中检索数据:SELECT LastName, FirstNameFROM Employees;WHERE 子句指定 FROM 子句所列出的表中哪些记录会受 SELECT、UPDATE或 DELETE 语句的影响。语法SELECT fieldlistFROM tableexpressionWHERE criteria包含 WHER

14、E 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。tableexpression将从中检索数据的表的名称。criteria,记录必须满足该表达式才能包括在查询结果中。说明会选择出符合 WHERE 子句所列条件的记录。如果没有指定 WHERE 子句,查询会返回表中的所有行。如果在查询中指定了多个表并且不包含 WHERE 子句或 JOIN 子句,查询将会产生各个表的。WHERE 是可选的,但包含它时,则应在 FROM

15、后面。例如,可以选择销售部门中的所有雇员(WHERE Dept = Sales)或年龄在 18 岁到 30 岁之间的顾客(WHERE Age Between 18 And 30)。如果没有使用 JOIN 子句来对多个表执行 SQL 联接操作,那么所返回的 Recordset 对象将是不可更新的。WHERE 和 HAVING 相似。WHERE 确定要选择哪些记录。同样,一旦记录通过 GROUP BY 进行了分组,那么 HAVING 就确定将要显示哪些记录。通过 WHERE 子句,可以删除不希望由 GROUP BY 子句分组的记录。可以使用多种表达式来确定 SQL 语句要返回哪些记录。例如,下面的

16、 SQL 语句选择出薪金多于 $21,000 的所有雇员:SELECT LastName, SalaryFROM EmployeesWHERE Salary 21000;WHERE 子句能够包含最多 40 个由逻辑运算符(如 And 和 Or)联接的表达式。输入包含空格或符号的字段名时,请使用中括号 ( ) 把这个名称括起来。例如,一个顾客信息表可能包含了特定顾客的信息:SELECT Customers Favorite Restarant指定了 criteria 参数时,必须是美国格式,即使没有使用 Microsoft Jet 数据库引擎的美国版本。例如,对于 May 10,1996,在英国

17、它记为 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

18、*FROM OrdersWHERE ShippedDate = DateValue(10/5/96);注释如果条件字符串所引用的列为 类型,那么该条件表达式使用的语法稍微有所不同:WHERE ReplicaID = GUID 12345678-90AB-CDEF-1234-567890ABCDEF请确保包含如上所示的嵌套大括号和连字号。IN 子句标识在任何能够由 连接的(如 dBASE 或 Paradox 数据库或外部 Microsoft Jet 数据库)中的表。语法若要标识目标表:SELECT | INSERT INTO destination INpath | path type | ty

19、pe; DATABASE = path若要标识源表:FROM tableexpression INpath | path type | type; DATABASE = path包含 IN 子句的 SELECT 语句具有以下部分:部分说明destination将在其中插入数据的外部表的名称。tableexpression将检索其中的数据的表的名称。该参数可以是单个表名、存储查询或者从 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 产生的组合结果。path包含 table 的目录或文件的完整路径。type用于创建 table 的数据库类型的名称(如果数据库不是 Micros

20、oft 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; 或

21、 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

22、ASC | DESC , field2 ASC | DESC , .包含 ORDER BY 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 selectcriteria选择条件。如果语句中包含 WHERE 子句,则 将会在对记录应用 WHERE 条件后排列所得到的值。field1,field2排序记录所依据的字段的名称。说明ORDER BY 是可选的。但是,如果希望按排序后的顺序

23、显示数据,那么必须使用 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

24、 BY Salary DESC, LastName;如果在 ORDER BY 子句中指定了包含或 数据的字段,将出现错误。Microsoft Jet 数据库引擎不能按这些类型的字段排序。ORDER BY 通常是 中的最后一项。可以在 ORDER BY 子句中包含其他字段。将首先按 ORDER BY 后面列出的第一个字段对记录进行排序。然后,在该字段中具有相同值的记录按照所列出的第二个字段的值进行排序。这样一直进行下去。GROUP BY 子句将特定字段列表中相同的记录组合成单个记录。如果在 SELECT 语句中包含 SQL 聚合函数(如 Sum 或 Count),那么将为每条记录创建一个摘要值。

25、语法SELECT fieldlistFROM tableWHERE criteriaGROUP BY groupfieldlist包含了 GROUP BY 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 criteria选择条件。如果语句包含 WHERE 子句,那么 将在对记录应用 WHERE 条件后对值进行分组。groupfieldlist最多 10 个用于分组记录的字段的名称

26、。groupfieldlist 中的字段名称的顺序决定了从最高到最低分组级别方法的分组级别。说明GROUP BY 是可选的。如果在 SELECT 语句中没有 SQL 聚合函数,将省略汇总值。在 GROUP BY 字段中的 值会被分组,不会被忽略。但是,任何 SQL 聚合函数都不会计算 Null。通过 WHERE 子句可以排除不需要参加分组的行,通过 HAVING 子句可以过滤已经分组的记录。除非包含或 数据,否则,GROUP BY 字段列表中的字段可以引用任何 FROM 子句中所列表中的任何字段,即使该字段并不包含在 SELECT 语句中(假设 SELECT 语句至少包含了一个 SQL 聚合函

27、数)。Microsoft Jet 数据库引擎不能对备注或 OLE 对象字段进行分组。在 SELECT 字段列表中的所有字段必须包含于 GROUP BY 子句中,或作为参数包含于 SQL 聚合函数中。HAVING 子句可以在使用 GROUP BY 子句的 SELECT 语句中指定显示哪些分组记录。在 GROUP BY 组合记录后,HAVING 显示由 GROUP BY 子句分组的记录中满足 HAVING 子句条件的的任何记录。语法SELECT fieldlistFROM tableWHERE selectcriteriaGROUP BY groupfieldlistHAVING groupcri

28、teria包含 HAVING 子句的 SELECT 语句具有以下部分:部分说明fieldlist任何要检索的字段的名称,以及任何字段名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项。table要从中检索记录的表的名称。 selectcriteria选择条件。如果语句包含 WHERE 子句,那么 将在 WHERE 条件应用于记录后对值进行分组。groupfieldlist最多 10 个用于分组记录的字段的名称。在 groupfieldlist 中的字段名称的顺序确定了从最高到最低分组级别方法的分组级别。groupcrit

29、eria表达式,确定要显示哪些分组记录。说明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, fi

30、eld2, . INTO newtable IN externaldatabaseFROM sourceSELECT.INTO 语句包含以下部分:部分说明field1,field2要复制到新表中的字段的名称。newtable要创建的表的名称。它必须符合。如果 newtable 即为现有表的名称,会发生一个可捕捉的错误。externaldatabase的路径。有关路径的详细描述,请参阅 IN 子句。source从中选择记录的现有表的名称。它可以是单个或多个表或查询。说明可以通过生成表查询来存档记录,或制作表的备份副本,或者将副本导出到其他数据库,或作为某个特定时间段的数据的报表产生基础。例如,可

31、以通过每个月运行相同的生成表查询来生成一个月销售区域报表。注释 您可能希望定义新表的。创建表时,新表中的字段会继承查询的基表中每个字段的和字段大小,但不会传输其他字段或表属性。 若要将数据添加到现有表中,请使用 INSERT INTO 语句,而不用创建。 若要在运行生成表查询之前查找出将要选择哪些记录,请先检查使用相同选择条件的 SELECT 语句所产生的结果。 UNION 操作创建,该查询将两个或两个以上的独立查询或表的结果组合在一起。语法TABLE query1 UNION ALL TABLE query2 UNION ALL TABLE queryn . UNION 操作包含以下部分:部

32、分说明query1-n一个 SELECT 语句、存储查询的名称或在 TABLE 关键字后面的存储表的名称。说明可以在单个 UNION 操作中以任何组合方式合并两个或两个以上的查询、表和 SELECT 语句的结果。下面的示例将一个名为 New Accounts 的现有表和一个 SELECT 语句进行合并:TABLE New Accounts UNION ALLSELECT *FROM CustomersWHERE OrderAmount 1000;默认情况下,使用 UNION 操作时不会返回重复的记录;但是,可以包含 ALL 谓词以确保返回所有记录。这样也会使查询运行得更快。在 UNION 操作

33、中的所有查询必须请求相同数量的字段;但是,这些字段不必都具有相同的大小或。请只在第一个 SELECT 语句中使用,因为别名在其他语句中会被忽略。在 ORDER BY 子句中,请根据第一个 SELECT 语句中使用的字段名来引用该字段。注释 可以在每个 query 参数中使用 GROUP BY 或 HAVING 子句,以便对返回的数据进行分组。 可以在最后一个 query 参数的末尾使用 ORDER BY 子句,以便按指定顺序显示返回值。 INNER JOIN 操作只要两个表的公共字段有匹配值,就将这两个表中的记录组合起来。语法FROM table1 INNER JOIN table2 ON t

34、able1 . field1 compopr table2 . field2INNER JOIN 操作包含以下部分:部分说明table1, table2要组合其中的记录的表的名称。field1,field2要联接的字段的名称。如果它们不是数字,则这些字段的必须相同,并且包含同类数据,但是,它们不必具有相同的名称。compopr任何关系比较运算符:“=”、“”、“=”或者“”。说明可以在任何 FROM 子句中使用 INNER JOIN 操作。这是最常用的联接类型。只要两个表的公共字段上存在相匹配的值,Inner 联接就会组合这些表中的记录。可以将 INNER JOIN 用于 Department

35、s 及 Employees 表,以选择出每个部门的所有雇员。而要选择所有部分(即使某些部门中并没有被分配雇员)或者所有雇员(即使某些雇员没有分配到任何部门),则可以通过 LEFT JOIN 或者 RIGHT JOIN 操作来创建。如果试图联接包含或 数据的字段,将发生错误。可以联接任何两个相似类型的数字字段。例如,可以联接和字段,因为它们均是相似类型。然而,不能联接和类型字段。下例展示了如何通过 CategoryID 字段联接 Categories 和 Products 表:SELECT CategoryName, ProductNameFROM Categories INNER JOIN P

36、roductsON Categories.CategoryID = Products.CategoryID;在前面的示例中,CategoryID 是被联接字段,但是它不包含在查询输出中,因为它不包含在 SELECT 语句中。若要包含被联接字段,请在 SELECT 语句中包含该字段名,在本例中是指 Categories.CategoryID。也可以在 JOIN 语句中链接多个 ON 子句,请使用如下语法:SELECT fieldsFROM table1 INNER JOIN table2ON table1.field1 compopr table2.field1 ANDON table1.fie

37、ld2 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.fiel

38、d2;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被联接的字段的名称。这些字段

39、必须具有相同的,并且包含相同类型的数据,但它们不必同名。compopr任何关系比较运算符:“=”、“”、“=”或 “”。说明通过 LEFT JOIN 操作可以创建一个。左外部联接包含两个表中第一个(左)表中的所有记录,即使在第二个(右)表中没有匹配的记录值。通过 RIGHT JOIN 操作可以创建一个。右外部联接包含两个表中第二个(右)表中的所有记录,即使在第一个(左)表中没有匹配的记录值。例如,可以将 LEFT JOIN 用于 Departments(左)和 Employees(右)表以选择所有部门,包括那些没有被分配雇员的部门。若要选择所有雇员,包括那些没有被分配到任何部门的雇员,可以使用

40、 RIGHT JOIN。下面的示例展示了如何通过 CategoryID 字段联接 Categories 表和 Products 表。该查询将产生一个所有分类的列表,其中包括不包含任何产品的分类:SELECT CategoryName,ProductNameFROM Categories LEFT JOIN ProductsON Categories.CategoryID = Products.CategoryID;在这个示例中,CategoryID 是被联接字段,但是它不包括在查询结果中,因为它没有包括在 SELECT 语句中。若要包括被联接的字段,请在 SELECT 语句中输入字段名,在这个

41、示例中是 Categories.CategoryID。注释若要创建一个只包括在被联接字段中具有相同数据的记录,请使用 INNER JOIN 操作。 LEFT JOIN 或 RIGHT JOIN 可以嵌套到 INNER JOIN 语句中,但是 INNER JOIN 语句不能嵌套到 LEFT JOIN 或 RIGHT JOIN 语句中。请参阅 INNER JOIN 主题中有关嵌套的讨论,以了解如何在其他联接中嵌套联接。 可以链接多个 ON 子句。请参阅 INNER JOIN 主题中有关子句链接的讨论,以了解如何操作。 如果试图联接包含了或 数据的字段,将产生错误。EFT JOIN 或 RIGHT

42、JOIN 之中。TRANSFORM 语句创建。语法TRANSFORM aggfunctionselectstatementPIVOT pivotfield IN (value1, value2, .)TRANSFORM 语句包含以下部分:部分说明aggfunction操作所选数据的 SQL 聚合函数。selectstatementSELECT 语句。pivotfield希望用于创建查询结果集中列标题的字段或。value1,value2用于创建列标题的固定值。说明使用交叉表查询汇总数据时,将从作为列标题的指定字段或表达式中选择值,以便能够以一种比使用更紧凑的方式来查看数据。TRANSFORM 是

43、可选的,但被包括时则是 中的第一个语句。它在 SELECT 语句之前以指定作为行标题的字段,在 GROUP BY 子句之前以指定行分组方法。您也可以包含其他子句(如 WHERE),以指定其他选择或排序条件。还可以在交叉表查询中使用作为谓词,特别是在 WHERE 子句中。pivotfield 中返回的值作为查询结果集中的列标题。例如,在交叉表查询中如果依据月销售量来透视销售数据,将会创建 12 个列。可以约束 pivotfield 以便从可选 IN 子句中所列出的固定值(value1,value2)内选择标题。也可以包含固定值用于没有数据来创建其他列的情况。SQL 子查询子查询是指嵌套于 SEL

44、ECT、SELECT.INTO、INSERT.INTO、DELETE 或 UPDATE 语句或其他子查询中的 SELECT 语句。语法可以通过三种语法形式来创建子查询:comparison ANY | ALL | SOME (sqlstatement)expression NOT IN (sqlstatement)NOT EXISTS (sqlstatement)子查询语句包含了以下部分:部分说明comparison和比较运算符,用于对表达式与子查询的结果进行比较。expression用来搜索子查询的结果集的表达式。sqlstatementSELECT 语句,遵循和任何其他 SELECT 语句

45、一样的格式和规则。它必须用圆括号括起来。说明可以在 SELECT 语句的字段列表中、在 WHERE 子句中或在 HAVING 子句中使用子查询来代替表达式。在子查询中,可以通过 SELECT 语句来提供一组要在 WHERE 或 HAVING 子句表达式中计算的一个或多个指定值。通过同义的 ANY 或 SOME 谓词,可以检索在主查询的记录中满足与子查询所检索出的任何记录进行比较的比较条件的记录。下面的示例返回那些单价高于以 25% 或更高折扣出售的任何产品的单价的产品:SELECT * FROM ProductsWHERE UnitPrice ANY(SELECT UnitPrice FROM

46、 OrderDetailsWHERE Discount = .25);使用 ALL 谓词可以只检索出在主查询的记录中满足子查询所检索出的所有记录的比较条件的记录。如果将前面的示例中的 ANY 改为 ALLG,查询将只返回那些单价高于以 25% 或更高折扣出售的任何产品的单价的产品。它的限制性更强。通过 IN 谓词可以只检索出在主查询的记录中作为子查询的一部分记录而包含相同值的记录。下面的示例返回所有以 25% 或更高折扣出售的所有产品:SELECT * FROM ProductsWHERE ProductID IN(SELECT ProductID FROM OrderDetailsWHERE Discount = .25);相应地,可以使用 NOT IN 来仅

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com