011_多表查询
1. 查詢(xún)user表的數(shù)據(jù)
2. 查詢(xún)orders表的數(shù)據(jù)
3. 連接的使用
3.1. 之前, 我們已經(jīng)學(xué)會(huì)了如何在一張表中讀取數(shù)據(jù), 這是相對(duì)簡(jiǎn)單的, 但是在真正的應(yīng)用中經(jīng)常需要從多個(gè)數(shù)據(jù)表中讀取數(shù)據(jù)。
3.2. 笛卡爾積, 查詢(xún)出兩張表的乘積, 查出來(lái)的結(jié)果沒(méi)有什么實(shí)際意義
3.3. SQL join子句用于把來(lái)自?xún)蓚€(gè)或多個(gè)表的行結(jié)合起來(lái), 基于這些表之間的共同字段。
3.4. JOIN按照功能大致分為如下三類(lèi)
3.4.1. inner join(內(nèi)連接,或等值連接): 獲取兩個(gè)表中字段匹配關(guān)系的記錄。
3.4.2. left join(左連接): 獲取左表所有記錄, 即使右表沒(méi)有對(duì)應(yīng)匹配的記錄。
3.4.3. right join(右連接)與left join相反, 用于獲取右表所有記錄, 即使左表沒(méi)有對(duì)應(yīng)匹配的記錄。
4. 內(nèi)連接
4.1. inner join關(guān)鍵字在表中存在至少一個(gè)匹配時(shí)返回行。
4.2. inner join顯示內(nèi)連接, 查詢(xún)用戶(hù)表和訂單表中用戶(hù)id相等的數(shù)據(jù)。
4.3. inner join與join是相同的。
4.4. 隱式內(nèi)連接, 添加where條件, 和inner join顯示內(nèi)連接是等價(jià)的。
4.5. 隱式內(nèi)連接和顯示內(nèi)連接的區(qū)別
4.5.1. 隱式內(nèi)連接: where條件是在臨時(shí)表生成好后, 再對(duì)臨時(shí)表進(jìn)行過(guò)濾的條件。
4.5.2. 顯示內(nèi)連接: on條件是在生成臨時(shí)表時(shí)使用的條件, 帶著條件去查詢(xún)結(jié)果, 執(zhí)行效率高。
5. 左連接
5.1. left join關(guān)鍵字從左表(table1)返回所有的行, 即使右表(table2)中沒(méi)有匹配。如果右表中沒(méi)有匹配, 則結(jié)果為null。
5.2. left join查詢(xún)用戶(hù)表的所有數(shù)據(jù)。
5.3. 在某些數(shù)據(jù)庫(kù)中l(wèi)eft join稱(chēng)為left outer join。
5.4. 左連接添加where子句, 查詢(xún)左表獨(dú)有數(shù)據(jù)。
5.5. 查詢(xún)用戶(hù)表獨(dú)有的數(shù)據(jù)。
6. 右連接
6.1. right join關(guān)鍵字從右表(table2)返回所有的行, 即使左表(table1)中沒(méi)有匹配。如果左表中沒(méi)有匹配, 則結(jié)果為null。
6.2. right join查詢(xún)訂單表的所有數(shù)據(jù)。
6.3. 在某些數(shù)據(jù)庫(kù)中, right join稱(chēng)為right outer join。
6.4. 右連接添加where子句, 查詢(xún)右表獨(dú)有數(shù)據(jù)。
6.5. 查詢(xún)訂單表獨(dú)有的數(shù)據(jù)。
7. 左、內(nèi)、右連接返回?cái)?shù)據(jù)
7.1. inner join: 如果表中有至少一個(gè)匹配, 則返回行。
7.2. left join: 即使右表中沒(méi)有匹配, 也從左表返回所有的行。
7.3. right join: 即使左表中沒(méi)有匹配, 也從右表返回所有的行。
7.4. 左、內(nèi)、右連接圖解
7.5. 連接的五種用法
總結(jié)
- 上一篇: 010_多表的表关系
- 下一篇: 024_JDK的equals方法