2022年sql语句子查询大全 .pdf

上传人:C****o 文档编号:39743785 上传时间:2022-09-07 格式:PDF 页数:8 大小:72.08KB
返回 下载 相关 举报
2022年sql语句子查询大全 .pdf_第1页
第1页 / 共8页
2022年sql语句子查询大全 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年sql语句子查询大全 .pdf》由会员分享,可在线阅读,更多相关《2022年sql语句子查询大全 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、SQL技术:sql 语句子查询大全left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接)只返回两个表中联结字段相等的行举例如下:-表 A 记录如下:aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115表 B 记录如下:bID bName 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 2006032408-1.left

2、 join sql 语句如下:select*from A left join B on A.aID=B.bID结果如下:aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404 5 a20050115 NULL NULL(所影响的行数为 5 行)结果说明:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -left join是以 A表的记录为基础的,A 可以看成左表,B 可以看成右表,left j

3、oin是以左表为准的.换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为:A.aID=B.bID).B表记录不足的地方均为NULL.-2.right join sql 语句如下:select*from A right join B on A.aID=B.bID结果如下:aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404 NULL NULL 8 2006032408(所影

4、响的行数为 5 行)结果说明:仔细观察一下,就会发现,和 left join的结果刚好相反,这次是以右表(B)为基础的,A 表不足的地方用 NULL填充.-3.inner join sql 语句如下:select*from A innerjoin B on A.aID=B.bID结果如下:aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404结果说明:很明显,这里只显示出了 A.aID=B.bID的记录.这说明 i

5、nner join并不以谁为基础,它只显示符合条件的记录.-注:LEFT JOIN 操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 说明:table1,table2参数用于指定要将记录组合的表的名称。field1,fie

6、ld2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。compopr 参数指定关系比较运算符:=,=或 。如果在 INNER JOIN 操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.一、有 =0,1,0)AS haveson FROM tb AS main WHERE fatherid=02、一次性查询出某节点的兄弟节点SELECT*FROM tb WHERE fatherid=(SELECT fatherid FROM tb WHERE ID=6)3、一次性查询出某节点的父辈节点SELE

7、CT*FROM tb WHERE fatherid=(SELECT fatherid FROM tb WHERE ID=(SELECT fatherid FROM tb WHERE ID=13)exists 和 in in 适合内外表都很大的情况,exists适合外表结果集很小的情况。http:/ 和 in 使用一例=今天市场报告有个sql 及慢,运行需要20 多分钟,如下:update p_container_decl cd set cd.ANNUL_FLAG=0001,ANNUL_DATE=sysdate where exists(select 1 from(select tc.decl_

8、no,tc.goods_no from p_transfer_cont tc,P_AFFIRM_DO ad where tc.GOODS_DECL_NO=ad.DECL_NO 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 8 页 -and ad.DECL_NO=sssssssssssssssss)a where a.decl_no=cd.decl_no and a.goods_no=cd.goods_no)上面涉及的3 个表的记录数都不小,均在百万左右。根据这种情况,我想到了前不久看的tom的一篇文章,说的是exists和 in 的区别,in 是把外表和那表作hash join

9、,而 exists是对外表作loop,每次 loop 再对那表进行查询。这样的话,in 适合内外表都很大的情况,exists适合外表结果集很小的情况。而我目前的情况适合用in 来作查询,于是我改写了sql,如下:update p_container_decl cd set cd.ANNUL_FLAG=0001,ANNUL_DATE=sysdate where(decl_no,goods_no)in(select tc.decl_no,tc.goods_no from p_transfer_cont tc,P_AFFIRM_DO ad where tc.GOODS_DECL_NO=ad.DECL

10、_NO and ad.DE CL_NO=ssssssssssss)让市场人员测试,结果运行时间在1 分钟内。问题解决了,看来 exists和 in 确实是要根据表的数据量来决定使用。not in not exists 请注意 not in 逻辑上不完全等同于not exists,如果你误用了not in,小心你的程序存在致命的 BUG:请看下面的例子:create table t1(c1 number,c2 number);create table t2(c1 number,c2 number);insert into t1 values(1,2);insert into t1 values(

11、1,3);insert into t2 values(1,2);insert into t2 values(1,null);select*from t1 where c2 not in(select c2 from t2);no rows found select*from t1 where not exists(select 1 from t2 where t1.c2=t2.c2);c1 c2 1 3名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 8 页 -正如所看到的,not in 出现了不期望的结果集,存在逻辑错误。如果看一下上述两个select语句的执行计划,也会不同。后者使用了hash_aj。因此,请尽量不要使用not in(它会调用子查询),而尽量使用not exists(它会调用关联子查询)。如果子查询中返回的任意一条记录含有空值,则查询将不返回任何记录,正如上面例子所示。除非子查询字段有非空限制,这时可以使用not in,并且也可以通过提示让它使用hasg_aj或merge_aj 连接。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 8 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁