场景:现在有用户表t_user 在这里我们称之位a表-跟图书表t_book我们称作b表
(1)内链接 JOIN 根据ON的检验关系把a,b表的有关联的数据全部展示出来
SELECT * FROM t_user a JOIN t_book b ON a.bookId = b.bookId ORDER BY a.bookId;
从上面我们可以知道只要a.bookId=b.bookId就会被全部差出来,效果相当于a,b表的笛卡儿积中选择 a.bookId=b.bookId一样,但是相对来说推荐用笛卡儿积,查询效率更高点
SELECT * FROM t_user a,t_book b WHERE a.bookId = b.bookId;
(2)左连接
SELECT * FROM t_user a LEFT JOIN t_book b ON a.bookId = b.bookId ORDER BY a.bookId;
左连接会把左表的数据全部展示出来,然后通过条件校验右表筛选出右边对应的数据
(3)右连接
右连接在实际开发中用得比较少,原理其实是跟左连接一样,右连接会把右表的数据全部展示出来,通过校验条件筛选出左表相关联的数据
SELECT * FROM t_user a RIGHT JOIN t_book b ON a.bookId = b.bookId ORDER BY a.bookId;
(4)笛卡儿积
笛卡儿积就查询两张或者多张表时的一种根据列的排列组合的关系,比如a有两列,b有三列,他们的排列组合就是2x3=6种
带添加的查询,笛卡儿积相对来说效率会比内链接JOIN的效率会高一些,下面是一些图形说明方式
跟多关于笛卡儿积的文章请查看此链接:
点击打开链接
总结:至于在实际开发中用那种连接方式起主要作用的还是考虑业务的需求跟sql的性能。