左连接、右连接与内连接的区别
左连接、右连接与内连接的区别:
---------创建两张表-------------男生表和女生表,各两个字段,姓名和配偶的编号--------
mysql> create table boy(
-> bname varchar(10) not null default '',
-> spouse char(1) not null default ''
-> )engine myisam charset utf8;
Query OK, 0 rows affected (0.10 sec)
mysql> create table girl(
-> gname varchar(10) not null default '',
-> spouse char(1) not null default ''
-> )engine myisam charset utf8;
Query OK, 0 rows affected (0.09 sec)
----------给两张表添加数据------------------------------------------
mysql> select * from boy;
+--------+--------+
| bname | spouse |
+--------+--------+
| 张三 | A |
| 李四 | B |
| 王五 | C |
| 屌丝 | D |
| 高富帅 | E |
+--------+--------+
5 rows in set (0.00 sec)
mysql> select * from girl;
+--------+--------+
| gname | spouse |
+--------+--------+
| 小倩 | A |
| 大乔 | C |
| 虞美人 | B |
| 张柏芝 | E |
| 阿娇 | E |
| 剩女 | F |
+--------+--------+
5 rows in set (0.00 sec)
观察:
boy表中,屌丝没有配偶,而高富帅有两个配偶,其它人一个一个配偶
girl表中,剩女没有配偶
----------------------使用左连接查询,条件为配偶的编号相等-----------------------------------
mysql> select bname,boy.spouse,gname,girl.spouse from boy left join girl on boy.spouse=girl.spouse;
+--------+--------+--------+--------+
| bname | spouse | gname | spouse |
+--------+--------+--------+--------+
| 张三 | A | 小倩 | A |
| 李四 | B | 虞美人 | B |
| 王五 | C | 大乔 | C |
| 屌丝 | D | NULL | NULL |
| 高富帅 | E | 张柏芝 | E |
| 高富帅 | E | 阿娇 | E |
+--------+--------+--------+--------+
6 rows in set (0.01 sec)
---------------使用右连接查询,条件为配偶的编号相等---------------------------------------
mysql> select bname,boy.spouse,gname,girl.spouse from boy right join girl on boy.spouse=girl.spouse;
+--------+--------+--------+--------+
| bname | spouse | gname | spouse |
+--------+--------+--------+--------+
| 张三 | A | 小倩 | A |
| 王五 | C | 大乔 | C |
| 李四 | B | 虞美人 | B |
| 高富帅 | E | 张柏芝 | E |
| 高富帅 | E | 阿娇 | E |
| NULL | NULL | 剩女 | F |
+--------+--------+--------+--------+
6 rows in set (0.00 sec)
-----------------------使用内连接查询,条件为配偶的编号相等---------------------------
mysql> select bname,boy.spouse,gname,girl.spouse from boy inner join girl on boy.spouse=girl.spouse;
+--------+--------+--------+--------+
| bname | spouse | gname | spouse |
+--------+--------+--------+--------+
| 张三 | A | 小倩 | A |
| 王五 | C | 大乔 | C |
| 李四 | B | 虞美人 | B |
| 高富帅 | E | 张柏芝 | E |
| 高富帅 | E | 阿娇 | E |
+--------+--------+--------+--------+
5 rows in set (0.00 sec)
=====结论======
(1)左连接 boy left join girl on boy.spouse=girl.spouse:以boy表(男生表)为准,相当于主持人喊一声——所有的男生把牵着自己配偶的手,到舞台上来;有几个配偶都一起牵手上来;没有配偶的男生,拿着写着null的牌子,也一起上来。
(2)右连接与左连接正好相反
(3)内连接,相当于没有配偶的,就不要上来了。
浙公网安备 33010602011771号