枚舉(ENUM)是MySQL中一種非常有用的數(shù)據(jù)類型。當(dāng)我們需要限定一個(gè)字段只能取一些特定值的時(shí)候,就可以使用枚舉型。模擬一個(gè)簡(jiǎn)單的用戶角色表,其中role字段只能取admin、user、guest三個(gè)值。
CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, role ENUM('admin', 'user', 'guest') NOT NULL, PRIMARY KEY (id) );
上述代碼中,我們?cè)诙x數(shù)據(jù)表時(shí)指定了枚舉型的取值范圍,每個(gè)取值之間用逗號(hào)隔開,用單引號(hào)包圍。在實(shí)際使用時(shí),我們只能給這個(gè)字段賦值為這些取值之一。
INSERT INTO user(name, role) VALUES('Alice', 'admin'); INSERT INTO user(name, role) VALUES('Bob', 'user'); INSERT INTO user(name, role) VALUES('Charlie', 'guest'); INSERT INTO user(name, role) VALUES('David', 'manager'); // 這一行會(huì)報(bào)錯(cuò)
注意,如果我們?cè)噲D給一個(gè)枚舉型字段賦值為不在枚舉范圍內(nèi)的值,MySQL會(huì)拋出一個(gè)錯(cuò)誤。
使用枚舉型的好處在于,它可以讓我們?cè)谡Z(yǔ)法上限定字段的取值范圍,確保數(shù)據(jù)的有效性。此外,它還可以減少存儲(chǔ)空間的占用,因?yàn)镸ySQL會(huì)把枚舉值轉(zhuǎn)換成整型存儲(chǔ)。