问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL 几种联表查询方式

发布网友 发布时间:2022-04-23 18:33

我来回答

1个回答

热心网友 时间:2022-04-09 17:39

二、CROSS JOIN(创建笛卡尔积) 对两张表通过交叉联合产生第三张返回结果集的表。相当于普通的连接。 三、INNER JOIN(内连接) 内连接就相当于普通的CROSS JOIN,只是格式不一样,INNER JOIN在后面有一个ON子句(相当于WHERE)的搜索条件,用于过滤返回的行。 四、OUTER JOIN (外连接) select * from ta outer join tb on (ta.c1=tb.c1) outer join告诉DBMS生成结果表,在此表中不仅带有相关(ta.c1=tb.c1)行对,而且还有来自两个源表中任一表的不匹配的行。 五、LEFT OUTER JOIN(左连接) RIGHT OUTER JOIN(右连接) select * from ta left outer join tb on (ta.c1=tb.c1) select * from ta right outer join tb on (ta.c1=tb.c1) left outer join(left join) 告诉DBMS生成包括联合行和任何不匹配的行的结果表,但是不匹配的行系来自查询的FROM子句中LEFT OUTER JOIN关键词左边的表中。 right outer join(right join)与left outer join(left join)刚好相反。 六、FULL OUTER JOIN(全连接) FULL OUTER JOIN 返回组合了LEFT OUTER JOIN 和RIGHT OUTER JOIN结果的表。 以下是Inner Join及Outer Join的具体介绍: 在一个正规化的数据库环境中, 我们常会碰到这款情形: 所需的资料并不是放在同一个资料表中, 在这个时候, 你就要用到 Join。 当然Join 如何将不同的数据库的资料结合, 还要看你如何使用它, 一共有四种不同的 Join 的方式, 在这篇文章中我们将为你介绍 Inner Join 及 Outer Join 以及其应用。 Inner Join (自然连接)Inner Join 应该是最常用的 Join 方式, 它只会传回符合 Join 规则的纪录, 还是先来看看语法: Select <要选择的字段> From <主要资料表> <次要资料表> [On ] 现在我们利用 MS SQL Server 的内建数据库看一个实例。 Select ProctId, ProctName, SupplierId From Procts 从Procts 产品资料表中取出三个字段, 分别是产品代码, 产品名称, 供货商代码, 但查询出来的结果保证让你的老板很不满意, 因为供货商代码对于人类实在是无什么意义, 这个时候 Join 就可以帮上忙了, 藉由 Join Suppliers 这个资料表我们便可以查询到供货商名称Select ProctId, ProctName, Suppliers.SupplierIdFrom Procts 首先要拿掉 Procts 资料表的 Foreign Key, 否则没有法度在 Procts 资料表新增一笔 SupplierId 没有对映到 Suppliers 资料表的纪录, 要知影一个资料表的 Constraint 你可以执行 SQL 内建的 sp_helpconstraint , 在 QA 执行 sp_helpconstraint Procts 接下来删除 FK_Procts_Suppliers 这个 Foreign Key Alter Table Procts Drop Constraint FK_Procts_Suppliers 再来新增一笔纪录于 Procts 资料表, SupplierId 使用 50 是因为它并没有对映到 Suppliers 资料表中的记录 Insert Into Procts (ProctName,SupplierId,CategoryId) values ('Test Proct','50','1') 现在我们再执行头前的查询, 只是将 Inner Join 改为 Left Outer Join Select ProctId, ProctName, Suppliers.SupplierId From Procts Left Outer Join Suppliers Procts.Suppliers = Suppliers.SupplierId 比较一下两种 Join 方式的查询结果, 你应该就会知影其中的差别! 再来看看 Right Outer Join, 请新增下底这笔记录 Insert Into Suppliers (CompanyName) values ('LearnASP') 现在请使用 Right Out Join 来作查询, 比较看看查询的结果和 Inner Join 有什么不同! 寻找不相符纪录 这里我们来看看如何使用 Out Join 来找不相符纪录, 可能是有子纪录却没有父纪录或是颠倒过来 Select Suppliers.CompanyName From Procts Right Join Suppliers On Procts.SupplierId = Suppliers.SupplierId Where Procts.SupplierId is Null 执行结果你会找到一笔资料为 LearnASP, 该笔供货商资料存在, 但基本上已经没有产品是来自这个供货商, 想象一下如果不用 Outer Join 你要怎么以一个 SQL 指令完成同一查询结果! 知道 Outer Join 的好用了吧! 再执行 Select Procts.ProctName From Procts Left Join Suppliers On Procts.SupplierId = Suppliers.SupplierId Where Suppliers.SupplierId is Null 这个查询结果你会发现 Test Proct 这项产品竟然找不到供货商的资料!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有哪些让孩子长高的法宝推荐? 9月末去锦州世博园好么 血府逐瘀片的功效 ...看上一个长款牛仔衬衫,但是我的尺码没有了 请大家帮我配个电脑 。cpu 主板 内存 硬盘 显卡 显示器 电源 机箱 .当... 少儿太空科普知识有哪些? 菲翔Viaggio怠速时发动机嗬哒嗬哒响 菲翔发动机异响? 菲翔Viaggio发动机异响 聚丙烯网状纤维介绍 sql中内联 和外联是什么意思,光看书太死板了, 华为3900一载波支持多少用户 用join in造句,短一点的,要注明意思~谢谢~ 用join in造句,短一点的,要注明意思~ 不要用什么将来,过去时态,只用现在时态 vfp6.0中的join命令怎么使用,最好有实例,谢谢! 关于VF中select left(right) join的准确用法 sql 中join多个表,哪里出错了? js中join和split的用法 什么时候用left join 前前台把一个JOIN样式的字符串存入隐藏域,后台获取后转化为JOIN类型后再取出对应的字段,怎么做? 在内链接的语法格式中,inner join 关键字用于连接两个表 什么关键字用... right join 的正确用法 left join 一对多,左表怎么只取一行? linux中怎么使用join前先sort?命令行怎么写? Linux命令join用了没反应,求解释,具体看图 javascript(js) join函数如何使用方法介绍 jio格式用什么软件可以打开? left join 和 left outer join 有什么区别? 小米平板电池多少mah? 小米平板3和华为M3青春版哪个好 电力载波监控的方案 连接查询多个表怎么写? 电力线载波plc通信模块 哪家好 大家觉得电力线载波用在物联网中有优势吗 电力载波远传式电表是智能插卡的吗 KQ330科强电子电力载波模块,谁有跟51单片机搭配的C语言代码,急求!!!! 苹果5s 和苹果6的像素分别是多少? 手机电话录音怎么查看? 学CNC编程该从哪下手学起? 如何着手学习CNC数控编程?如何入门如何精通? cnc编程自学? 数控车床操作入门是什么? 如何着手学习CNC数控编程?如何入门如何精通 学CNC编程,首先要学习什么?那些编程人员都是操机操出来的吗? 想学CNC编程,需要哪些基础呢? 怎么去做cnc编程入门 我想学习数控编程(CNC),可不知道怎么入手? 如何学好CNC数控编程,如何入门一窍不通,求人带一下。 男孩取名,袁允梵,是何意义? “梵”这个字有什么特殊意义?