亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL表間關(guān)聯(lián)查詢(xún)實(shí)例詳解

 更新時(shí)間:2025年04月16日 11:03:37   作者:實(shí)澤有之,無(wú)澤虛之  
本文主要講解SQL語(yǔ)句中常用的表間關(guān)聯(lián)查詢(xún)方式,包括:左連接(left join)、右連接(right join)、全連接(full join)、內(nèi)連接(inner join)、交叉連接(cross join)、自然連接(natural join),感興趣的朋友一起看看吧

簡(jiǎn)介

本文主要講解SQL語(yǔ)句中常用的表間關(guān)聯(lián)查詢(xún)方式,包括:左連接(left join)、右連接(right join)、全連接(full join)、內(nèi)連接(inner join)、交叉連接(cross join)、自然連接(natural join)。

樣例準(zhǔn)備

以oracle數(shù)據(jù)庫(kù)為例,現(xiàn)在有兩張表TESTTABLEONE(簡(jiǎn)稱(chēng)a表)和TESTTABLETWO(簡(jiǎn)稱(chēng)b表),兩張表分別有id和name兩個(gè)字段,兩張表數(shù)據(jù)如下兩圖所示。

兩張表各有4條數(shù)據(jù),其中,a表和b表都有id01和id02這兩條數(shù)據(jù),a表有id03和id04兩條數(shù)據(jù)但b表沒(méi)有,b表有id05和id06兩條數(shù)據(jù)但a表沒(méi)有。

左外連接

左外連接簡(jiǎn)稱(chēng)左連,語(yǔ)法為left joinleft outer join,左表返回全部數(shù)據(jù),右表返回滿(mǎn)足連接條件的數(shù)據(jù),對(duì)于左表存在而右表不存在的數(shù)據(jù),右表對(duì)應(yīng)的字段返回NULL。

執(zhí)行以下語(yǔ)句:

--left join前面的a表就是左表,left join后面的b表就是右表,on的后面是連接條件,以下連接條件表示按id字段匹配。

select a.*,b.* from TESTTABLEONE a left join TESTTABLETWO b on a.id=b.id;

返回結(jié)果如下圖:

左表(a表)返回全部4條數(shù)據(jù),右表(b表)只返回了id01和id02,對(duì)于左表存在而右表不存在的id03和id04兩條數(shù)據(jù),左表返回全部數(shù)據(jù),而右表則返回NULL。

右外連接

右外連接簡(jiǎn)稱(chēng)右連,語(yǔ)法為right joinright outer join,右表返回全部數(shù)據(jù),左表返回滿(mǎn)足連接條件的數(shù)據(jù),對(duì)于右表存在而左表不存在的數(shù)據(jù),左表對(duì)應(yīng)的字段返回NULL。

執(zhí)行以下語(yǔ)句:

--right join前面的a表就是左表,right join后面的b表就是右表,on的后面是連接條件,以下連接條件表示按id字段匹配。

select a.*,b.* from TESTTABLEONE a right join TESTTABLETWO b on a.id=b.id;

返回結(jié)果如下圖:

右表(b表)返回全部4條數(shù)據(jù),左表(a表)只返回了id01和id02,對(duì)于右表存在而左表不存在的id05和id06兩條數(shù)據(jù),右表返回全部數(shù)據(jù),而左表則返回NULL。

全外連接

全外連接簡(jiǎn)稱(chēng)全連接,語(yǔ)法為full joinfull outer join,返回左表和右表的全部數(shù)據(jù),對(duì)于左表存在而右表不存在的數(shù)據(jù),右表對(duì)應(yīng)的字段返回NULL,對(duì)于右表存在而左表不存在的數(shù)據(jù),左表對(duì)應(yīng)的字段返回NULL。

執(zhí)行以下語(yǔ)句:

--full join連接a表和b表,on的后面是連接條件,以下連接條件表示按id字段匹配。

select a.*,b.* from TESTTABLEONE a full join TESTTABLETWO b on a.id=b.id;

返回結(jié)果如下圖:

左表和右表都返回全部4條數(shù)據(jù),對(duì)于左表存在而右表不存在的id03和id04兩條數(shù)據(jù),右表則返回NULL,對(duì)于右表存在而左表不存在的id05和id06兩條數(shù)據(jù),左表則返回NULL。

內(nèi)連接

內(nèi)連接語(yǔ)法為inner join,只返回左表和右表滿(mǎn)足連接條件的數(shù)據(jù),對(duì)于左表存在而右表不存在的數(shù)據(jù)以及右表存在而左表不存在的數(shù)據(jù),都不返回。

執(zhí)行以下語(yǔ)句:

--inner join連接a表和b表,on的后面是連接條件,以下連接條件表示按id字段匹配。

select a.*,b.* from TESTTABLEONE a inner join TESTTABLETWO b on a.id=b.id;

以下寫(xiě)法的效果也相當(dāng)于內(nèi)連接:

--a表和b表直接用逗號(hào)隔開(kāi),把內(nèi)連接的條件寫(xiě)到where條件里面。

select a.*,b.* from TESTTABLEONE a,TESTTABLETWO b where a.id=b.id;

返回結(jié)果如下圖:

只返回左表和右表都存在的數(shù)據(jù):id01和id02。

交叉連接

交叉連接語(yǔ)法為cross join,不帶連接條件,即沒(méi)有on的部分,返回左表和右表的笛卡爾積,即左表所有數(shù)據(jù)與右表所有數(shù)據(jù)組合。

執(zhí)行以下語(yǔ)句:

--cross join連接a表和b表,不帶連接條件

select a.*,b.* from TESTTABLEONE a cross join TESTTABLETWO b;

返回結(jié)果如下圖:

總共返回16條數(shù)據(jù),即左表4條數(shù)據(jù)乘以右表4條數(shù)據(jù)。

交叉連接可以加where條件,可以起到內(nèi)連接的效果。

執(zhí)行以下語(yǔ)句:

--cross join加上where條件(a.id=b.id),相當(dāng)于inner join。

select a.*,b.* from TESTTABLEONE a cross join TESTTABLETWO b where a.id=b.id;

返回結(jié)果如下圖:

只返回左表和右表都存在的數(shù)據(jù):id01和id02。

自然連接

自然連接語(yǔ)法為natural join,不帶顯示連接條件,會(huì)自動(dòng)對(duì)左表和右表中名稱(chēng)相同的字段進(jìn)行連接,只返回左表和右表都存在的數(shù)據(jù),并且,對(duì)于兩張表中名稱(chēng)相同的連接字段,不會(huì)重復(fù)顯示。

執(zhí)行以下語(yǔ)句:

--natural join不需要帶上顯示的連接條件(即on后面的部分)。

select * from TESTTABLEONE a natural join TESTTABLETWO b;

返回結(jié)果如下圖:

只返回左表和右表都存在的數(shù)據(jù),并且,作為自然連接條件的ID和NAME字段沒(méi)有重復(fù)顯示。

到此這篇關(guān)于SQL表間關(guān)聯(lián)查詢(xún)?cè)斀獾奈恼戮徒榻B到這了,更多相關(guān)SQL關(guān)聯(lián)查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論