首先兩個表的資料如下:
drugs表:
drugstype表:
很顯然drugs的外來鍵是typeid,typeid這列對應的是drugstype的主鍵id.為了方便測試我把drugs表中的外來鍵設定可以為空
常見的連線:
1:外連線
外連線可分為:左連線、右連線、完全外連線。
select * from drugs d left join drugstype t on d.typeid=t.id 的效果如下
很顯然可以看出138條和157條資料,drugs表對應的外來鍵的表中的資料沒有顯示出來,這就是所謂左連線查詢,左連線查詢意思就是顯示左表中的全部資料,右表符合 on 條件的資料才顯示出來,因為drugs表中的兩條資料沒有與之外鍵表對應也就沒有顯示出來。
select * from drugs d right join drugstype t on d.typeid=t.id 效果如下:
很顯然可以看出138條和157條資料,只顯示drugs對應的外來鍵的表中的資料顯示出來啦,這就是所謂右連線查詢,右連線查詢意思就是顯示右表中的全部資料,左表符合 on 條件的資料才顯示出來,因為drugstype表中的兩條資料沒有與之主鍵表對應也就沒有顯示出來。
select * from drugs d inner join drugstype t on d.typeid=t.id 效果如下:
很顯然可以看出138條和157條資料,因為drugstype表中的兩條資料沒有與之主鍵表的資料所以都沒有顯示出來,這就是內連線查詢,內連線查詢意思就是顯示符合條件全部資料。
3:隱性連線,俗稱where連線:
select * from drugs d,drugstype t where d.typeid=t.id 效果如下:
很顯然可以看出138條和157條資料,因為drugstype表中的兩條資料沒有與之主鍵表的資料所以都沒有顯示出來,這就是隱性連線查詢,隱性連線查詢意思就是顯示符合條件全部資料。跟內連線,結果相同,只不過這個內連線,不怎麼推廣,不推薦用,隨著資料庫的發展和更新,大多數人用顯性連線,也就是內外連線
之所以寫這個部落格是因為今天寫專案的時候出現的bug,根據前台的人反饋的資訊,新增的資料,在分類查詢的時候,出不來資料,後來想到是外來鍵設定可以為空的了,因此查不出來資料。
最近遇到的一些坑
c 邏輯判斷的順序是從左向右的。conditiona conditionb 與 conditionb conditiona並不一定等價。舉個例子 void insertsort vector arr,int length arr j 1 key 由於j是int型別,所以在key 5的那次迴圈裡,j最...
python 遇到的一些坑
lst 1,2,4 print lst.iter next 列印出來的是 1 print lst.iter next 列印出來的是 1 呼叫 iter 方法的時候,生成乙個迭代器物件 如上,第二次呼叫,先生成物件,然後返回的是該物件的第乙個值 第二次和第一次列印的是兩個不同的例項的next 方法,但...
安裝Ubuntu遇到的一些坑
用u盤做啟動盤安裝ubuntu其實很容易,網上到處都是教程。但對顯示卡顯示問題,會出現開機黑屏的情況,故將解決方法記錄下來,以做備忘。配置 神船,顯示卡gtx1060。1 開機,按f7選擇u盤啟動。進入grub介面。2 按e編輯開機指令,在quite splash並在後面加上nomodeset,按f...