溫故而知新。
多表查詢(內連線、外連線和交叉連線)
1)左外連:
sql:select * from table1left jointable2ontable1.條件列名=table2.條件列名
*注:table1表資訊全部顯示,符合條件的 table2 都會與 table1 對齊,不符合條件的 table2 不會顯示,沒有資料的用null自動填充。
2)右外連:
sql:select * from table1right jointable2ontable1.條件列名=table2.條件列名
注:與左外連基本相同,對齊的表為 table2。
3)完全外部連線:
sql:select * from table1full jointable2ontable1.條件列名=table2.條件列名
*注:根據限制條件,顯示出所有符合條件的列,當某乙個表中沒有匹配的行時,則另乙個表的列包含空值,如果有,就顯示出所有資訊。
4)內連線:
sql:select * from table1jointable2ontable1.條件列名=table2.條件列名
<=> select t1.* ,t2.* from table1 t1,table2 t2 where t1.條件列名=t2.條件列名
<=> select * from table1cross jointable2wheretable1.條件列名=table2.條件列名( cross join 後面不能夠用 on , 只能用 where )
5)交叉連線(完全)
sql:select * from table1cross jointable2;
<=> select * from table1,table2;
注:笛卡爾積。。。。。明白就好。。。。。
*6)join 與 outer join
join:
保留所有符合 on 條件的行,查詢結果行數量不會大於被 join 的表;
outer join:
保留 join 的結果,並根據 left、right 和 full 保留其中乙個表內的不符合 on 條件的結果航,這種結果行僅有乙個表內的結果,另一半用 null 填充。
注:6)是借鑑的別人的回答,但是不是特別的明朗,在自己測試的時候確實沒看出太大差別(emp 與 dept),給自己挖個坑,回頭再填上;
*注:其實連線語句,個人認為就是看需求,然後在進行對應的操作,操作兩遍之後比較容易理解,但是感覺用好比較難,如果碰到比較複雜的例子可能就有些難以處理。先總結一些簡單的,有難的例子在攻破。左右外連才是最常用的吧,然後內連感覺也差不蠻多。還是要碰到問題才能更深入的理解,先寫下吧。
注釋:*為不確定自我見解,有錯誤請毫不留情直接指出。
sql學習筆記4 多表查詢
將兩張表jion成乙個表進行查詢 如果,兩個表的列明相同,可以用using select e.fname,e.lname,d.name from employee e inner join department d using dept id ansi標準的優點是 連線條件和過濾條件被分隔到兩個字句...
sql多表查詢學習
我們先建立乙個表 emp 15行 如果想查詢所有資料,很簡單 select from emp 這樣就能查詢到emp的所有資料 在了解多表查詢之前 我們應該先複習一下數學中笛卡爾積的概念 比如乙個集合有 1,2,3 三個元素 另乙個集合有 4,5,6 三個元素 他們的笛卡爾積 其實有3 3 9種情況 ...
SQL 多表查詢
不同的 sql join inner join 內連線 如果表中至少有乙個匹配,也從左表返回所有的行 left join 左連線 即使右表中沒有匹配,也從右表返回所有的行 right join 右連線 即使左表中沒有匹配,也從右表返回所有的行 full join 全連線 只有其中乙個表中存在匹配也從...