江苏省计算机二级VFP 查询操作Word格式.docx
《江苏省计算机二级VFP 查询操作Word格式.docx》由会员分享,可在线阅读,更多相关《江苏省计算机二级VFP 查询操作Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
=90
djm="
优秀"
=80
良好"
=60
及格"
otherwise
不及格"
endcase
returndjm
✧字段函数
▪
Avg()
▪Sum()
▪Count()不能嵌套使用
▪Min()
▪Man()
✧嵌套函数的使用
▪Sum(iif(cj>
=60,1,0))as合格人数
=60,0,1))as不合格人数
▪Sum(iif(教授$zc=1,0))as教授副教授人数
♦*
▪选择数据源中的所有字段
注意:
输出项带引号,表示该输出项有错
◆07年春
(1)。
基于xs、cj表查询kcdh为01~09的各门课程男女学生人数、最高分和平均分,要求输出kcdh,xb,人数,最高分和平均分,查询结果输出至屏幕。
SELECT-SQL命令:
SELECTCj.kcdh,Xs.xb,COUNT(*)AS人数,MAX(Cj.cj)AS最高分,;
MIN(Cj.cj)AS最低分,AVG(Cj.cj)AS平均分;
FROMsjk!
xsINNERJOINsjk!
cj;
ONXs.xh=Cj.xh;
WHERECj.kcdhBETWEEN"
01"
AND"
09"
;
GROUPBYCj.kcdh,Xs.xb;
TOSCREEN
输出效果:
◆07年春
(2)P历届169。
基于xim、xs表查询各系的男女人数,要求输出字段为xdh,ximing,男生人数和女生人数,查询结果按女生人数降序排序,且男女生人数均为0的系也输出。
SELECTXim.*,SUM(IIF(xb="
男"
1,0))AS男生人数,;
SUM(IIF(xb="
女"
1,0))AS女生人数;
ximINNERJOINsjk!
xs;
ONXim.xdh=Xs.xdh;
GROUPBYXim.xdh;
ORDERBY4DESC
♦说明:
Xim.*:
指xim表中所有字段,即:
xdh、ximing
◆07年春(3)P历届172。
基于js、gz表查询职称代号为“02”的各系教师人数,要求输出字段为xdh,人数,最高工资,平均工资,结果按平均工资降序排序,结果输出至临时表。
SELECTJs.xdh,COUNT(*)AS人数,MAX(Gz.jbgz)AS最高工资,;
AVG(Gz.jbgz)AS平均工资;
FROMsjk!
jsINNERJOINsjk!
gz;
ONJs.gh=Gz.gh;
WHEREJs.xdh="
02"
GROUPBYJs.xdh;
ORDERBY4DESC;
INTOCURSORtemp
◆07年春(4)P历届174。
基于ts表查询2000年(含2000年)以来各年入库的图书情况。
要求输出字段为:
年份、图书种类、平均价格、总册数、总金额,结果按年份降序排序,结果输出至文本文件xyz。
(不同分类号代表不同的图书种类)
SELECTYEAR(rkrq)AS年份,COUNT(*)AS图书种数,;
AVG(Ts.jg)AS平均价格,SUM(cs)AS总册数,SUM(jg*cs)AS总金额;
ts;
GROUPBY1;
HAVING年份>
=2000;
ORDERBY1DESC;
TOFILExyz.txt
◆06年春(5)P历届136。
基于js(题目误写为jd)表和gz表统计每位教师应交的所得税。
要求输出的字段为:
gh、xm、所得税,输出结果按所得税降序排序且仅输出前6位教师的信息。
注:
<
=1000元:
无所得税,用0000.00表示
>
1000,<
=2000元:
超出1000元部分按5%计算
2000元:
1000~2000按5%计算,>
2000按10%计算
SELECTTOP6Js.gh,Js.xm,;
iif(yfgz<
=1000,0000.00,iif(yfgz>
2000,50.0+(yfgz-2000)*0.10,(yfgz-1000)*0.05))as所得税;
GROUPBYJs.gh;
ORDERBY3DESC
(2)指定有无重复记录
◆ALL 显示所有记录(默认)
◆DISTINCT 不显示重复的行
◆07年春(6)P历届179。
基于js表查询各邮件服务器上注册的信箱的个数。
邮件服务器(指@字符后面的部分)和注册人数,查询结果不含无email地址人员的统计,且将查询结果中注册人数最多的前三个记录输出到临时文件表temp。
SELECTTOP3SUBSTR(Js.email,at('
@'
Js.email)+1)as邮件服务器,;
count(*)as注册人数;
js;
WHERElen(allt(Js.email))>
0;
GROUPBY1;
ORDERBY2DESC;
INTOCURSORtemp
定义
数据源
指定数据源表
FROM子句
确定源表间的联接
…JOIN…ON…子句
定
义
结
果
筛选源表记录
WHERE子句 可含子查询
指定输出字段
字段、函数和表达式的列表或*
指定输出类型
INTO子句和TO子句
定义记录的分组
GROUPBY子句
指定结果顺序
ORDERBY子句
筛选结果记录
HAVING子句 必须与GROUPBY子句一起使用,否则与WHERE子句同
指定有无重复记录
ALL/DISTING
指定结果的范围
TOPnExpr[PERCENT]
(3)指定数据源
◆格式FROM表文件列表
指定所有从中检索数据的列表
✧FROMSJK1!
XS,JS
▪SJK1!
XS:
SJK1数据库中的xs表
▪JS 当前数据库中的JS表
(4)联结条件P教材122
◆内联接(InnerJoin)
◆左联接(LeftOuterJoin)
06年春(3)P历届130
◆右联接(RightOuterJoin)
◆完全联接(FullJoin)
◆06年春(3)P历届130。
为了检查kc表中是否有学生没有选的课程,可以基于kc表和cj表查询出在课程表中存在而在成绩表中不存在的那些课程记录。
要求输出课程表中的所有字段和成绩表的kcdh字段,查询结果中相同的记录(行)只需出现一次,并按kc表的kcdh字段升序排序。
(提示:
使用“左联接”kc和cj表,然后在结果中选出cj.kcdh为null值的记录)
SELECTDISTINCTKc.*,Cj.kcdh;
kcLEFTOUTERJOINsjk!
ONKc.kcdh=Cj.kcdh;
HAVINGisnull(cj.kcdh)=.T.;
ORDERBYKc.kcdh
◆
◆05年秋(8)P历届121。
基于xs表、cj表和kc表分别统计各系男女学生的必修及选修课平均成绩,输出字段包括xdh、xb、课程性质、平均成绩,结果按xdh升序排序。
其中,课程性质指的是必修课还是选修课,输出结果显示为“必修课”或“选修课”。
添加表的顺序为xs表、cj表、kc表
SELECTXs.xdh,Xs.xb,iif(bxk,'
必修课'
'
选修课'
)as课程性质,;
avg(cj.cj)as平均成绩;
cj;
INNERJOINsjk!
kc;
ONCj.kcdh=Kc.kcdh;
GROUPBYXs.xdh,Xs.xb,3;
ORDERBYXs.xdh
◆04年秋(5)P历届68。
基于kc表和cj表查询成绩表中的“孤立记录”,要求输出两张表的所有字段,相同的行在查询的结果中只出现一次,按xh升序排序。
孤立记录:
若cj表中输入了kc表中没有的kcdh。
提示:
使用“右联接”联接kc表和cj表,然后在结果中选出来源于kc表的kcdh字段为null的记录。
SELECT*;
kcRIGHTOUTERJOINsjk!
GROUPBYKc.kcdh;
HAVINGKc.kcdhISNULL
(5)筛选源表数据
◆格式WHERE条件
条件:
✧可以是逻辑表达式
✧可以包括多个联接条件(多表联接)
✧也可是子查询
▪SELECT内的SELECT,它必须用括号括起来
▪WHERE子句中最多可以有两个同级(不是嵌套的)的子查询
条件的设置
✧条件类型:
P113
条件类型
说明
=
指定字段值=右边的实例
LIKE
指定字段与实例文本相匹配含%、_的使用
==
指定字段与实例文本必须逐字符完全匹配
(>
=)
指定字段大于(大于等于)实例文本的值
(<
指定字段小于(小于等于)实例文本的值
ISNULL
指定字段包含NULL值
BETWEEN
指定字段大于等于实例文本中的低值并小大于等于实例文本中的高值。
实例文本中这两个值用逗号分隔
IN
指定字段必须与实例文本中逗号分隔的几个样本中的一个相匹配
例:
筛选条件
♦字段名:
xs.xm
♦条件:
♦实例:
”张%”
◆统配符说明(注意:
不是?
和*,笔试考过)
_:
替代西文1个字节,中文2个字节
%:
替代当前位之后的所有字符
◆05年秋
(1)P历届101。
基于xs表和cj表查询“刘玉敏”同学所在系的每位同学的平均成绩,输出xdh、xh、xm、平均成绩,查询结果按姓名排序。
(筛选条件中使用selectxdhfromxswherexm="
刘玉敏"
;
查询保存并关闭设计器后,可能无法再次在设计器中打开,只能在编辑器窗口中修改。
)
SELECTXs.xdh,Xs.xh,Xs.xm,AVG(Cj.cj)as平均成绩;
WHEREXs.xdhIN(selexdhfromxswherexm='
刘玉敏'
);
GROUPBYXs.xh;
ORDERBYXs.xm
在“实例”文本框中输入比较条件,需要注意的几个问题
♦仅当字符串与源表中的字段名相同时,才用引号括起字符串
♦日期值输入与setstrictdateto0/1的设置有关。
0:
传统格式,1:
严格日期格式。
花括号必须输入(P书113中有误)
♦逻辑值的前后,必须使用句号点。
如:
.T.
♦字段名不能使用“备注”、“通用”字段作为选定条件
或:
若实例为日期常量,需要注意:
◆由键盘输入的01/19/99是字符型的与csrq值{01/19/99}日期型的类型是不一致的
◆由键盘输入筛选条件为日期型时,实例中的日期需使用CTOD()函数,另外自变量需加引号
(6)筛选结果记录(在分组依据→满足条件→)
◆格式HAVING条件
指定包括在查询结果中的组必须满足的筛选条件
应该同GROUPBY一起使用
若没有使用GROUPBY与WHERE子句相同
◆联接条件和筛选条件:
相似:
都是先比较值,然后选出满足条件的记录
不同:
筛选是将字段值和筛选值进行比较,而联接是将一张表中的字段值和另一张表中的字段值进行比较
◆WHERE条件和HAVIN条件:
P123
无分组:
GROUPBY,两者相同
通常HAVIN含字段函数,若未用函数WHERE子句速度快于HAVIN
(7)组合查询
◆格式UNION[ALL]
把一个select语句的查询结果与另一个select语句的查询结果组合起来
ALL:
防止UNION删除组合结果中重复的行
✧不能使用UNION来组合子查询
✧两个select语句的查询结果中的列数必须相同
✧两个select查询结果中的对应列必须有相同的数据类型和宽度
✧只有最后的select中可以包含ORDERBY子句,而且必须按编号指出所输出的列
(8)输出去向P教材116
输出去向
示例
独立的表.dbf
INTOTABLE/DBF表名
数组
INTO ARRAY数组名
临时表
INTOCURSOR临时表名
活动窗口
TO SCREEN
文本文件.txt
TOFILE文件名
标签文件.lbx
LABELFORM文件名
打印
TOPRINT[PROMPT]
报表文件.frx
REPORTFORM文件名
◆打印TOPRINT[PROMPT]
PROMP:
打印开始前将显示对话窗口,从而可以重新设置打印机
◆文本文件
命令:
TOFILE文件名[ADDITIVE]
♦ADDITIVE:
使查询结果追加到指定文本文件内容的后面
界面:
查询去向→屏幕→到文本文件→
(9)分组:
是算术运算、集合函数计算的依据
关键:
抓住统计对象特征词,如:
xdh、xh、07春(7)
◆格式GROUPBY分组列表
◆分组列表:
查询结果表中的列的位置
编号:
最左列的编号为1
字段名
包含SQL字段函数的字段名
数值表达式
(10)排序:
◆格式ORDERBY字段列表[ASC/DESC]
ASC:
升序(默认)
DESC:
降序
(11)指定结果范围:
◆在符合条件的所有记录中选取若干个记录
◆必须和ORDERBY一起使用
◆格式TOPn[PERCENT]
无[PERCENT]:
♦选取指定数量n的记录
有[PERCENT]
♦选取指定数量n%的记录