Software 版 (精华区)
发信人: checcy (老巴夺), 信区: Software
标 题: 活用SELECTEQL
发信站: 哈工大紫丁香 (Sat Apr 4 15:50:55 1998), 转信
活用SELECTEQL
朱翠萍
SQL(Structured Query Language,结构化查询语言)
是一种用于访问数据库的语言,在Visual Foxprow(以下简
称VF)中使用的是SQL的扩充版本Transact-SQL,它是嵌入
式SQL,SELECT语句是SQL查询的一个重要组成部分。在VF
中用一条简单的SELECT-SQL语句可代替FOXBASE中的多行
代码,又因VF采用了RUSHMORE技术,使SELECT-SQL检索
数据的速度更快。
SQL的语法同英语非常相似,而且易读。本文通过在
开发某校排课管理系统中的几个应用实例,来介绍用SELEC
T可生成的各种不同的查寻类型。
排课系统简介:由原始信息Ysxi.dbf(Teacher、Jyz
、Bjmi、Kcmi、Zks分别是教师名、所属教研组、代课班级
、课程名、周课时字段)生成课表Kb.dbf(Bjmi、Sj、Teac
her、Kcmi分别是班级名、上课时间、教师及课程名字段)
。在Kb.dbf中每个班级有15个记录,即Sj取值为1-15,
代表周一至周五的每天三次课)。
一、选定字段
应用:SELECT DISTINCT Bjmi FROM Ysxi
功能:从Ysxi中查找本学期所有有理论课的班级(因
部分班级下厂实习,无理论课)。
解释:在SELECT中指定的字段顺序决定在结果中指定
字段显示的顺序,用*可代表所有字段。DISTINCT子句用
于消除在SELECT中指定的字段中重复的记录(因多个教师
代同一班级的课程)。为防止混淆,在多表操作时,应在字
段名前加上表名和句点。从非当前工作区内的数据库中选
定数据时,应在表名前加上数据库名和!。
SQL查寻既可以用于产生一个与所给定标准相匹配的
记录集合,又可以用于在一个组记录上执行一个数据操作
。此时需用到集合函数(也称字段函数),如Avg()、Count(
)、Max()、Sum()等,例如:
SELECT Avg(Ysxi.Zks) FROM Ysxi(统计全校教师平
均周课时)
SELECT Count(DISTINCT Ysxi.Teacher) FROM Ysxi(
统计本学期有课的教师,DISTINCT用于消除重复值)
DISTINCT子句也可和Sum()一起使用,此时只有互不
相同的值才会被累计。
二、条件查寻及指定结果的位置
应用:SELECT * FROM Kb INTO ARRAY aTeakb WHER
E Teacher=?cTeaname
功能:从Kb.dbf中查寻某一教师的课程表。
解释:INTO是用于指定查寻结果的位置,本例中是将
查寻结果存储于数组aTeakb中,如此数组不存在,系统会
自行创建的。也可将结果保存到临时只读表(CURSOR)或表
(DBF或TABLE)中。WHERE子句使得结果集中只包含满足选
择标准的记录,cTeaname是一个内存变量,表示某一教师
的姓名,使用时应加上?,如使用宏代换,应在问号和内存
变量 间加上&。在WHERE子句中可使用集合和范围、匹配
子串、函数等,如:
WHERE Teacher IN (″陈玉堂″,″王一民″)
WHERE Teacher LIKE “王%”
SQL语法允许在一个查寻中嵌套其他查寻,从而建立
子查寻。子查寻是一个完整的查寻,在应用中,可用WHERE
子句中的字段同另一个查寻结果的比较替代它同一个常量
值或另一个字段的比较。在WHERE中使用关系运算符时,
其数据类型必须与所比较字段相同,且子查寻必须在比较
运算符的右边。它通常只能返回一个值,使用IN操作符才
可返回多个值。例如用:
SELECT * FROM Kb;
WHERE Teacher=;
(SELECT Teacher FROM Kb;
WHERE Bjmi=″9511″ AND Js=1)
可查出代9511班周一第一次课的教师的课程表。
三、对查寻结果分组及排序
应用:SELECT * FROM Ysxi;
OUP BY Jyz;
AVING Bjmi LIKE ″95%″;
RDER BY Teacher
功能:从Ysxi中查寻不同教研组在95级的代课信息,
结果按教师姓名排序。
解释:GROUP BY子句指定分组字段,也可对多个字段
进行分组。HAVING子句指定对查寻组记录的条件,在没有
GROUP BY子句时,HAVING子句将等同于WHERE子句。ORDER
BY子句中的字段要包括在SELECT中,它和在一个表上创
建索引的效果相似,默认为升序,如在ORDER BY子句未尾
加上DESC则结果为降序。
SQL-SELECT命令是一个非常强有力的数据查寻命令
,可用UNION子句将两个查寻联合起来,产生一个记录集合
的两个或或多个查寻的组合,这样可从一个带有相关子表
的父表中选择记录,但为了使查寻结果中包括没有子记录
的父记录,必须执行一个外部联接。当将它与SQL服务器
连起来时,它可以用来查寻任何种类的数据。--
*********************************
Chengyan Che - Software Freelancer
Harbin, P.R.China
mailto: checcy@public.hr.hl.cn
ICQ: 5116726
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: checcy@public.hr.hl.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.753毫秒