vfp第四章关系数据库标准语言SQL.ppt

上传人:b****1 文档编号:1393673 上传时间:2022-10-22 格式:PPT 页数:45 大小:3.84MB
下载 相关 举报
vfp第四章关系数据库标准语言SQL.ppt_第1页
第1页 / 共45页
vfp第四章关系数据库标准语言SQL.ppt_第2页
第2页 / 共45页
vfp第四章关系数据库标准语言SQL.ppt_第3页
第3页 / 共45页
vfp第四章关系数据库标准语言SQL.ppt_第4页
第4页 / 共45页
vfp第四章关系数据库标准语言SQL.ppt_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

vfp第四章关系数据库标准语言SQL.ppt

《vfp第四章关系数据库标准语言SQL.ppt》由会员分享,可在线阅读,更多相关《vfp第四章关系数据库标准语言SQL.ppt(45页珍藏版)》请在冰豆网上搜索。

vfp第四章关系数据库标准语言SQL.ppt

第四章关系数据库标准语言SQL,VisualFoxPro数据库程序设计,W,目录,W,4.1SQL概述,W,目录,4.2.1简单查询4.2.2简单的连接查询4.2.3嵌套查询4.2.4几个特殊的运算符4.2.5排序4.2.6简单的计算查询4.2.7分组与计算查询4.2.8利用空值查询4.2.9别名与自连接查询4.2.10内外层相关嵌套查询4.2.11使用量词和谓词的查询4.2.12超连接查询4.2.13集合的并运算4.2.14VFP中SELECT的几个特殊选项,W,SELECTSQL,SELECTALL|DISTINCTTOPnExprPERCENTAlias.Select_ItemASColumn_Name,Alias.Select_ItemASColumn_Name.FROMFORCEDatabaseName!

TableASLocal_AliasINNER|LEFTOUTER|RIGHTOUTER|FULLOUTERJOINDatabaseName!

TableASLocal_AliasONJoinConditionINTODestination|TOFILEFileNameADDITIVE|TOPRINTERPROMPT|TOSCREENPREFERENCEPreferenceNameNOCONSOLEPLAINNOWAITWHEREJoinConditionANDJoinCondition.AND|ORFilterConditionAND|ORFilterCondition.GROUPBYGroupColumn,GroupColumn.HAVINGFilterConditionUNIONALLSELECT命令ORDERBYOrder_ItemASC|DESC,Order_ItemASC|DESC.,W,问题,需要访问的数据涉及到多张表查询学生名、课程名、成绩xs.xmkc.kcmcj.cj需要访问的只是部分数据工商管理系的学生xh,xm需要访问计算或统计数据每个学生的平均分xs.xm平均(cj.cj)分组xs.xm每门课程80分以上的人数kc.kcm个数()条件cj.cj=80分组cj.kcdh,W,解决办法,查询和视图!

共同点从表中检索或统计所需的数据区别查询是只读的;视图可以被修改,并且可以将更新结果送回源表查询以独立的文件存储;视图不以独立文件存储,系统将其名称及定义存储在数据库中,W,SELECTSQL,W,W,4.2.1简单查询,例4.1:

从职工表中检索所有工资值。

W,例4.2:

检索仓库关系中的所有元组。

W,例4.3:

检索工资多于1230的职工号。

W,例4.4:

检索哪些仓库有工资多于1210的职工。

W,例4.5:

给出在仓库“WH1”或“WH2”工作并且工资少于1250员的职工号。

W,4.2.2简单连接查询,例4.7:

找出工作在面积大于400的仓库的职工号以及这些职工工作的城市。

W,Select职工号,城市from仓库,职工;where(面积400)and(职工.仓库号=仓库.仓库号),Select职工号,城市from仓库innerjoin职工;On(职工.仓库号=仓库.仓库号)where面积400,W,4.2.3嵌套查询,例4.9:

查询所有职工的工资都多于1210元的仓库的信息。

没有一个职工的工资少于或等于1210元的仓库信息。

Select*from仓库where仓库号notin;(select仓库号from职工where工资=1210);and仓库号in(select仓库号from职工),W,4.2.4几个特殊运算符,例4.11:

检索出工资在1220元到1240元范围内的职工信息。

Select*from职工;where工资between1220and1240例4.12:

从供应商关系中检索出全部公司的信息(不要工厂或其他供应商的信息)。

Select*from供应商;where供应商名like“%公司”,W,4.2.5排序,例4.15先按仓库号排序,再按工资排序输出全部职工信息。

Select*from职工orderby仓库号,工资,W,4.2.6/7分组计算查询,Count()、sum()、avg()、max()、min()例:

查询cj表中每个学生的考试门数、最高分、最低分、平均分及总分,结果按学号升序排序。

Selectcj.xh,count(*)as考试门数,;max(cj.cj)as最高分,min(cj.cj)as最低分,;avg(cj.cj)as平均分,sum(cj.cj)as总分;fromcj;groupbycj.xh;orderby1,W,4.2.8利用空值查询,例4.23:

找出尚未确定供应商的订购单。

Select*from订购单;where供应商号isnull,W,4.2.9别名与自连接查询,在FROM子句中使用:

雇员关系:

雇员(雇员号,雇员姓名,经理),Selects.雇员姓名,“领导”,e.雇员姓名;from雇员s,雇员ewheres.雇员号=e.经理,W,4.2.10内外层互相关嵌套查询,例:

列出每个职工经手的具有最高金额的订购单信息。

Selectout.职工号,out.供应商号,out.订购单号,out.订购日期,out.总金额;from订购单outwhere总金额=;(selectmax(总金额)from订购单inner1;whereout.职工号=inner1.职工号),W,4.2.11使用量词和谓词查询,ANY|ALL|SOME(子查询)ANY与SOME是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果为真。

ALL要求子查询中的所有行都能使结果为真时,结果才为真。

NOTEXISTS(子查询)notExists是谓词,用来检查在子查询中是否有结果返回(即存在元组或不存在元组),W,例:

查询那些仓库中还没有职工的仓库信息。

SELECT*FROM仓库WHERENOTEXISTS;(SELECT*FROM职工where仓库号=仓库.仓库号)select*from仓库where仓库号notin;(select仓库号from职工),W,例:

检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号。

Selectdistinct仓库号from职工;where工资=any;(select工资from职工where仓库号=“WH1”),W,4.2.12超连接查询,SELECTfromtableinner|left|right|fulljointableOnjoinconditionWhere例:

普通连接Select仓库.仓库号,城市,面积,职工号,工资;from仓库innerjoin职工on仓库.仓库号=职工.仓库号,W,例:

左连接Select仓库.仓库号,城市,面积,职工号,工资;from仓库leftjoin职工on仓库.仓库号=职工.仓库号例:

右连接Select仓库.仓库号,城市,面积,职工号,工资;from仓库rightjoin职工on仓库.仓库号=职工.仓库号例:

全连接Select仓库.仓库号,城市,面积,职工号,工资;from仓库fulljoin职工on仓库.仓库号=职工.仓库号,W,4.2.13集合的并运算,UNION:

两个查询结果具有相同结构的关系并在一起。

查询全校教师与学生的姓名和类别信息。

Selectjs.xmas姓名,教师as类别fromjs;Union;Selectxs.xmas姓名,学生as类别fromxs,W,4.2.14VisualFoxProSQLSELECT的几个特殊选项,显示部分数据:

1.显示工资最高的3位职工信息Select*top3from职工orderby工资desc2.显示工资最低的那30%职工的信息Select*top30percentfrom职工orderby工资,W,查询结果的去处:

INTOARRAYArrayNameINTOCURSORCursorNameINTOTABLE|DBFTableNameTOFILEFileNameADDITIVETOPRINTERPROMPT,W,目录,4.3.1插入数据4.3.2更新数据4.3.3删除,W,4.3.1插入数据,INSERTINTOdbf_name(fname1,fname2,)VALUES(eExpression1,eExpression2,)Insertinto订购单values(E7,S4,OR01,2001-05-25,5000),W,4.3.2更新数据,UPDATETableNameSETColumn_Name1=eExpression1,Column_Name2=eExpression2.WHERECondition为js表添加一个年龄字段,并计算所有男教师的年龄。

Altertablejsaddcolumnnln(3,0)Updatejssetjs.nl=year(date()-year(js.csrq);wherejs.xb=“男”,W,4.3.3删除数据,DELETEFROMTableNameWHERECondition删除所有考试不及格的成绩信息。

DELETEFROMcjWHEREcj.cj60,W,目录,4.4.1表的定义4.4.2表的删除4.4.3表结构的修改4.4.4视图的定义,W,4.4.1表的定义,CREATETABLE|DBFTableName1NAMELongTableNameFREE(FieldName1FieldType(nFieldWidth,nPrecision)NULL|NOTNULLCHECKlExpression1ERRORcMessageText1DEFAULTeExpression1PRIMARYKEY|UNIQUEREFERENCESTableName2TAGTagName1NOCPTRANS,FieldName2.,PRIMARYKEYeExpression2TAGTagName2|,UNIQUEeExpression3TAGTagName3,FOREIGNKEYeExpression4TAGTagName4NODUPREFERENCESTableName3TAGTagName5,CHECKlExpression2ERRORcMessageText2)|FROMARRAYArrayName,W,仓库1,CREATETABLE仓库1(仓库号C(5)PRIMARYKEY,城市C(10),面积ICHECK(面积0)ERROR“面积应该大于0”),W,职工1,CREATETABLE职工1(仓库号C(5),职工号C(5)PRIMARYKEY,工资ICHECK(工资=1000and工资=5000)ERROR“工资值的范围在1000-5000!

”DEFAULT1200,FOREIGNKEY仓库号TAG仓库号REFERENCES仓库1),W,4.4.2表的删除,DROPTABLEtable_name,W,4.4.3表结构的修改,格式1:

(定义或修改字段定义)ALTERTABLETableName1ADD|ALTERCOLUMNFieldName1FieldType(nFieldWidth,nPrecision)NULL|NOTNULLCHECKlExpre

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1