概述
连表是SQL常用的操作,但是连表不一样,得到的结果也不一样(在数据量大的时候尤为明显)
Where连接
select * from cc,cp where cc.id = cp.COUNTRY_ID
where连接,主要是直接将两张表的数据,组合成一张临时表,然后通过where来筛选条件。条件为假的,就全部过滤掉。
Left Join
select * from cc
LEFT JOIN
cp
on
cc.id = cp.COUNTRY_ID
左连接,是以左表为基准,不管条件怎么样,都会返回左表当中记录的数据。
Right Join
select * from cc
RIGHT JOIN
cp
on
cc.id = cp.COUNTRY_ID
右连接,是以右表为基准,不管条件怎么样,都会返回右表当中记录的数据。
Inner Join
select * from cc
INNER JOIN
cp
on
cc.id = cp.COUNTRY_ID
内连接,则是与where连接比较相似,是将on中的条件放到where上,只返回满足条件的。
总结
1.一般来说,都使用的是左连接,或者右连接,因为where是用来写条件的,一般不会这样写;再者where会把所有表中的数据都查询出来,再过滤,在性能问题上左连接和右连接,都要更优。
2.连接的时候,要注意是以左表为基准还是以右表为基准,那么就看连接的主键是谁就以那个表为基准,因为这样才能返回正常多数量的数据,否则会过滤掉部分含主键的数据