7(多表查詢)
阿新 • • 發佈:2018-12-06
1 外來鍵和一對多關係
外來鍵的概念我很難用我的語言表達出來它的意思。
舉例永遠是最好解釋的方法,建兩張表,分別是商品分類表和商品資訊表
分析一下這兩張表的關係,其實很好理解,一個分類對應著多種商品,多種商品對應著一種分類,這明顯是一對多關係,商品分類表為一,商品資訊表為多,為了在資料庫中表達他們之間的關係,在多的一方新增一列,這一列就叫外來鍵,就是上圖中的category_id,這裡整理一下概念:
主表:category
從表:products
主鍵:cid
外來鍵:category_id
sql表達:
如何刪除呢?
1.先刪除從表中的關聯資料
2.刪除主表中的資料
2 多對多關係
同樣舉例說明,學生和課程是多對多關係的,一個學生可以選多門課程,一門課程可以被多名學生選擇。
那麼如何讓表達他們之間的關係呢?建立一張新的表將多對多關係拆開成為一對多關係。
剛剛在寫部落格的時候發現一個大問題
沒有指定主鍵,這還是程式碼寫的太少的原因。
言歸正傳,
主表:student,course
從表:stu_course
主鍵:sid,cid
外來鍵:sno,cno
sql表達:
總結下,外來鍵在那個表,那個表就是從表。
3 多表查詢
多表查詢有三種:
- 交叉查詢,不用
- 內連線:inner join 。。。on
- 顯示內連線
- 隱式內連線
- 外連線:outer join。。。on
- 左外連線
- 右外連線
下面以category表和products表為例
顯示內連線和隱式內連線
左外連線和右外連線
怎麼才能看出他們的區別呢?要在表中新增一個有一個沒有的資料,比如
category有分類,但是products表卻沒有這個類別的商品
products表有商品,但這個商品卻沒有類別
內連線結果:
左外(有類別,無電飯鍋)
右連線