首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简单数据库操作5—左联接,右联接,全联接有什么区别呢?

昨天我将表与表的联接给大家开了一个头,今天深度了解一下除了基本的JOIN (inner join)以外的另外三种形式。

这3种形式分别为:

1. LEFT JOIN

2. RIGHT JOIN

3. FULL JOIN

我先把原始表展示出来:

表一:Persons

表二:Orders

A. 左联接

“表一”为左;“表二”为右。

左链接的意思为:表一的所有记录都要进行匹配,若匹配不上也列出来。

语句格式:

SELECTcolumn_name(s)

FROMtable_name1

LEFT JOINtable_name2

ONtable_name1. column_name = table_name2.column_name

[标注:FROM 后面跟着的表名为“左”]

实例说明:

列出表一中所有人的订单号,若没有订单号显示空值。

实现语句:

SELECTPersons.LastName, Persons.FirstName, Orders. OrderNo

FROMPersons

LEFT JOINOrders

ONPersons.Id_p = Orders.Id_P

可以发现,Bush George是没有对应订单号的,但是由于是左联接,表一的所有记录都要进行显示,故终止结果显示如下:

B. 右联接

右联接的意思与左联接逻辑是一样的,就是表二的所有记录都要进行匹配,若没有匹配记录也要罗列出来

语句格式:

SELECTcolumn_name(s)

FROMtable_name1

RIGHT JOINtable_name2

ONtable_name1.column_name = table_name2. column_name

实例说明:

将所有订单号列出,并找到这些订单号所对应的购买人

实现语句:

SELECTPersons.LastName, Persons.FirstName, Orders.OrderNo

FROMPersons

RIGHT JOINOrders

ONPersons. Id_P = Orders. Id_P

可以发现,34764这个订单号是没有对应购买人的,但是语句执行了右联接,即使没有找到匹配的结果,也要将该条记录显示出来的。

执行结果如下:

C. 全联接

有了左右联接的理解,全联接就更容易些,就是两个表全部做匹配,左表有匹配不上的列出来,右表有匹配不上的也列出来。检验的标准为,结果集的行数是两个表的交集。

语句格式:

SELECTcolumn_name(s)

FROMtable_name1

FULL JOINtable_name2

ONtable_name1. column_name = table_name2.column_name

实例说明:

列出数据库中所有购买者及订单号明细。(含异常订单)

实现语句:

SELECTPersons. LastName, Persons.FirstName, Orders. OrderNo

FROMPersons

FULL JOINOrders

ONPersons.Id_P=Orders.Id_P

执行结果如下:

今天的分享就这些吧,如果你有不明白的地方希望和我沟通欢迎留言、评论。我上学时数据库的成绩还是不错的,所以目前为止我还没有遇到难题。c u nextime.

嘚瑟10秒钟,白白。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180828G0B98D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券