MySQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持多種數(shù)據(jù)類型,其中就包括ENUM。
在MySQL中,ENUM數(shù)據(jù)類型是一種枚舉類型。它允許存儲一組預(yù)定義的值,每個值都可以用一個名稱來標(biāo)識。在數(shù)據(jù)庫中,ENUM類型的列只能取預(yù)定義值之一作為其值。
CREATE TABLE example ( id INT PRIMARY KEY, color ENUM('red', 'green', 'blue') );
在查詢一條記錄時,如果ENUM類型的列有值,則返回ENUM類型的值;如果ENUM類型的列沒有值,則返回NULL。
SELECT * FROM example WHERE id = 1;
在MySQL中,如果查詢結(jié)果中ENUM類型的列沒有值,則可以使用COALESCE函數(shù)返回一個默認(rèn)值,如下所示:
SELECT COALESCE(color, 'unknown') AS color FROM example WHERE id = 1;
在MySQL中,ENUM類型的列可以用字符串或者數(shù)字表示。如果ENUM列用數(shù)字表示,則默認(rèn)情況下從1開始遞增,如下所示:
CREATE TABLE example ( id INT PRIMARY KEY, color ENUM('red', 'green', 'blue') NOT NULL ); INSERT INTO example (id, color) VALUES (1, 'red'), (2, 'green'), (3, 'blue'); SELECT * FROM example;
如果希望從0開始遞增,可以在ENUM類型的值列表中指定0:
CREATE TABLE example ( id INT PRIMARY KEY, color ENUM('red', 'green', 'blue') NOT NULL ); INSERT INTO example (id, color) VALUES (1, 'red'), (2, 'green'), (3, 'blue'); ALTER TABLE example MODIFY color ENUM('red', 'green', 'blue') NOT NULL DEFAULT 0; SELECT * FROM example;
在MySQL中,ENUM類型的列的值可以通過ORDINAL函數(shù)獲取其在ENUM中的位置,如下所示:
SELECT ORDINAL(color) AS position FROM example WHERE id = 1;
此外,在MySQL中還可以使用SET類型代替ENUM類型,SET類型也是一種枚舉類型,但允許存儲多個值。
以上就是MySQL中ENUM類型的一些基礎(chǔ)知識,ENUM類型可以很方便地存儲一組預(yù)定義值,使數(shù)據(jù)庫的數(shù)據(jù)類型更加豐富。