數(shù)據(jù)庫七種連接方式總結(jié)

一芥驳、join圖

image.png

二柿冲、sql語句準(zhǔn)備

CREATE TABLE `t_dept` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`deptName` VARCHAR(30) DEFAULT NULL,
`address` VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `t_emp` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
`age` INT(3) DEFAULT NULL,
`deptId` INT(11) DEFAULT NULL,
empno int not null,
PRIMARY KEY (`id`),
KEY `idx_dept_id` (`deptId`)
#CONSTRAINT `fk_dept_id` FOREIGN KEY (`deptId`) REFERENCES `t_dept` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

# 數(shù)據(jù)
INSERT INTO t_dept(deptName,address) VALUES('華山','華山');
INSERT INTO t_dept(deptName,address) VALUES('丐幫','洛陽');
INSERT INTO t_dept(deptName,address) VALUES('峨眉','峨眉山');
INSERT INTO t_dept(deptName,address) VALUES('武當(dāng)','武當(dāng)山');
INSERT INTO t_dept(deptName,address) VALUES('明教','光明頂');
INSERT INTO t_dept(deptName,address) VALUES('少林','少林寺');

INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('風(fēng)清揚(yáng)',90,1,100001);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('岳不群',50,1,100002);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('令狐沖',24,1,100003);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('洪七公',70,2,100004);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('喬峰',35,2,100005);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('滅絕師太',70,3,100006);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('周芷若',20,3,100007);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('張三豐',100,4,100008);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('張無忌',25,5,100009);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('韋小寶',18,null,100010);

部門表數(shù)據(jù)

部門表

員工表數(shù)據(jù)
員工表

三、七種連接方式詳解

1兆旬、內(nèi)連接 inner join

內(nèi)連接inner join表示A表和B表的共有部分?jǐn)?shù)據(jù)假抄。


內(nèi)連接 inner join
select * from t_emp e INNER JOIN t_dept d on e.deptId = d.id;
inner join

2、左連接 left join

左連接 left join 表示A表和B表的公共部分,再加上A表的獨(dú)有部分慨亲。


左連接 left join
select * from t_emp e left JOIN t_dept d on e.deptId = d.id;
left join

3婚瓜、右連接 right join

右連接right join 表示A表和B表公共部分,在加上B表的獨(dú)有部分刑棵。


右連接right join
select * from t_emp e right JOIN t_dept d on e.deptId = d.id;
right join

4巴刻、A表獨(dú)有

查找A表獨(dú)有部分,則需查找A表和B表的共有部分并加上A表的獨(dú)有部分蛉签,在將A表和B表的共有部分剔除即可(也就是挑選B的主鍵為空的數(shù)據(jù))胡陪。


A表獨(dú)有
select * from t_emp e left JOIN t_dept d on e.deptId = d.id where d.id is null;
A表獨(dú)有部分

5、B表獨(dú)有

查找B表獨(dú)有部分碍舍,則需查找A表和B表的共有部分并加上B表的獨(dú)有部分柠座,在將A表和B表的共有部分剔除即可(也就是挑選A的主鍵為空的數(shù)據(jù))。


B表獨(dú)有
select * from t_emp e right JOIN t_dept d on e.deptId = d.id where e.deptId is null;
B表獨(dú)有

6片橡、全連接full outer join

全連接則表示將A表和B表的公共部分及A表妈经、B表的獨(dú)有部分,所有數(shù)據(jù)都查詢出來


全連接full outer join

指導(dǎo)圖的全連接 full outer join 在mysql 語法報錯捧书!但是可以通過union關(guān)鍵字進(jìn)行查詢吹泡。
UNION會把 重復(fù)的行去掉,返回的行都是唯一的经瓷。如果想保留重復(fù)行爆哑,可以使用 UNION ALL 關(guān)鍵字。
UNION其實(shí)就是將A表和B表的共有部分及A表的獨(dú)有部分(即左連接left join)加上A舆吮、B表共有部分及B表的獨(dú)有部分(即右連接right join)合并起來揭朝,并進(jìn)行去重即可。

select * from t_emp e left join t_dept d on e.deptId = d.id
union
select * from t_emp e right join t_dept d on e.deptId = d.id;
全連接full outer join

7色冀、A表獨(dú)有和B表獨(dú)有

查詢A表獨(dú)有部分并加上B表獨(dú)有部分


A表獨(dú)有和B表獨(dú)有

實(shí)際就是查詢A表的獨(dú)有部分和B表的獨(dú)有部分潭袱,使用UNION進(jìn)行連接即可。

select * from t_emp e left join t_dept d on e.deptId = d.id where d.id is null
union
select * from t_emp e right join t_dept d on e.deptId = d.id where e.deptId is null;
A表獨(dú)有和B表獨(dú)有
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呐伞,一起剝皮案震驚了整個濱河市敌卓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伶氢,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘪吏,死亡現(xiàn)場離奇詭異癣防,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掌眠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蕾盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蓝丙,你說我怎么就攤上這事级遭⊥希” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵挫鸽,是天一觀的道長说敏。 經(jīng)常有香客問我,道長丢郊,這世上最難降的妖魔是什么盔沫? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮枫匾,結(jié)果婚禮上架诞,老公的妹妹穿的比我還像新娘。我一直安慰自己干茉,他們只是感情好谴忧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著角虫,像睡著了一般沾谓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上上遥,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天搏屑,我揣著相機(jī)與錄音,去河邊找鬼粉楚。 笑死辣恋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的模软。 我是一名探鬼主播伟骨,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼燃异!你這毒婦竟也來了携狭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤回俐,失蹤者是張志新(化名)和其女友劉穎逛腿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仅颇,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡单默,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忘瓦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搁廓。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出境蜕,到底是詐尸還是另有隱情蝙场,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布粱年,位于F島的核電站售滤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逼泣。R本人自食惡果不足惜趴泌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拉庶。 院中可真熱鬧嗜憔,春花似錦、人聲如沸氏仗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皆尔。三九已至呐舔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慷蠕,已是汗流浹背珊拼。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留流炕,地道東北人澎现。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像每辟,于是被迫代替她去往敵國和親剑辫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容