MySQL中,一個表只能有一個主鍵。但是有時候我們需要根據(jù)多個字段進行主鍵索引,這時可以使用復(fù)合主鍵。復(fù)合主鍵是由多個字段組成的主鍵。
要創(chuàng)建一個帶有復(fù)合主鍵的表,需要在創(chuàng)建表時使用多個字段來定義主鍵:
CREATE TABLE `students` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`, `name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上面的代碼創(chuàng)建了一個名為students的表,并指定了兩個字段id和name作為復(fù)合主鍵。
注意,復(fù)合主鍵的每個字段都必須在表中定義為NOT NULL,否則會出現(xiàn)錯誤。
在使用復(fù)合主鍵時,查詢和排序的語法也會略微有所不同。
查詢時,可以使用AND連接多個字段進行查詢:
SELECT * FROM `students` WHERE `id`=1 AND `name`='Tom';
排序時,可以指定多個字段進行排序:
SELECT * FROM `students` ORDER BY `id`, `name`;
復(fù)合主鍵可以提高數(shù)據(jù)的查詢效率,并確保數(shù)據(jù)的完整性。但是需要注意的是,過多的復(fù)合主鍵可能會影響插入和更新數(shù)據(jù)的效率。