SQL知识-SQL2005子句

上传人:sx****84 文档编号:243016738 上传时间:2024-09-13 格式:PPT 页数:37 大小:166.50KB
返回 下载 相关 举报
SQL知识-SQL2005子句_第1页
第1页 / 共37页
SQL知识-SQL2005子句_第2页
第2页 / 共37页
SQL知识-SQL2005子句_第3页
第3页 / 共37页
点击查看更多>>
资源描述
,www . ufsoft . com,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,SQL,内部培训第二天,更多信息请登陆:,4006 343 551,用友软件核心合作伙伴,总体内容介绍,SQL,中的子句,表的联合,子查询:内嵌的,SQL,子句,操作数据,SQL,中的子句,WHERE,子句,SELECT Tab1.name, Tab2.id,FROM Tab1, Tab2,WHERE Tab1.id *=Tab2.id,From tab1 as a, tab2 as b,SQL,中的子句, ORDER BY ,order_by_expression, ASC | DESC , ,.,n, ,Select,From,Where,Order by,SQL,中的子句,Group by,子句, GROUP BY ALL ,group_by_expression,.,n, WITH CUBE | ROLLUP ,查询存货明细表中仓库,01,中存货,010201,所有的入库数量,USE ufdata_888_2004,SELECT cwhcode,cinvcode,sum(isnull(iainquantity,0) as iquantity,FROM ia_subsidiary,WHERE cwhcode =,01,and cinvcode=,010201,GROUP BY cwhcode,cinvcode,SQL,中的子句,下面是结果集:,Cwhcode cinvcode iquantity,- - -,01 010201 560.0,(1 row(s) affected),SQL,中的子句,HAVING,子句,HAVING ,使用,HAVING,子句选择行,HAVING,子句对,GROUP BY,子句设置条件的方式与,WHERE,子句和,SELECT,语句交互的方式类似。,WHERE,子句搜索条件在进行分组操作之前应用;而,HAVING,搜索条件在进行分组操作之后应用。,HAVING,语法与,WHERE,语法类似,但,HAVING,可以包含聚合函数。,查询出仓库,01,中,所有入库金额超过的存货的入库数量,USE ufdata_888_2004,SELECT cwhcode,cinvcode,sum(isnull(iainquantity,0),FROM ia_subsidiary,GROUP BY cwhcode,cinvcode,HAVING SUM(isnull(iainprice,0) 1000000,SQL,中的子句,下面是结果集:,Cwhcode cinvcode iquantity,- - -,0403011100.0,040303850.0,0403061220.0,040308700.0,0403091350.0,0403101540.0,0403112180.0,0808017000.0,08080214000.0,0808033000.0,SQL,中的子句,以下是没有聚合函数的,HAVING,子句的示例。,查询存货明细表中供应商编码以,03,开头的各存货的采购入库数,USE ufdata_888_2004,select cvencode,cinvcode,sum(isnull(iainquantity,0) as iquantity,from ia_subsidiary,where cvoutype=01,group by cvencode,cinvcode,having cvencode like 03%,SQL,中的子句,下面是结果集:,cvencode cinvcode iquantity,- - -,030190101017000.82,03019010102176.422,030010101033520.0,030040101035216.0,030050101055216.0,030080101052380.0,030020101078821.0,03006010107120.0,0300601010880.0,03015010109165.0,030150101109161.0,030100101128879.0,030100101139021.0,03015010114445.0,0301501011575.0,03013010116635.0,03013010117365.0,030130101182995.0,030150301125.0,SQL,中的子句,如果,HAVING,中包含多个条件,那么这些条件将通过,AND,、,OR,或,NOT,组合在一起,以下显示的是存货明细表中供应商编码以,03,开头并且入库数量超过,3000,的各存货的采购入库数,USE ufdata_888_2004,select cvencode,cinvcode,sum(isnull(iainquantity,0) as iquantity,from ia_subsidiary,where cvoutype=01,group by cvencode,cinvcode,having cvencode like 03%,and sum(isnull(iainquantity,0) 3000,SQL,中的子句,ORDER BY,可以用来为查询的结果按某种顺序排序(默认为升序),下面的示例显示使用,ORDER BY,子句将查询返回中的行按日期进行降序排序:,select cwhcode,cinvcode,dvoudate,sum(iainquantity) as iquantity,from ia_subsidiary,where cvoutype=01,group by cwhcode,cinvcode,dvoudate,order by dvoudate desc,SQL,中的子句,理解应用,WHERE,、,GROUP BY,和,HAVING,子句的正确序列对编写高效的查询代码会有所帮助:,WHERE,子句用来筛选,FROM,子句中指定的操作所产生的行。,GROUP BY,子句用来分组,WHERE,子句的输出。,HAVING,子句用来从分组的结果中筛选行。,SQL,中的子句,对于可以在分组操作之前应用的搜索条件,在,WHERE,子句中指定它们更有效。这样可以减少必须分组的行数。应当在,HAVING,子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。,SQL Server,查询优化器可处理这些条件中的大多数。如果查询优化器确定,HAVING,搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。查询优化器可能无法识别所有可以在分组操作之前应用的,HAVING,搜索条件。建议将所有这些搜索条件放在,WHERE,子句中而不是,HAVING,子句中。,表的联合(,Join,),又时所需的资料并不是放在同一个表中,在这个时候,你就要用到,Join,,如我们,U8,中的主子表,当然,Join,如何将不同的数据库的资料结合,还要看你如何使用它。,一共有四种不同的,Join,的方式:,INNER Join,FULL OUTER Join,LEFT OUTER Join,RIGHT OUTER Join,表的联合(,Join,),INNER,指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。,FULL OUTER,指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为,NULL,。这是对通常由,INNER JOIN,返回的所有行的补充。,LEFT OUTER,指定在结果集中包含左表中所有不满足联接条件的行,且在由内联接返回所有的行之外,将另外一个表的输出列设为,NULL,。,RIGHT OUTER,指定在结果集中包含右表中所有不满足联接条件的行,且在由内联接返回的所有行之外,将与另外一个表对应的输出列设为,NULL,。,表的联合(,Join,),Select,From,On,例子,Use,ufdata_888_2004,Select,* From,rdrecord,Inner,Join,rdrecords,On rdrecord.id,=,rdrecords.id,表的联合(,Join,),Outer,Join,的语法,Select,From,Outer,Join,On,表的联合(,Join,),Outer,Join,是,inclusive,(包容性吧),不同于,Inner,Join,的,exclusive,(排他性 ),Left,Outer,Join,的查询结果会包含所有,Left,资料表的资料,对应的,Right,表的记录用,Null,填写;,Right,Outer,Join,的查询就会包含所有,Right,资料表的资料,对应的,Left,表的记录用,Null,填写,表的联合(,Join,),Left,Outer,Join,子句,Select,* From,ap_detail,Left,Outer,Join,inventory,On ap_detail.cinvcode,=,inventory.cinvcode,表的联合(,Join,),Right,Outer,Join,子句,Select,*,From,inventory,Right,Join,ap_detail,On,inventory.cinvcode,=,ap_detail.cinvcode,表的联合(,Join,),FULL OUTER Join,子句,FULL OUTER Join,指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为,NULL,。这是对通常由,INNER JOIN,返回的所有行的补充。,Union,运算符,UNION,运算符,将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。,使用,UNION,组合两个查询的结果集的两个基本规则是:,所有查询中的列数和列的顺序必须相同。,数据类型必须兼容。,UNION,运算符,Table1,和,Table2,具有相同的两列结构。,UNION,运算符,下面的查询在这两个表之间创建,UNION,运算:,SELECT * FROM Table1,UNION,SELECT * FROM Table2,UNION,运算符,下面是结果集:,ColumnA ColumnB,- -,abc 1,def 2,ghi 3,jkl 4,mno 5,子查询:内嵌的,SQL,子句,if exists,(select *,from dbo.sysobjects,where id = object_id(Ndbo.PO_Podetails) and OBJECTPROPERTY(id, NIsUserTable) = 1),drop table dbo.PO_Podetails,GO,子查询:内嵌的,SQL,子句,USE pubs,GO,SELECT DISTINCT pub_name,FROM publishers,WHERE,EXISTS (SELECT *,FROM titles,WHERE pub_id = publishers.pub_id AND type = business),GO,子查询:内嵌的,SQL,子句,USE pubs,GO,SELECT distinct pub_name,FROM publishers,WHERE pub_id,IN (SELECT pub_id FROM titles WHERE type = business),GO,子查询:内嵌的,SQL,子句,NOT EXISTS,NOT EXISTS,的作用与,EXISTS,正相反。如果子查询没有返回行,则满足,NOT EXISTS,中的,WHERE,子句。本示例查找不出版商业书籍的出版商的名称:,USE pubs,GO,SELECT pub_name,FROM publishers,WHERE,NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type = business),ORDER BY pub_name,GO,操作数据(,INSERT UPDATE DELETE,),INSERT INTO,子句,INSERT INTO,titles (title_id, title, type, pub_id, price),VALUES (BU9876, Creating Web Pages, business, 1389, 29.99),操作数据(,INSERT UPDATE DELETE,),UPDATE,子查询,子查询可以嵌套在,UPDATE,、,DELETE,和,INSERT,语句以及,SELECT,语句中。,下面的查询将,手机主辅料仓库的出入单的记帐人标志置空,。该查询更新,rdrecord,表;其子查询引用,warehouse,表。,UPDATE rdrecord,SET caccounter = null,WHERE cwhcode IN (SELECT cwhcode FROM warehouse WHERE cwhname = ,手机主辅料仓库,),下面是使用联接的等效,UPDATE,语句:,UPDATE rdrecord,SET caccounter = null,FROM rdrecord,INNER JOIN warehouse,ON rdrecord.cwhcode = warehouse.cwhcode AND cwhname = ,手机主辅料仓库,操作数据(,INSERT UPDATE DELETE,),DELETE,子句,通过下面嵌套的查询,可以删除商业书籍的所有销售记录:,DELETE ia_subsidiary,WHERE id,IN (SELECT autoid FROM rdrecords WHERE cinvcode =,0301),操作数据(,INSERT UPDATE DELETE,),Update,使用注意(,where,后的条件一定要验证),Select * from accinformation,where cid =,99,and cvalue =,8.60,Update accinformation set cvalue =,8.50,where cid =,99,and cvalue =,8.60,操作数据(,Select Into,),Select into,子句,SELECT csbvcode,ddate,ccuscode,iquantity,imoney,INTO NewShippers,FROM salebillvouch,JOIN salebillvouchs,ON (salebillvouch.sbvid = salebillvouchs.sbvid),总结,1.SQL,中的子句(,WHERE,,,ORDER BY,,,GROUP BY,,,HAVING,),子查询中,EXIST,如何使用,2.,表的联合(,Inner Join,;,Left Out Join,;,Right Out Join,;,Full Out Join,),3.INSERT UPDATE,和,DELETE,来处理数据,4.Select into,语句,结束,谢谢大家,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!