天天看點

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中完全連接配接時,在内連接配接的基礎上,不符合的資料也可以查出來

繼續閱讀