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