MySQL是一個廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其中外鍵是用于建立表之間關(guān)聯(lián)的重要概念。在MySQL中,通過定義外鍵可以實(shí)現(xiàn)表之間的一對多或多對多關(guān)系,避免了數(shù)據(jù)的冗余存儲,提高數(shù)據(jù)庫的效率。
定義外鍵的方法如下:
ALTER TABLE表名ADD CONSTRAINT外鍵名FOREIGN KEY (外鍵字段) REFERENCES關(guān)聯(lián)表名(關(guān)聯(lián)字段) [ON DELETE級聯(lián)操作] [ON UPDATE級聯(lián)操作];
其中,ALTER TABLE
命令用于修改表結(jié)構(gòu),ADD CONSTRAINT
關(guān)鍵字用于添加約束,FOREIGN KEY
用于定義外鍵,REFERENCES
用于指定關(guān)聯(lián)表和關(guān)聯(lián)字段。在ON DELETE
和ON UPDATE
后可以選擇使用級聯(lián)操作,常用的級聯(lián)操作包括:
CASCADE
:當(dāng)從關(guān)聯(lián)表中刪除或修改一條記錄時,同步刪除或修改所有有關(guān)聯(lián)關(guān)系的記錄。SET NULL
:當(dāng)從關(guān)聯(lián)表中刪除或修改一條記錄時,將關(guān)聯(lián)字段置為NULL。RESTRICT
:不允許從關(guān)聯(lián)表中刪除或修改記錄,除非沒有任何關(guān)聯(lián)關(guān)系。
需要注意的是,在定義外鍵時,關(guān)聯(lián)表和關(guān)聯(lián)字段必須已經(jīng)存在,否則會出現(xiàn)錯誤。此外,MySQL僅支持InnoDB和NDB引擎對外鍵的完整性約束,如果使用其他引擎則無法定義外鍵。