數(shù)據(jù)庫左連接、右連接、內(nèi)連接+全連接

聲明:本文參考:數(shù)據(jù)庫左連接、右連接、內(nèi)連接、全連接筆記

1、新建表

  • 表 table_a
-- ----------------------------
-- Table structure for table_a
-- ----------------------------
DROP TABLE IF EXISTS `table_a`;
CREATE TABLE `table_a` (
  `a_pk` int(11) NOT NULL AUTO_INCREMENT,
  `a_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`a_pk`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
image.png
  • 表 table_b
-- ----------------------------
-- Table structure for table_b
-- ----------------------------
DROP TABLE IF EXISTS `table_b`;
CREATE TABLE `table_b` (
  `b_pk` int(11) NOT NULL AUTO_INCREMENT,
  `b_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`b_pk`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
image.png

2、內(nèi)連接

  • 內(nèi)連接是一種一一映射關(guān)系,就是兩張表都有的才能顯示出來

  • 韋恩圖


    內(nèi)連接.png
  • 代碼:

-- 內(nèi)連接
select *
from table_a a,table_b b
where a.a_pk = b.b_pk
  • 查詢結(jié)果:


    image.png

3、左連接

  • 左連接是左邊表的所有數(shù)據(jù)都有顯示出來,右邊的表數(shù)據(jù)只顯示共同有的那部分,沒有對應(yīng)的部分只能補(bǔ)空顯示,所謂的左邊表其實(shí)就是指放在left join的左邊的表

  • 韋恩圖


    image.png
  • 代碼

-- 左連接
select * 
from table_a a
LEFT JOIN table_b b
on a.a_pk = b.b_pk
  • 查詢結(jié)果


    image.png

4、右連接

  • 右連接正好是和左連接相反的,這里的右邊也是相對right join來說的,在這個(gè)右邊的表就是右表
  • 韋恩圖


    右連接.png
-- 右連接
select * 
from table_a a
RIGHT JOIN table_b b
on a.a_pk = b.b_pk
image.png

5、外連接或全連接

  • 查詢出左表和右表所有數(shù)據(jù),但是去除兩表的重復(fù)數(shù)據(jù)

  • 韋恩圖


    image.png
  • 代碼

select * 
from table_a a
FULL  JOIN table_b b
on a.a_pk = b.b_pk
  • 運(yùn)行結(jié)果
    以上代碼運(yùn)行的話,會出現(xiàn)錯誤,這是因?yàn)镸ysql不支持全連接,所以,我們需要換另外一種方式。


    運(yùn)行結(jié)果
  • 代碼
    以下的代碼采用的是 左連接+右連接+去重得到全連接的效果

select * 
from table_a a
LEFT JOIN table_b b
on a.a_pk = b.b_pk
UNION
select * 
from table_a a
RIGHT JOIN table_b b
on a.a_pk = b.b_pk
  • 運(yùn)行結(jié)果


    image.png

SQL 語句執(zhí)行順序

開始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容