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 仓库 inner join 职工;On(职工.仓库号=仓库.仓库号)where 面积400,W,4.2.3嵌套查询,
2、例4.9:查询所有职工的工资都多于1210元的仓库的信息。没有一个职工的工资少于或等于1210元的仓库信息。Select*from 仓库 where 仓库号 not in;(select 仓库号 from 职工 where 工资=1210);and 仓库号 in(select 仓库号 from 职工),W,4.2.4几个特殊运算符,例4.11:检索出工资在1220元到1240元范围内的职工信息。Select*from 职工;where 工资 between 1220 and 1240例4.12:从供应商关系中检索出全部公司的信息(不要工厂或其他供应商的信息)。Select*from 供应商;w
3、here 供应商名 like“%公司”,W,4.2.5 排序,例4.15 先按仓库号排序,再按工资排序输出全部职工信息。Select*from 职工 order by 仓库号,工资,W,4.2.6/7分组计算查询,Count()、sum()、avg()、max()、min()例:查询cj表中每个学生的考试门数、最高分、最低分、平均分及总分,结果按学号升序排序。Select cj.xh,count(*)as 考试门数,;max(cj.cj)as 最高分,min(cj.cj)as 最低分,;avg(cj.cj)as 平均分,sum(cj.cj)as 总分;from cj;group by cj.x
4、h;order by 1,W,4.2.8利用空值查询,例4.23:找出尚未确定供应商的订购单。Select*from 订购单;where 供应商号 is null,W,4.2.9别名与自连接查询,在FROM子句中使用:雇员关系:雇员(雇员号,雇员姓名,经理),Select s.雇员姓名,“领导”,e.雇员姓名;from 雇员 s,雇员 e where s.雇员号=e.经理,W,4.2.10内外层互相关嵌套查询,例:列出每个职工经手的具有最高金额的订购单信息。,Select out.职工号,out.供应商号,out.订购单号,out.订购日期,out.总金额;from 订购单 out where
5、 总金额=;(select max(总金额)from 订购单 inner1;where out.职工号=inner1.职工号),W,4.2.11使用量词和谓词查询,ANY|ALL|SOME(子查询)ANY与SOME是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果为真。ALL要求子查询中的所有行都能使结果为真时,结果才为真。NOT EXISTS(子查询)not Exists是谓词,用来检查在子查询中是否有结果返回(即存在元组或不存在元组),W,例:查询那些仓库中还没有职工的仓库信息。SELECT*FROM 仓库 WHERE NOT EXISTS;(SELECT*FROM 职工 w
6、here 仓库号=仓库.仓库号)select*from 仓库 where 仓库号 not in;(select 仓库号 from 职工),W,例:检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号。Select distinct 仓库号 from 职工;where 工资=any;(select 工资 from 职工 where 仓库号=“WH1”),W,4.2.12超连接查询,SELECT from table inner|left|right|full join tableOn joinconditionWhere 例:普通连接Select 仓库.仓库号,城市,面积,职工号,工
7、资;from 仓库 inner join 职工 on仓库.仓库号=职工.仓库号,W,例:左连接Select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 left join 职工 on仓库.仓库号=职工.仓库号例:右连接Select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 right join 职工 on仓库.仓库号=职工.仓库号例:全连接Select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 full join 职工 on仓库.仓库号=职工.仓库号,W,4.2.13集合的并运算,UNION:两个查询结果具有相同结构的关系并在一起。查询全校教师与学生的姓
8、名和类别信息。Select js.xm as 姓名,教师 as 类别 from js;Union;Select xs.xm as 姓名,学生 as 类别 from xs,W,4.2.14Visual FoxPro SQL SELECT的几个特殊选项,显示部分数据:1.显示工资最高的3位职工信息Select*top 3 from 职工 order by 工资 desc2.显示工资最低的那30%职工的信息Select*top 30 percent from 职工 order by 工资,W,查询结果的去处:,INTO ARRAY ArrayNameINTO CURSOR CursorNameINT
9、O TABLE|DBF TableNameTO FILE FileName ADDITIVETO PRINTER PROMPT,W,目 录,4.3.1 插入数据4.3.2 更新数据4.3.3 删除,W,4.3.1插入数据,INSERT INTO dbf_name(fname1,fname2,)VALUES(eExpression1,eExpression2,)Insert into 订购单 values(E7,S4,OR01,2001-05-25,5000),W,4.3.2更新数据,UPDATE TableNameSET Column_Name1=eExpression1,Column_Nam
10、e2=eExpression2.WHERE Condition为js表添加一个年龄字段,并计算所有男教师的年龄。Alter table js add column nl n(3,0)Update js set js.nl=year(date()-year(js.csrq);where js.xb=“男”,W,4.3.3删除数据,DELETE FROM TableName WHERE Condition 删除所有考试不及格的成绩信息。DELETE FROM cj WHERE cj.cj60,W,目 录,4.4.1 表的定义4.4.2 表的删除4.4.3 表结构的修改4.4.4 视图的定义,W,4
11、.4.1表的定义,CREATE TABLE|DBF TableName1 NAME LongTableName FREE(FieldName1 FieldType(nFieldWidth,nPrecision)NULL|NOT NULLCHECK lExpression1 ERROR cMessageText1DEFAULT eExpression1PRIMARY KEY|UNIQUEREFERENCES TableName2 TAG TagName1NOCPTRANS,FieldName2.,PRIMARY KEY eExpression2 TAG TagName2|,UNIQUE eExp
12、ression3 TAG TagName3,FOREIGN KEY eExpression4 TAG TagName4 NODUPREFERENCES TableName3 TAG TagName5,CHECK lExpression2 ERROR cMessageText2)|FROM ARRAY ArrayName,W,仓库1,CREATE TABLE 仓库1(仓库号 C(5)PRIMARY KEY,城市 C(10),面积 I CHECK(面积0)ERROR“面积应该大于0”),W,职工1,CREATE TABLE 职工1(仓库号 C(5),职工号 C(5)PRIMARY KEY,工资 I CHECK(工资=1000 and 工资=5000)ERROR“工资值的范围在1000-5000!”DEFAULT 1200,FOREIGN KEY 仓库号 TAG 仓库号 REFERENCES 仓库1),W,4.4.2表的删除,DROP TABLE table_name,W,4.4.3表结构的修改,格式1:(定义或修改字段定义)ALTER TABLE TableName1ADD|ALTER COLUMN FieldName1FieldType(nFieldWidth,nPrecision)NULL|NOT NULLCHECK lExpre
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1