1. 程式人生 > >7(多表查詢)

7(多表查詢)

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表有商品,但這個商品卻沒有類別

內連線結果:

左外(有類別,無電飯鍋)

右連線