萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL ENUM 枚舉類型深度解析:存儲機制、大小寫規則與最佳實踐

ENUM 存儲特性速覽

  • 成員數量:1~65,535 個枚舉值
  • 存儲空間:1~2 字節(≤255 個值用 1 字節,否則 2 字節)
  • 核心限制:單列單值,不支持多選

實戰行為驗證

CREATE TABLE user_sex (sex ENUM('M','F'));
INSERT INTO user_sex VALUES ('M'), ('s'), ('2'), ('f');
-- 實際寫入結果:M, M, M, F

關鍵行為總結

  1. 大小寫不敏感:'f' 自動轉為 'F'
  2. 非法值降級:不在定義集合內的值(如 's', '2')強制寫入第一個枚舉值('M')
  3. 嚴格單值:不可存儲多個枚舉值

典型業務場景示例

假設表 xxx 有字段 folder ENUM('inbox','outbox','other')

寫入操作

INSERT INTO `xxx` (`folder`) VALUES ('inbox');
INSERT INTO `xxx` (`folder`) VALUES ('outbox');
INSERT INTO `xxx` (`folder`) VALUES ('other');

更新操作

UPDATE `xxx` SET `folder` = 'inbox';
UPDATE `xxx` SET `folder` = 'outbox';
UPDATE `xxx` SET `folder` = 'other';

刪除操作

DELETE FROM `xxx` WHERE `folder` = 'inbox';
DELETE FROM `xxx` WHERE `folder` = 'outbox';
DELETE FROM `xxx` WHERE `folder` = 'other';

開發建議

  1. 枚舉值定義後,極少修改(需 ALTER TABLE 重建表),謹慎規劃。
  2. 應用層嚴格校驗輸入值,避免非法值靜默轉換導致數據質量問題。
  3. 需多選場景請改用 SET 類型或關聯表設計。
  4. 操作語法與字符串一致,但底層為數值索引,ORDER BY 排序按定義順序而非字母順序。
copyright © 萬盛學電腦網 all rights reserved