SELECT - SQL 命令

作者在 2009-09-06 14:35:25 发布以下内容
SELECT - SQL 命令
请参阅

从一个或多个表中检索数据。当使用 SQL SELECT 创建查询时,Visual FoxPro 解析查询并从表中检索指定的数据。可以从“命令”窗口、Visual FoxPro 程序或使用查询设计器来创建 SQL SELECT 查询。有关使用 SQL SELECT 的更多信息,请参阅 SQL SELECT 语句的注意事项 帮助主题。

SQL SELECT 命令的完整语法显示如下:

SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...]
   FROM [FORCE] Table_List_Item [, ...]
      [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias]
      [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...] 
   [WITH (BUFFERING = lExpr)]
   [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...]
   [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]]
   [UNION [ALL] SELECTCommand]
   [ORDER BY Order_Item [ASC | DESC] [, ...]]
   [INTO StorageDestination | TO DisplayDestination]
   [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]

说明

下面代码显示了主句摘要:

  复制代码
SELECT Select_List
   FROM Table_List
   [WITH (BUFFERING = lExpr)]
   [WHERE Conditions]
   [GROUP BY Column_List]
   [UNION Clause]
   [HAVING Conditions]
   [ORDER BY Column_List]
   [INTO Clause | TO Clause ] 
   [Additional_Display_Options]

下面的部分逐条描述了 SQL SELECT 命令中每个子句的语法和参数:

运行 SELECT 之前发出 SET TALK ON SET NOTIFY ON 时,Visual FoxPro 将显示运行查询所占用的时间和结果中记录的数量。_TALLY 包含了查询结果中记录的数量。更多的信息,请参见 SET TALK 命令SET NOTIFY 命令_TALLY 系统内存变量

注意:
如果查询执行时间非常短,则可能不显示占用时间。
 

SELECT 命令忽略 由 SET FILTER 指定的当前筛选条件。 更多的信息,请参见 SET FILTER 命令

示例

下面代码示例演示了用 SQL SELECT 命令检索数据的方法,并使用了包含在 Visual FoxPro 中的示例数据库 TestData.dbc

示例 1

下例使用 FROM 子句显示一张表中字段的数据。示例将显示 Customer 表的 Company 字段中的所有公司名:

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT customer.company ;
   FROM customer

示例 2

下例使用 AS Column_Name 子句以指定的列显示来自查询的所有记录。下例使用 UPPER( ) 函数以大写字母显示 Customer 表的 City 字段中的所有城市名称,并以 CityList 作为列名。

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT UPPER(city) AS CityList FROM customer

示例 3

下例使用 DISTINCT 选项和 WHERE 子句中的连接条件,显示来自查询的不重复数据。示例仅显示 Customer Orders 表中 Company、 Order_Date 和 Shipped_On 字段中不重复数据的记录。SELECT 语句为表指定本地别名,从而区分 2 张表中的相同字段名 Cust_ID 。

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT DISTINCT TAlias1.company, TAlias2.order_date, ;
   TAlias2.shipped_on ;
   FROM customer TAlias1, orders TAlias2 ;
   WHERE TAlias1.cust_id = TAlias2.cust_id

示例 4

下例显示来自 2 张表的 3 个字段,但只有满足 WHERE 子句中连接和筛选条件的记录。示例以 Cust_ID 字段连接 Customer 和 Orders 表,并仅显示订购日期在 02/16/1994 之前的 Company, Order_Date 和 Shipped_On 字段的记录。SELECT 语句为表指定本地别名,从而区分 2 张表中的相同字段名 Cust_ID 。

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT TAlias1.company, TAlias2.order_date, TAlias2.shipped_on ;
   FROM customer TAlias1, orders TAlias2 ;
   WHERE TAlias1.cust_id = TAlias2.cust_id ;
   AND TAlias2.order_date < {^1994-02-16}

示例 5

下例使用 ORDER BY Order_Item 子句组织查询的结果。示例按默认的升序显示 Customer 表中 Country、 PostalCode 和 Company 字段的记录。

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT country, postalcode, company ;
   FROM customer ;
   ORDER BY country, postalcode, company

示例 6

下例使用 INTO TABLE TableName 子句将查询的内容存入一张表。示例将 Customer Order 表中 Cust_ID 字段作为连接的 Company、 Order_Date 和 Shipped_On 字段的内容存入第三张名为 CustShip 的表。然后打开新表的“浏览”窗口。SELECT 语句为表指定本地别名,从而区分 2 张表中的相同字段名 Cust_ID 。

  复制代码
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\TestData')
SELECT TAlias1.company, TAlias2.order_date, TAlias2.shipped_on ;
   FROM customer TAlias1, orders TAlias2 ;
   WHERE TAlias1.cust_id = TAlias2.cust_id ;
   INTO TABLE custship.dbf
BROWSE
默认分类 | 阅读 992 次
文章评论,共0条
游客请输入验证码
文章归档