ACCESS 数据库常用SQL 语句
SELECT 语句
指示 Microsoft Jet 数据库引擎从数据库返回一组记录信息。
语法
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,
[table.]field2 [AS alias2] [, ...]]}
FROM tableexpression [, ...] [IN externaldatabase]
[ ]
[ ]
[ ]
[ ]
[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 或 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 语句中使用其他子句进一步约束和组织所返回的数据。有关详细信息,请参阅相应子句的帮助主题。
请参阅
ALL DISTINCT、DISTINCTROW、TOP 谓词ORDER BY 子句 (Microsoft Jet SQL) DELETE 语句INTO 语句
FROM 子句SQL 聚合函数
GROUP BY 子句UNION 操作
HAVING 子句UPDATE 语句
IN 子句WHERE 子句access常见条件表达式
INSERT INTO 语句WITH OWNERACCESS OPTION 声明
ALL、DISTINCT、DISTINCTROW、TOP 谓词
指定使用SQL查询选择的记录。
语法
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM table
一个包含这些谓词的 SELECT 语句具有以下部分:
部分说明
ALL 作为不包括谓词处理。Microsoft Jet 数据库引擎会选择符合 SQL 语句中的条件的所有记录。以下两个示例是等价的,它们都返回Employees 表中的所有记录:
SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;
DISTINCT 忽略在选定字段中包含重复数据的记录。若要包括在查询的结果中,在 SELECT 语句中所列出的每个字段的值必须是唯一的。例如,Employees 表中列出的一些雇员可能有相同的名字 (LastName)。如果在 LastName 字段中有两个包含 Smith 的记录,则下面的SQL 语句只返回一个包含 Smith 的记录:
SELECT DISTINCT
LastName
FROM Employees;
如果忽略了 DISTINCT,这个查询将返回两个 Smith 记录。
如果 SELECT 子句包含多个字段,若要在结果中包含给定的记录,
那么所有字段的值的组合必须是唯一的。
使用 DISTINCT 查询的输出结果是不可更新的,它不会影响其他用户所做的后续更改。
DISTINCTROW 忽略整个重复记录的数据,而不仅仅是重复的字段。例如,创建一个联接顾客表和订单表的 CustomerID 字段的查询。顾客表不包含重复的 CustomerID 字段,但是订单表包含重复的 CustomerID 字段,因为每一个顾客可以有多个订单。下面的 SQL 语句显示了如何使用 DISTINCTROW 产生一个至少有一个订单但没有这些订单任何细节的公司列表:
SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;
如果忽略了 DISTINCTROW,对于每个有多个订单的公司这个查询语句将得到多个行。
DISTINCTROW 仅在选择的字段源于查询中所使用的表的一部分而不是全部时才会生效。如果查询仅包含一个表或者要从所有的表中输出字段,DISTINCTROW 就会被忽略。
TOP n [PERCENT] 返回出现在由 ORDER BY 子句指定的起始和结束范围内的一定数量的记录。假定希望得到 1994 年级中前 25 名学生的名字:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage DESC;
如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。
TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。
也可以使用 PERCENT 保留字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:
SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage ASC;
ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号整数。
TOP 谓词不影响查询是否可更新。
table
从中检索记录的表名。
FROM 子句
指定其中包含 SELECT 语句中所列字段的表或查询。
语法
SELECT fieldlist
FROM 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, FirstName

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。