2 以MySql爲例。在MySQL數據庫中創建兩張數據表,並分別插入一些數據。 4 腳本以下: 5 drop table table1; 6 CREATE TABLE `andrew`.`table1` 7 ( 8 `name` VARCHAR(32) NOT NULL, 9 `city` VARCHAR(32) NOT NULL 10 ) 11 ENGINE = MyISAM; 12 insert into TABLE1(name, city) values ('Person A', 'BJ'); 13 insert into TABLE1(name, city) values ('Person B', 'BJ'); 14 insert into TABLE1(name, city) values ('Person C', 'SH'); 15 insert into TABLE1(name, city) values ('Person D', 'SZ'); 16 commit; 17 drop table table2; 18 CREATE TABLE `andrew`.`table2` 19 ( 20 `name` VARCHAR(32) NOT NULL, 21 `city` VARCHAR(32) NOT NULL 22 ) 23 ENGINE = MyISAM; 24 insert into TABLE2(name, city) values ('Person W', 'BJ'); 25 insert into TABLE2(name, city) values ('Person X', 'SH'); 26 insert into TABLE2(name, city) values ('Person Y', 'SH'); 27 insert into TABLE2(name, city) values ('Person Z', 'NJ'); 28 commit; 29 1. 外鏈接 – 左鏈接結果 30 table1居左,故謂之左鏈接。這種狀況下,以table1爲主,即table1中的全部記錄均會被列出。有一下三種狀況: 31 a. 對於table1中的每一條記錄對應的城市若是在table2中也剛好存在並且恰好只有一條,那麼就會在 32 返回的結果中造成一條新的記錄。如上面Person A和Person B對應的狀況。 33 b. 對於table1中的每一條記錄對應的城市若是在table2中也剛好存在並且有N條,那麼就會在返回的結果中造成N條新的記錄。如上面的Person C對應的狀況。 34 c. 對於table1中的每一條記錄對應的城市若是在table2中不存在,那麼就會在返回的結果中造成一條 35 條新的記錄,且該記錄的右邊所有NULL。如上面的Person D對應的狀況。 36 不符合上面三條規則的記錄不會被列出。 37 2. 外鏈接 – 右鏈接結果 38 table2居右,故謂之右鏈接。這種狀況下,以table2爲主,即table2中的全部記錄均會被列出。有一下三種狀況: 39 a. 對於table2中的每一條記錄對應的城市若是在table1中也剛好存在並且恰好只有一條,那麼就會在 40 返回的結果中造成一條新的記錄。如上面Person X和Person Y對應的狀況。 41 b. 對於table2中的每一條記錄對應的城市若是在table1中也剛好存在並且有N條,那麼就會在返回的結果中造成N條新的記錄。如上面的Person W對應的狀況。 42 c. 對於table2中的每一條記錄對應的城市若是在table1中不存在,那麼就會在返回的結果中造成一條 43 條新的記錄,且該記錄的左邊所有NULL。如上面的Person Z對應的狀況。 44 不符合上面三條規則的記錄不會被列出。 45 3. 內鏈接 46 內鏈接的數據記錄中,不會存在字段爲NULL的狀況。能夠簡單地認爲,內連接的結果就是在左鏈接或者右鏈接的結果中剔除存在字段爲NULL的記錄後所獲得的結果。 甚至能夠認爲,若是兩個表中僅分別剩下內鏈接運算後所得的數據記錄,如table1中只有Person A、Person B和Person C,table2中只有Person W、Person X和Person Y, 那麼這兩個表的之間的左鏈接和右鏈接的返回的結果是同樣的。 47 注意:select * from table1 a inner join table2 b on a.city = b.city 和select * from table1 a join table2 b on a.city = b.city 的效果是同樣的, 即若是join的左邊沒有諸如left、right或者inner這樣的關鍵字時,缺省的是內鏈接。另,MySQL不支持full join。