MySQL是一種關(guān)系型數(shù)據(jù)庫,它支持主外鍵關(guān)系。每個(gè)數(shù)據(jù)表可以有一個(gè)主鍵和多個(gè)外鍵。主鍵唯一標(biāo)識每一行數(shù)據(jù),而外鍵建立了不同表之間的聯(lián)系。
主鍵是一列或一組列,其值唯一標(biāo)識數(shù)據(jù)表中每一行數(shù)據(jù),可以用來確保數(shù)據(jù)完整性和查詢效率。主鍵通常由自增列、GUID列、時(shí)間戳列等生成。
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上代碼定義了一個(gè)名為users的數(shù)據(jù)表,其中id列被定義為主鍵,并使用AUTO_INCREMENT自增。
外鍵是一列或一組列,它建立了不同表之間的聯(lián)系。即一個(gè)表的一個(gè)或多個(gè)列值必須在另一個(gè)表中的一列或多列中存在。通過使用外鍵,可以確保數(shù)據(jù)的準(zhǔn)確性和一致性。
CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `order_date` date NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上代碼定義了一個(gè)名為orders的數(shù)據(jù)表,其中user_id列被定義為外鍵,參考了users表中的id列。FOREIGN KEY關(guān)鍵字指明了該列是一個(gè)外鍵,REFERENCES關(guān)鍵字指明了參考的數(shù)據(jù)表以及參考的列。
在使用主外鍵關(guān)系時(shí),需要注意一些限制。例如,參考的列必須是主鍵或唯一的索引。并且,添加外鍵約束時(shí)需要確保數(shù)據(jù)表使用InnoDB存儲引擎,因?yàn)槠渌鎯σ娌恢С滞怄I約束。