一、外鍵設(shè)置方法
1、在MySQL中,為了把2個表關(guān)聯(lián)起來,會用到2個重要的功能:外鍵(FOREIGN KEY)和連接(JOIN)。外鍵需要在創(chuàng)建表的階段定義,連接可以通過相同意義的字段把2個表連接起來,用在查詢階段。
2、假設(shè)有2個表,分別是表A和表B,它們通過一個公共字段id 發(fā)生關(guān)聯(lián)關(guān)系,我們把這個關(guān)聯(lián)關(guān)系叫做R。如果id在表A中是主鍵,那么表A就是這個關(guān)系R中的主表,相應(yīng)的,表B就是這個關(guān)系中的從表,表B中的id,就是表B用來引用表A中數(shù)據(jù)的,叫外鍵。所以,外鍵就是從表中用來引用主表中數(shù)據(jù)的那個公共字段。
創(chuàng)建主表
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);
創(chuàng)建從表
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語句,我們就在創(chuàng)建表的同時定義了一個名字叫fk_importdetails_importhead的外鍵約束,同時,我們聲明,這個外鍵約束的字段listnumber引用的是表importhead里面的字段listnumber。
創(chuàng)建完成后,我們可以通過SQL語句來查看,這里我們要用到MySQL自帶的、用于存儲系統(tǒng)信息的數(shù)據(jù)庫:
information_schema。我們可以查看外鍵約束的相關(guān)信息:
外鍵約束所在的表是importdetails,外鍵字段是listnumber
參照的主表是importhead,參照主表字段是listnumber,
這樣通過定義外鍵約束,我們已經(jīng)建立起了2個表之間的關(guān)聯(lián)關(guān)系。

3、連接
在MySQL中有2種類型的連接,分別是內(nèi)連接(INNER JOIN)和外連接(OUTER JOIN)
- 內(nèi)連接表示查詢結(jié)果只返回符合連接條件的記錄,這種連接方式比較常用;
- 外連接則不同,表示查詢結(jié)果返回某一個表中的所有記錄,以及另一個表中滿足連接條件的記錄。
定義外鍵時,需要遵守下列規(guī)則:
- 主表必須已經(jīng)存在于數(shù)據(jù)庫中,或者是當前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結(jié)構(gòu)稱為自參照完整性。
- 必須為主表定義主鍵。
- 主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說,只要外鍵的每個非空值出現(xiàn)在指定的主鍵中,這個外鍵的內(nèi)容就是正確的。
- 在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
- 外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同。
- 外鍵中列的數(shù)據(jù)類型必須和主表主鍵中對應(yīng)列的數(shù)據(jù)類型相同。
總結(jié)
到此這篇關(guān)于MySQL外鍵設(shè)置的文章就介紹到這了,更多相關(guān)MySQL外鍵設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句
- MySQL外鍵使用詳解
- mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法
- MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法
- MySQL外鍵創(chuàng)建失敗1005原因匯總
- MYSQL建立外鍵失敗幾種情況記錄Can''t create table不能創(chuàng)建表
- MySQL外鍵使用及說明詳解
- mysql建立外鍵
- 快速理解MySQL中主鍵與外鍵的實例教程
- MySQL外鍵約束常見操作方法示例【查看、添加、修改、刪除】