1.內連線:利用內連線可獲取兩表的公共部分的記錄,即圖3的記錄集c 語句如下:select * from a join b on a.aid=b.bnameid 執行結果如下圖4所示:其實select * from a,b where a.aid=b.bnameid與select * from a join b on a.aid=b.bnameid的執行結果是一樣的。
圖4:內連線資料
2.外連線:外連線分為兩種,一種是左連線(left join)和右連線(right join)
(1)左連線(left join):即圖3公共部分記錄集c+表a記錄集a1。
語句如下:select * from a left join b on a.aid=b.bnameid
執行結果如下圖5所示:
圖5:左連線資料
說明:在語句中,a在b的左邊,並且是left join,所以其運算方式為:a左連線b的記錄=圖3公共部分記錄集c+表a記錄集a1
在圖3中即記錄集c中的存在的aid為:2 3 6 7 8
圖1中即表a所有記錄集a中存在的aid為:1 2 3 4 5 6 7 8 9
表a記錄集a1中存在的aid=(圖1中即a表中所有aid)-(圖3中即記錄集c中存在的aid),最終得出為:1 4 5 9
由此得出圖5中a左連線b的記錄=圖3公共部分記錄集c+表a記錄集a1, 最終得出的結果圖5中可以看出bnameid及bid非null的記錄都為圖3公共部分記錄集c中的記錄;bnameid及bid為null的aid為1 4 5 9的四筆記錄就是表a記錄集a1中存在的aid。
(2)右連線(right join):即圖3公共部分記錄集c+表b記錄集b1。
語句如下:select * from a right join b on a.aid=b.bnameid 執行結果如下圖6所示:
圖6:右連線資料
說明: 在語句中,a在b的左邊,並且是right join,所以其運算方式為:a右連線b的記錄=圖3公共部分記錄集c+表b記錄集b1
在圖3中即記錄集c中的存在的aid為:2 3 6 7 8
圖2中即表b所有記錄集b中存在的bnameid為:2 3 6 7 8 11
表b記錄集b1中存在的bnameid=(圖2中即b表中所有bnameid)-(圖3中即記錄集c中存在的aid),最終得出為:11
由此得出圖6中a右連線b的記錄=圖3公共部分記錄集c+表b記錄集b1, 最終得出的結果圖6中可以看出aid及aname非null的記錄都為圖3公共部分記錄集c中的記錄;aid及aname為null的aid為11的記錄就是表b記錄集b1中存在的bnameid。
交叉連線:兩張表聯合沒有條件情況下,條數 = 圖1 * 圖2
內連線 左連線 右連線
弄個例題,直觀一點。兩個表 表stu id name 1,jack 2,tom 3,kity 4,nono 表exam id grade 1,56 2,76 11,89 內連線 顯示兩表id匹配的 select stu.id,exam.id,stu.name,exam.grade from stu ...
左連線 右連線 內連線
左連線又稱左外連線,它的主要意思就是說對於兩個表r和s,關於某一屬性將兩個表進行連線,方便展示。關聯的約束就是在on後面,例如下面的例子就是r b s b 示例 r表如下 s表如下 關於示例中的的r和s我們可以針對屬性b s b r b 做乙個連線,而左連線的話就是說即使另乙個表中沒有與之相對應的b...
mysql 內連線 左連線 右連線
記錄備忘下,初始資料如下 drop table ifexists t demo product create table ifnot exists t demo product proid int 20 proname varchar 20 price int 10 primary key proi...