MySQL外鍵設置的方法實例
一、外鍵設置方法
1、在MySQL中,為瞭把2個表關聯起來,會用到2個重要的功能:外鍵(FOREIGN KEY)和連接(JOIN)。外鍵需要在創建表的階段定義,連接可以通過相同意義的字段把2個表連接起來,用在查詢階段。
2、假設有2個表,分別是表A和表B,它們通過一個公共字段id 發生關聯關系,我們把這個關聯關系叫做R。如果id在表A中是主鍵,那麼表A就是這個關系R中的主表,相應的,表B就是這個關系中的從表,表B中的id,就是表B用來引用表A中數據的,叫外鍵。所以,外鍵就是從表中用來引用主表中數據的那個公共字段。
創建主表
CREATE TABLE demo.importhead ( listnumber INT PRIMARY KEY, supplierid INT, stocknumber INT, importtype INT, importquantity DECIMAL(10 , 3 ), importvalue DECIMAL(10 , 2 ), recorder INT, recordingdate DATETIME);
創建從表
CREATE TABLE demo.importdetails( listnumber INT, itemnumber INT, quantity DECIMAL(10,3), importprice DECIMAL(10,2), importvalue DECIMAL(10,2), -- 定義外鍵約束,指出外鍵字段和參照的主表字段 CONSTRAINT fk_importdetails_importhead FOREIGN KEY (listnumber) REFERENCES importhead (listnumber) );
運行這個SQL語句,我們就在創建表的同時定義瞭一個名字叫fk_importdetails_importhead的外鍵約束,同時,我們聲明,這個外鍵約束的字段listnumber引用的是表importhead裡面的字段listnumber。
創建完成後,我們可以通過SQL語句來查看,這裡我們要用到MySQL自帶的、用於存儲系統信息的數據庫:
information_schema。我們可以查看外鍵約束的相關信息:
外鍵約束所在的表是importdetails,外鍵字段是listnumber
參照的主表是importhead,參照主表字段是listnumber,
這樣通過定義外鍵約束,我們已經建立起瞭2個表之間的關聯關系。
3、連接
在MySQL中有2種類型的連接,分別是內連接(INNER JOIN)和外連接(OUTER JOIN)
- 內連接表示查詢結果隻返回符合連接條件的記錄,這種連接方式比較常用;
- 外連接則不同,表示查詢結果返回某一個表中的所有記錄,以及另一個表中滿足連接條件的記錄。
定義外鍵時,需要遵守下列規則:
- 主表必須已經存在於數據庫中,或者是當前正在創建的表。如果是後一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。
- 必須為主表定義主鍵。
- 主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,隻要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
- 在主表的表名後面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
- 外鍵中列的數目必須和主表的主鍵中列的數目相同。
- 外鍵中列的數據類型必須和主表主鍵中對應列的數據類型相同。
總結
到此這篇關於MySQL外鍵設置的文章就介紹到這瞭,更多相關MySQL外鍵設置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found