vfp中select语句用法Word格式文档下载.docx
《vfp中select语句用法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《vfp中select语句用法Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
写5
SQL和索
引5
用OrderBy子句对结果排
序5
列函
数
6
SQL的列函数
列函数中的DISTINCT.6
列函数的嵌套
7
用GROUPBY求分组小
计9
GROUPBY和DISTINCT之间的选
择9
HAVING子句的使
用10
用TOP子句选择-定数量或一定百分比的记
录13
查询结果的输出定
向14
复杂查
询
15
子查
带f查询的IN谓词和量词
ANY|SOME
16
ALL16
EXISTS
仃
自身连
接17
合
并
18
示例快速排名次
19
示例二•选择重复的记录
20
外连
接
....21
什么是外连
接?
21
用右外连接(RightOuterJoin)选择记
录21
用左外连接(LeftOuterJoin)选择记
录22
用完全外连接(FullOuterJoin)选择记
录23
用内连接加外连接选择记
录24
用内连接(InnerJoin)选择记
录25
25选择记录(NestedJoin)用嵌套的连接.
VisualFoxPro5.0中的新的FROM/JOIN语
法26
为了更加清
晰27
用SQLSelect生成视
图28
注意事
项
29
基本的SQLSelect
From子句
在FROM了•句中指定要查询的农,若指定的衣未打开,FoxPro将自动打开指定的衣,但在査询完成后.FoxPro并不自动关闭它所打开的衣,若要在查询完成后关闭衣,则必须以手动方式关闭它们。
若在执行
SQLSELECT时,FROM/句中指定的衣已经打开,则FoxPro以USE-AGAIN的方式重新打开此农。
Select子句
SELECT(句中指定要査询的结果字段,这些结果可以是以下基本元素:
通配符*
农中的字段名
FoxPro函数
SELECT中可用的列函数
用户自定义函数
常数(常用于作为占位符)
以上各元素在SELECT/■句中以逗号分开,例如:
SELECT销售地区,销售部门,业务员;
FROM销售农
若SELECTT句中的字段名是唯•的,则不必在字段名前加别名修饰,SQL能自动找到这些字段。
若字段名是非唯•的(即同•字段名出现在FROM/句中的两个或两个以上农中),
FoxPro返回以下错谋信息:
<字段>|<变量〉不唯一,必须加以限定
要纠正这一错误,用字段所在表的别名修饰该字段。
若在SELECT了句中加入了FoxPro函数,则意味着该语句不具备可移植性。
SQL和用户自定义函数
FoxPro支持在Select/句中使用用户定义函数。
但是由于在其它系统中不支持用户定义函数。
因此在开发可能移植的系统时不要使用用户自定义函数。
.
Select子句中的关键字和其它子句
Select子句中的通配符
*1、*(星号)
只能使用在字段串列参数中。
代衣来源数据斥中所有的字段。
如果select是在二个以上的数据库中进行査询的,则要在号码前加上数据库别名。
*是SQL中的三个通配符之•(其它两个是?
和将在以后讨论)「只能出现在Select子句中,通配符前可以用别名修饰,在此情况下衣示妥查询指定工作区中的全部字段•同时还可以给出其它字段名•如:
Select销售衣二客户衣•客户代码,客户衣-客户名称;
FROM销售衣,客户农;
WHERE销售农-客户代码二客户衣•客户代码
2、%(百分号)
只能使用在Where参数中,代衣•连串任意字符类似于DOS下的IT*.PRG中的
通常与运算符
LIKE搭配使用:
SELECT客户名FROM客户农WHERE客户名LIKE“成都%公司”
以上查询选择所有公司名以”成都”开始,以”公司”结尾的客户,如:
成都东方公司、成都西部发展公司等。
3、_(下划线)
也只能使用在where参数中,代衣•个任意字符。
与DOS下的DIRIT77.PRG中的”?
”—样。
例如_a%
农示第二个字符为a的字串。
通常与LIKE搭配使用:
SELECT客户名FROM客户衣WHERE客户名LIKE“成都_公司”
以上查询选择类似于”成都分公司”,”成都总公司”这样的公司名字。
另•种情况是文字数据中正好包含有星号、百分号、下划线(例如:
软件部_业务组),此时可使用关键字ESCAPE告诉SQL哪•个字符是常数字符而非通配符。
例如:
selectcompanyfromcustomerwherecompanylike%\_%escape\\
此时escape所指定字符(即\)后的那•个字段(此处为下划线」将彼视为常数字符而非通配符。
字段别名(AS)
FoxPro捉供了给Select犷句中的字段起别名的方法(这种方法不同于ANSI/ISO标准):
即可用AS(句给出Select(句中字段的别名,在多当需要宣接浏览査询结果或査询结果中含有计算列时,该方法很有用处-例如:
工资汇总)AS工资,SUM(部门AS”物资部“SELECT
FROM工资液;
WHERE部门编号二“0013”
用DISTINCT消去重复的记录
SELECT中的DISTINCT关键字,可以消去査询结果中的重复行。
例如要字段出所有购买了商的客户,可以用以下Select语句:
SELECTDISTINCT客户名称;
FROM销售细节农
注意,这里消去的重复记录是指SELECT句中的所有字段值均相等的记录-
当SQL遇到DISTINCT关键字时,即建立•个中间衣。
然后以SELECTf句中的所有字段建立•个唯•索引,然后将索引用于中间衣,并把索引中的记录放入查询结果中。
这样就消去了重复记录,但是当SELECT
了句中的字段很多时,这•过程会很慢。
用WHERE子句说明选择记录的条件
通常查询并不希望取出所有记录,而只是希望查出满足•定条件的记录,要做到这•点可以使用WHERE子句。
WHERE子句把满足条件的记录作为査询结果。
选择条件
在WHEREf句中可以包含多个选择条件,各条件间用AND或OR连接而构成较长的逻辑农达式。
连接条件
当•个査询涉及到多个农时,需要•个特殊类型的WHERE条件,称为连接条件,连接条件建立了FROM
了句中的两农间的•对•或•对多的联系。
SQL和宏
SELECT/句中可以方便快捷地处理宏,在SELECT语句中,宏替换只能替换-次,在以下查询之前,需要由用户给出农名和相应的农达式
Select*;
FROM(UserTable);
Where公司代码二&
Company_code
宏还可以用在LIKE的模式匹配串:
SelectCompany,Companyld:
SaleName,Saleld;
FromCompany,SalesMan;
WhereCompany.Saleld=SalesMan.Saleld;
ANDDescriptionLIKE%TCL%
以上査询中,用户输入•字符串以便在备注字段(Description)中作匹配査找査询求出的是包含该字符串的所有公司的住处
SQL和字母大小写
SQL中是区分字母人小写的,为使查询结果有效,要注恿区分查询条件中的人小写一即衣中的内容是人写的査询时必须将它们转换为人写-若衣中内容是大小写混杂的,则以下Select语句将难以返回全部结果:
SelectCompanyld;
FromCompany;
WhereCompanyld=ACME
以上査询只返回名为ACME的记录,对于Companyld为Acme的记录则査不到,因此安全的方法是用
UPPER()函数将所有字符串都转换为人写•以下是正确的查询:
WhereUPPER(Companyld)=ACME
SQL和索弓|
WHERE条件可用Rushmore和索引加速查找SQL可用任何类型的索引:
结构化的.CDX,外部的.CDX
及外部的.IDX-若要使SQL使用外部索引,必须在执行Select之前将其打开,如以下语句所示:
UseSalesINDEXidxcdxfile
SQL可以以同样的方式作为标准过程代码使用Rushmoe这时选择条件必须是可优化的,即选择农达式必须与建立索引的农达式精确匹配•
用OrderBy子句对结果排序
由于SQL优化器是按它认为的最佳方案去存取数据,因些査询结果中的记录顺序是动态不定的.许多应用程序需要査询结果是按•个或多个字段排好序的一为此可用ORDERBY了•句.
ORDERBY/句可以包含Select/句中•样多的字段•例如:
SelectCompany:
State,Companyld;
FromClient;
WhereStateIN(NY,NJ,PA,CA);
OrderByState,Company
在以上査询中,按所在州及公司名称顺序给出结果-缺省情况下,记录是升序排字段,也可用DESCENDING来说明按降序排席•当然也可以升降序并用,例如:
State,Companyld:
SaleNo;
FromCompany,Sales;
ANDStateIN(NY,NJ,PA,CA);
ORDERBYState,Company,SaleNoDESCENDING
以上查询结果首先按州及公司名称升序排字段,然后按SaleNo降序排席.
由于扌非序是对査询结果的排序,因此OrderBy了句中的字段必须是Selectf句中岀现的字段.另外,OrderBy了句允许用位标号给岀押序字段,这些位标号是指Select(句中出现的序号-例如上•个查询可以写为:
SelectCompany’State,Companyld’SaleNo;
ORDERBY2,1,3DESCENDING
当Select了句包含了用户定义函数或FoxPro函数(如UPPER()和LEFT())时,用位标号来给出排序字段显得十分方便-
列函数
在Select/句中,可以用SQL提供的五个列函数,如下衣所示:
SQL的列函数
函数描述
AVG(r段名)求出指定字段上的平均值,只适用于数值型的字段
SUM(字段名)求岀指定字段上的和,只适用于数值型的字段
MIN(字段名)求出指定字段上的最小值,字段可以是数值型,字符型或日期型MAX(字段名)求出指定字段上的最人值,字段可以是数值型,字符型或日期型
COUNT(字段名)求出