论文部分内容阅读
摘要:介绍了Visual FoxPro中SQL查询的一般格式和变量的表现形式,阐述了变量在SELECT、FROM和WHERE子句中的具体使用方法。
关键词:Visual FoxPro;SQL;变量
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)05-10000-00
1 引言
SQL的全称是Structured Query Language(结构化查询语言),是关系数据库中最常用的语言。Visual FoxPro是一种关系数据库管理系统,包含8种SQL型命令,其中一种就是SQL-SELECT查询命令。SELECT命令具有强大的单表与多表查询功能,支持子查询和嵌套查询。子查询就是一个SELECT-FROM-WHERE表达式,其结果用于另一个查询。但Visual FoxPro并不支持在SELECT子句和FROM子句中使用子查询。通过变量的使用可以弥补这种遗憾。本文具体介绍在SELECT、FROM和WHERE子句中变量的使用方法。所有的查询均基于成绩表和学生档案表。见图1和图2。
图2 学生档案表
2 用SQL查询的一般格式
简单的SQL查询只包括SELECT子句、FROM子句和WHERE子句。SELECT子句和FROM子句在所有的查询中是不能省略的。SELECT子句选择列表,可以选择所有列也可以只选择部分列并指定它们的显示顺序;FROM子句指定查询相关的表或视图,可以同时指定多个表或视图;WHERE子句设置查询条件,过滤掉不需要的数据。另外,还可以使用ORDER BY子句对查询的结果进行升序或降序排列;使用GROUP BY和HAVING子句对符合条件的记录进行分组显示。例如对成绩表进行查询,要求显示数控技术成绩在80分以上的学生姓名和各项成绩,并按数控技术成绩降序排列,其SQL查询语句如下:
SELECT 姓名,NC AS 数控技术,VFP AS 数据库管理系统,PLC AS 可编程序控制器,VC AS C语言
FROM 成绩表 WHERE NC>80 ORDER BY NC DESC
再如查询学生档案表男生的人数和高考平均成绩,以及女生的人数和高考平均成绩,并按高考平均成绩降序排列。
SELECT 性别,COUNT(*),AVG(高考成绩) FROM 学生档案GROUP BY 性别 ORDER BY 3 DESC
但有些复杂的查询仅用几个子句的简单组合是无法实现的,比如查询数控技术成绩在平均分以上的学生的学号、姓名和各门功课的成绩,用下面的SQL语句则会出错,SQL不接受这种形式的查询条件(WHERE NC>AVG(NC))。
SELECT 学号,姓名,NC,VFP,PLC,VC FROM 成绩表 WHERE NC>AVG(NC)
有时候我们需要对相同结构的不同的表作相同的查询,在设计程序时,希望根据自己的选择只对某表作查询操作;亦或想让某一查询的结果显示在另一查询的列表中等等。这些特别的要求有的可以用子查询解决,但有的在Visual FoxPro中用子查询无法实现,这时我们应考虑使用变量。首先看看如何将一个查询结果赋值给一个变量。
3 将SQL查询结果赋给一个变量
SQL为查询结果提供去向的子句有INTO和TO子句,它们的作用如下表所示。
表1 SQL查询去向
图3 查询浏览窗口1
5在FROM子句中使用变量
FROM子句用于指定SELECT语句查询的表或视图。有时候,特别是对大量相同结构的表实施相同内容查询的时候,在FROM子句中使用变量可以大大缩短操作时间,提高工作效率。但在Visual FoxPro中不允许直接用变量名作为表名使用。这时可以用宏代换函数代替表名。下面一段程序就可以根据自己的意愿输入表名实施查询。
@5,10 SAY “请输入表名:”GET BM DEFAULT SPACE(10)
关键词:Visual FoxPro;SQL;变量
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)05-10000-00
1 引言
SQL的全称是Structured Query Language(结构化查询语言),是关系数据库中最常用的语言。Visual FoxPro是一种关系数据库管理系统,包含8种SQL型命令,其中一种就是SQL-SELECT查询命令。SELECT命令具有强大的单表与多表查询功能,支持子查询和嵌套查询。子查询就是一个SELECT-FROM-WHERE表达式,其结果用于另一个查询。但Visual FoxPro并不支持在SELECT子句和FROM子句中使用子查询。通过变量的使用可以弥补这种遗憾。本文具体介绍在SELECT、FROM和WHERE子句中变量的使用方法。所有的查询均基于成绩表和学生档案表。见图1和图2。

图2 学生档案表
2 用SQL查询的一般格式
简单的SQL查询只包括SELECT子句、FROM子句和WHERE子句。SELECT子句和FROM子句在所有的查询中是不能省略的。SELECT子句选择列表,可以选择所有列也可以只选择部分列并指定它们的显示顺序;FROM子句指定查询相关的表或视图,可以同时指定多个表或视图;WHERE子句设置查询条件,过滤掉不需要的数据。另外,还可以使用ORDER BY子句对查询的结果进行升序或降序排列;使用GROUP BY和HAVING子句对符合条件的记录进行分组显示。例如对成绩表进行查询,要求显示数控技术成绩在80分以上的学生姓名和各项成绩,并按数控技术成绩降序排列,其SQL查询语句如下:
SELECT 姓名,NC AS 数控技术,VFP AS 数据库管理系统,PLC AS 可编程序控制器,VC AS C语言
FROM 成绩表 WHERE NC>80 ORDER BY NC DESC
再如查询学生档案表男生的人数和高考平均成绩,以及女生的人数和高考平均成绩,并按高考平均成绩降序排列。
SELECT 性别,COUNT(*),AVG(高考成绩) FROM 学生档案GROUP BY 性别 ORDER BY 3 DESC
但有些复杂的查询仅用几个子句的简单组合是无法实现的,比如查询数控技术成绩在平均分以上的学生的学号、姓名和各门功课的成绩,用下面的SQL语句则会出错,SQL不接受这种形式的查询条件(WHERE NC>AVG(NC))。
SELECT 学号,姓名,NC,VFP,PLC,VC FROM 成绩表 WHERE NC>AVG(NC)
有时候我们需要对相同结构的不同的表作相同的查询,在设计程序时,希望根据自己的选择只对某表作查询操作;亦或想让某一查询的结果显示在另一查询的列表中等等。这些特别的要求有的可以用子查询解决,但有的在Visual FoxPro中用子查询无法实现,这时我们应考虑使用变量。首先看看如何将一个查询结果赋值给一个变量。
3 将SQL查询结果赋给一个变量
SQL为查询结果提供去向的子句有INTO和TO子句,它们的作用如下表所示。
表1 SQL查询去向

图3 查询浏览窗口1
5在FROM子句中使用变量
FROM子句用于指定SELECT语句查询的表或视图。有时候,特别是对大量相同结构的表实施相同内容查询的时候,在FROM子句中使用变量可以大大缩短操作时间,提高工作效率。但在Visual FoxPro中不允许直接用变量名作为表名使用。这时可以用宏代换函数代替表名。下面一段程序就可以根据自己的意愿输入表名实施查询。
@5,10 SAY “请输入表名:”GET BM DEFAULT SPACE(10)