首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL ENUM 枚舉類型完整用法指南

     編輯:MySQL 資料庫相關知識

定義與特性

ENUM 是字符串對象,值來自建表時顯式列出的列表。最大 65,535 個元素。


CREATE TABLE shirts (
  name VARCHAR(40),
  size ENUM('x-small','small','medium','large','x-large')
);

特殊值處理

插入值存儲結果索引
列表外字符串空字符串 ''(錯誤值)0
NULL(列允許 NULL)NULLNULL
列表內有效值對應字符串1~65535

查找非法值:SELECT * FROM t WHERE enum_col=0;

索引與排序規則

  • 索引從 1 開始,按定義順序編號
  • 數值上下文自動轉索引:SELECT enum_col+0 FROM t 返回索引
  • 插入數字視為索引:INSERT INTO t(size) VALUES(2) 存 'small'
  • 排序按索引順序:ENUM('a','b') 中 'a'<'b';ENUM('b','a') 中 'b'<'a'
  • 空串 < 非空串,NULL 最小
  • 需按字典序排序:ORDER BY CAST(enum_col AS CHAR) 或 CONCAT(enum_col)

字符集與大小寫

  • 創建時尾部空格自動去除
  • 讀取時保持定義時的大小寫
  • 可指定字符集和校對規則,二進制/大小寫敏感校對下賦值需注意大小寫

獲取枚舉定義


SHOW COLUMNS FROM t LIKE 'size';
-- 解析 Type 列:enum('x-small','small','medium','large','x-large')

避坑指南

  1. 不要用純數字字符串作枚舉值(如 '0','1','2'),極易與索引混淆
  2. 不建議在 LOAD DATA 中用數字賦值(會被視為字符串)
  3. ALTER TABLE 修改枚舉列表時,舊數據索引可能對不上新列表,謹慎操作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved