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。