表一:班级表,3条记录。
表二:学生表,3条记录,其中一条classid与班级表id对应。classid作为外键关联班级表id
实验如下:
1.left join(左联接)
SELECT * FROM class t1 LEFT JOIN student t2 on t1.id=t2.classid ;
结果说明:
班级表三条记录全部展示。left join是以t1表(班级表)的记录为基础的,t1可以看成左表,t2可以看成右表,left join是以左表为准的.
换句话说,左表(班级表)的记录将会全部表示出来,而右表(学生表)只会显示符合搜索条件的记录(例子中为: t1.id=t2.classid).
t2表记录不足的地方均为NULL.
2.right join(右联接)
SELECT * FROM class t1 RIGHT JOIN student t2 on t1.id=t2.classid ;
结果说明:
学生表三条记录全部展示。仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(t2)为基础的,t1表不足的地方用NULL填充.
3.inner join(相等联接或内联接)
SELECT * FROM class t1 INNER JOIN student t2 on t1.id=t2.classid ;
等同于以下SQL句:
SELECT * FROM class t1,student t2 WHERE t1.id=t2.classid
结果说明:
只展示符合条件的一条记录。很明显,这里只显示出了 t1.id=t2.classid的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.