在MySQL數(shù)據(jù)庫(kù)中,外鍵是用來(lái)保持表格數(shù)據(jù)完整性的重要工具。人們?cè)趯?shí)踐中利用外鍵對(duì)表格數(shù)據(jù)間建立關(guān)聯(lián)關(guān)系,從而使得數(shù)據(jù)有更好的組織結(jié)構(gòu),同時(shí)保證數(shù)據(jù)的一致性。本文將介紹在數(shù)據(jù)庫(kù)建表的過(guò)程中如何通過(guò)指定外鍵,使得數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系。
在MySQL中,建立外鍵的過(guò)程需要針對(duì)兩個(gè)表格。第一個(gè)表格被稱為“父表”,第二個(gè)表格被稱為“子表”。在建立外鍵約束條件時(shí),只需在子表格的列上加上FOREIGN KEY (外鍵列名) REFERENCES (父表名) (父表列名)即可。代碼如下:
CREATE TABLE 子表名 ( 子表列名 數(shù)據(jù)類型, FOREIGN KEY (外鍵列名) REFERENCES 父表名 (父表列名) );
在上述代碼中,MySQL數(shù)據(jù)庫(kù)將會(huì)自動(dòng)為子表格創(chuàng)建外鍵,在子表格的外鍵列上添加父表格的約束條件。
舉個(gè)例子,假設(shè)我們有一個(gè)城市表格(cities)和一個(gè)國(guó)家表格(countries),想要在城市表格中加入一個(gè)外鍵,將城市表格與國(guó)家表格關(guān)聯(lián)起來(lái)。代碼如下:
CREATE TABLE countries ( id INT NOT NULL PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE cities ( id INT NOT NULL PRIMARY KEY, name VARCHAR(50), country_id INT, FOREIGN KEY (country_id) REFERENCES countries(id) );
在以上代碼中,我們?yōu)閏ities表格新建了一個(gè)外鍵(country_id),將其映射到了countries表格中的id列。我們可以通過(guò)以下代碼查看外鍵是否成功建立:
SHOW CREATE TABLE cities;
在返回結(jié)果中,我們可以看到一個(gè)外鍵密鑰,以及外鍵的父表和子表:
CREATE TABLE `cities` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `country_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `country_id` (`country_id`), CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `countries` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
通過(guò)以上代碼,我們可以完成MySQL建表時(shí)指定外鍵的流程。