今天在关于数据库的连接时犯了一个错误,将左连接时的条件用成了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`
本来只是这样就可以了,由于在程序中查找了半天终于找到了错误
在这里介绍下左连接,右连接,内连接,完全连接
第一张是学生表
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNlVWNkZ2MhRDNxETO1kTM4EmYlVzY0MjYmhzN1gjYw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
第二张book表
现在我们进行左连接
SELECT *
FROM book b LEFT JOIN student s ON b.`stuId`=s.`stuId`
结果如下:
可以看到左表中的数据完全出来了,而右边只出了匹配的表
下面进行右连接
SELECT *
FROM book b RIGHT JOIN student s ON b.`stuId`=s.`stuId`
可以从上表中看到,右边中的内容全部出来了,而左表中没有的内容,显示为空
接下来看看内连接
SELECT *
FROM book b INNER JOIN student s ON b.`stuId`=s.`stuId`
可以看到左表中的内容和右表中的内容满足条件的才显示出来
最后完全连接
SELECT b.`bookId`,b.`bookName`
FROM book b FULL JOIN student s ON b.`stuId`=s.`stuId`
这里是查询不出的,在mysql中,不支持完全连接
在SQL中完全连接时,在内连接的基础上,不符合的数据也可以查出来