今天在關于資料庫的連接配接時犯了一個錯誤,将左連接配接時的條件用成了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`
本來隻是這樣就可以了,由于在程式中查找了半天終于找到了錯誤
在這裡介紹下左連接配接,右連接配接,内連接配接,完全連接配接
第一張是學生表
第二張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中完全連接配接時,在内連接配接的基礎上,不符合的資料也可以查出來