1、等值連接是最常見的一種連接查詢,通常是在主外鍵關(guān)聯(lián)關(guān)系的表間建立,并將連接條件設(shè)定為有關(guān)系的列,使用“=”連接相關(guān)的表。
南安網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),南安網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為南安1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的南安做網(wǎng)站的公司定做!
2、非等值連接是指在多個表中使用非等號連接,查詢在多個表中有非等值關(guān)聯(lián)關(guān)系的數(shù)據(jù),非等值連接操作符包括、=、、=、以及BETWEEN...AND、LIKE、IN等。
3、自連接是一種比較特殊的連接查詢,數(shù)據(jù)來源是一個表。
4、左外連接是內(nèi)連接的一種擴展,不止會返回滿足連接條件的記錄,還會返回那些不滿足連接條件的操作符左邊表的其他記錄。
5、右外連接和左外連接相似,右外連接不止會返回滿足連接條件的記錄,還會返回那些不滿足連接條件的操作符右邊表的其他記錄。
SELECT
FROM A LEFT JOIN B ON A.列=B.列
LEFT JOIN C ON B.列=C.列
oracle連接分為:
左外連接:左表不加限制,保留左表的數(shù)據(jù),匹配右表,右表沒有匹配到的行中的列顯示為null。
右外連接:右表不加限制,保留右表的數(shù)據(jù)。匹配左表,左表沒有匹配到的行中列顯示為null。
完全外連接:左右表都不加限制。即右外連接的結(jié)果為:左右表匹配的數(shù)據(jù)+左表沒有匹配到的數(shù)據(jù)+右表沒有匹配到的數(shù)據(jù)。
left/right/full outer join ...on
left/right/full join ...on
(+)號的作用:+號可以理解為補充的意思,加在那個表的列上就代表這個表的列為補充。加在右表的列上代表右表為補充,為左連接。加在左表的列上代表左表為補充,為右連接。注意:完全外連接中不能使用+號。
查看插入的數(shù)據(jù):
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
執(zhí)行結(jié)果
Oracle中,兩個表通過多個關(guān)連條件外連接的時候,如果多個條件中有沒有寫(+)的條件,則連接會自動變成內(nèi)連接,而不再是外連接。這種情況應(yīng)該是屬于寫SQL的失誤。遇到這種情況的時候一定要注意。
WITH TELLER_ACCOUNT_MAIN AS(SELECT 1 teller_by,to_date('2018-05-01 13:23:55','yyyy-mm-dd hh24:mi:ss')update_time,500 total_mount FROM dual
UNION ALL SELECT 1 teller_by,to_date('2018-05-02 16:20:10','yyyy-mm-dd hh24:mi:ss'),777 total_mount FROM dual
)
,SYS_USER AS (SELECT 1 teller_by,'張三'NAME FROM dual
UNION ALL SELECT 2 teller_by,'李四'NAME FROM dual
)
--上面是虛擬的數(shù)據(jù) ,因為我沒有你的表
SELECT A.*,nvl(B.total_mount,0)total_mount FROM SYS_USER A LEFT JOIN (SELECT t.*
,row_number() OVER (PARTITION BY teller_by ORDER BY update_time DESC)rn
FROM TELLER_ACCOUNT_MAIN t)B ON A.teller_by=B.teller_by AND B.rn=1;
select e.empno, e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno;
在之前所使用的查詢操作之中,都是從一張表之中查詢出所需要的內(nèi)容,那么如果現(xiàn)在一個查詢語句需要顯示多張表的數(shù)據(jù),則就必須應(yīng)用到多表查詢的操作,而多表查詢的語法如下:
SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名] ,…] FROM 表名稱 [別名], [表名稱 [別名] ,…] [WHERE 條件(S)] [ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]]。
擴展資料:
Oracle 常用的關(guān)聯(lián)查詢:
Oracle外連接:
(1)左外連接 (左邊的表不加限制)。
(2)右外連接(右邊的表不加限制)。
(3)全外連接(左右兩表都不加限制)。
outer join則會返回每個滿足第一個(頂端)輸入與第二個(底端)輸入的聯(lián)接的行。它還返回任何在第二個輸入中沒有匹配行的第一個輸入中的行。
外連接分為三種: 左外連接,右外連接,全外連接。 對應(yīng)SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我們省略outer 這個關(guān)鍵字。 寫成:LEFT/RIGHT/FULL JOIN。
在左外連接和右外連接時都會以一張表為基表,該表的內(nèi)容會全部顯示,然后加上兩張表匹配的內(nèi)容。 如果基表的數(shù)據(jù)在另一張表沒有記錄。 那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(NULL)。