在MySQL數(shù)據(jù)庫中,每個(gè)表都需要有一個(gè)主鍵來唯一確定每一行數(shù)據(jù)。一個(gè)主鍵可以由一個(gè)或多個(gè)列組成。
CREATE TABLE `users` ( `id` int NOT NULL, `username` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`,`email`) );
上述代碼中,我們定義了一個(gè)名為users
的表,并且使用了兩個(gè)列來作為主鍵,分別是id
和email
。這樣,每一行數(shù)據(jù)都可以通過這兩個(gè)列的值來唯一確定。
有時(shí)候,一列作為主鍵可能不足以滿足數(shù)據(jù)唯一性的要求。例如,在一個(gè)書籍管理系統(tǒng)中,一本書的ISBN號和圖書編號可能同時(shí)作為唯一標(biāo)識(shí)。這種情況下,我們可以使用多個(gè)列作為復(fù)合主鍵。如下代碼:
CREATE TABLE `books` ( `id` int NOT NULL, `isbn` varchar(50) NOT NULL, `book_no` varchar(20) NOT NULL, `title` varchar(100) NOT NULL, PRIMARY KEY (`isbn`,`book_no`) );
在上述代碼中,我們定義了一個(gè)名為books
的表,并且使用了兩個(gè)列isbn
和book_no
作為復(fù)合主鍵。這樣,我們可以保證每本書都可以通過這兩個(gè)列的值來唯一確定,避免了數(shù)據(jù)的重復(fù)和沖突。
需要注意的是,使用多個(gè)列作為主鍵需要謹(jǐn)慎,因?yàn)檫@樣會(huì)增加數(shù)據(jù)查詢和更新的難度。另外,主鍵還需要滿足一些其他的要求,例如不能為NULL值、唯一性等等,否則將會(huì)導(dǎo)致創(chuàng)建表失敗。