数据库的平常的各样连接解释
<div style="color: black; text-align: left; margin-bottom: 10px;">
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/15384112181100e6fba33e4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1723346632&x-signature=GnUbLcBXd1PjzNbnmJ2h4RGQedg%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在<span style="color: black;">运用</span>关系数据库时,<span style="color: black;">咱们</span>经常会用到连接多张表来获取记录。<span style="color: black;">针对</span>左连接,右连接,内连接等<span style="color: black;">各样</span>连接,新手<span style="color: black;">常常</span>容易理不清,<span style="color: black;">因此呢</span>作如下记录,以下以oracle为例:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">1、内联接</strong>(典型的联接运算,<span style="color: black;">运用</span>像 = 或 <> 之类的比较运算符)。<span style="color: black;">包含</span>相等联接和自然联接。 </p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">内联接<span style="color: black;">运用</span>比较运算符<span style="color: black;">按照</span><span style="color: black;">每一个</span>表共有的列的值匹配两个表中的行。例如,检索 a和b表中a的id号和b的parent_id号相同的所有行:select a.*,b.* from a inner join b on a.id=b.parent_id 。</p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/1538411218344d8695f5099~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1723346632&x-signature=YAhWcMqlD%2FcxkvYqEDvMkCepEs0%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">2、外联接。</strong>外联接<span style="color: black;">能够</span>是左向外联接、右向外联接或完整<span style="color: black;">外边</span>联接。 </p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在 FROM子句中指定外联接时,<span style="color: black;">能够</span>由下列几组关键字中的一组指定:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1)LEFT JOIN或LEFT OUTER JOIN </p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">左向外联接的结果集<span style="color: black;">包含</span> LEFT OUTER子句中指定的左表的所有行,而<span style="color: black;">不仅</span>是联接列所匹配的行。<span style="color: black;">倘若</span>左表的某行在右表中<span style="color: black;">无</span>匹配行,则在<span style="color: black;">关联</span>联的结果集行中右表的所有<span style="color: black;">选取</span>列表列均为空值。例如: select a.*,b.* from a left join b on a.id=b.parent_id 。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2)RIGHT JOIN 或 RIGHT OUTER JOIN </p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">右向外联接是左向外联接的反向联接。将返回右表的所有行。<span style="color: black;">倘若</span>右表的某行在左表中<span style="color: black;">无</span>匹配行,则将为左表返回空值。例如: select a.*,b.* from a right join b on a.id=b.parent_id 。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3)FULL JOIN 或 FULL OUTER JOIN</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">完整<span style="color: black;">外边</span>联接返回左表和右表中的所有行。当某行在另一个表中<span style="color: black;">无</span>匹配行时,则另一个表的<span style="color: black;">选取</span>列表列<span style="color: black;">包括</span>空值。<span style="color: black;">倘若</span>表之间有匹配行,则<span style="color: black;">全部</span>结果集行<span style="color: black;">包括</span>基表的数据值。例如:select a.*,b.* from a full join b on a.id=b.parent_id 。</p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/1538411218424c779e5c71f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1723346632&x-signature=m3KW9eM4x4JKpRsW%2Bv23zzvBQ64%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">3、交叉联接 </strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">交叉联接有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,<span style="color: black;">亦</span>叫笛卡尔积。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">语句1:隐式的交叉连接,<span style="color: black;">无</span>CROSS JOIN。例如:</strong>select o.id, o.order_number, c.id, c.name from orders o , customers c where o.id=1;;</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">语句2:显式的交叉连接,<span style="color: black;">运用</span>CROSS JOIN。例如:</strong>select o.id,o.order_number,c.id, c.name from orders o cross join customers c where o.id=1;</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">语句1和语句2的结果是相同的。</p>
</div>
感谢你的精彩评论,带给我新的思考角度。 哈哈、笑死我了、太搞笑了吧等。 你的见解真是独到,让我受益良多。 外链发布论坛学习网络优化SEO。 你的言辞如同繁星闪烁,点亮了我心中的夜空。 我完全同意你的观点,说得太对了。
页:
[1]