天天看点

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

今天在关于数据库的连接时犯了一个错误,将左连接时的条件用成了where 所有有感而发就进行了一下研究。这里的

SELECT

b.`bookId`,b.`bookName`,b.`bookNo`,b.`bookNo`

FROM book b LEFT JOIN student s

ON b.`stuId`=s.`stuId`

WHERE b.`bookId`=1

这里添加了where 条件是 先进行连接,再进行where 条件筛选

SELECT

b.`bookId`,b.`bookName`,b.`bookNo`,b.`stuId` FROM book b LEFT JOIN student s ON b.`stuId`=s.`stuId`

本来只是这样就可以了,由于在程序中查找了半天终于找到了错误

在这里介绍下左连接,右连接,内连接,完全连接

第一张是学生表

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

第二张book表

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

现在我们进行左连接

SELECT *

FROM book b LEFT JOIN student s ON b.`stuId`=s.`stuId`

结果如下:

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

可以看到左表中的数据完全出来了,而右边只出了匹配的表

下面进行右连接

SELECT *

FROM book b RIGHT JOIN student s ON b.`stuId`=s.`stuId`

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

可以从上表中看到,右边中的内容全部出来了,而左表中没有的内容,显示为空

接下来看看内连接

SELECT *

FROM book b INNER JOIN student s ON b.`stuId`=s.`stuId`

mysql内连接和外连接的区别_关于左连接,右连接,内连接的分析

可以看到左表中的内容和右表中的内容满足条件的才显示出来

最后完全连接

SELECT b.`bookId`,b.`bookName`

FROM book b FULL JOIN student s ON b.`stuId`=s.`stuId`

这里是查询不出的,在mysql中,不支持完全连接

在SQL中完全连接时,在内连接的基础上,不符合的数据也可以查出来