MySQL主鍵是指在表中唯一標(biāo)識每一行數(shù)據(jù)的一個或多個列。通常情況下,我們只需要指定一個列作為主鍵即可。但實(shí)際上,MySQL主鍵最多可以由幾個字段構(gòu)成呢?
CREATE TABLE `student` ( `grade` INT NOT NULL, `class` INT NOT NULL, `number` INT NOT NULL, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`grade`, `class`, `number`) );
上面的代碼是創(chuàng)建一個名為student的表,其中主鍵是由三個字段構(gòu)成的,分別是grade、class、number。這就意味著,同一個班級中不同學(xué)生的學(xué)號不能相同,不同班級中不同學(xué)生的學(xué)號也不能相同。同時,同一個班級中不能存在兩個名字相同的學(xué)生。
需要注意的是,MySQL主鍵最多可以由16個字段構(gòu)成。但一般情況下,我們不需要使用這么多字段來構(gòu)成主鍵。如果主鍵過于復(fù)雜,反而不利于數(shù)據(jù)的維護(hù)和查詢。
如果在創(chuàng)建表的時候沒有指定主鍵,則可以使用ALTER TABLE語句來添加主鍵:
ALTER TABLE `student` ADD PRIMARY KEY (`grade`, `class`, `number`);
如果想要查詢某一行數(shù)據(jù)的主鍵,可以使用以下語句:
SELECT CONCAT(grade, '-', class, '-', number) AS pk FROM `student` WHERE name = '張三';
上面的語句中,CONCAT函數(shù)是將多個列的值合并為一個字符串。在此基礎(chǔ)上,我們可以根據(jù)需要自定義主鍵的格式。