枚舉:enum,實現將所有可能出現的結果都設計好,實際上存儲的數據必須是規定好的數據中的一個。
枚舉的使用方式
定義:enum(可能出現的元素列表); //如enum(‘男’,‘女’)
使用:存儲數據,只能存儲上面定義好的數據
意義在於:
1, 限定值的可能性!
2, 速度快,比普通的字符串速度快!
原因是枚舉型 是利用 整數進行管理的,能夠2個字節進行管理!
每個值,都是一個整數標識,從第一個選項開始為1,逐一遞增!
管理時整數的形式,速度比字符串快!
一共有2 個字節,0-65535,因此可以有 65535個選項可以使用!、
-- 創建枚舉表
create table my_enum(
gender enum('男','女','保密')
)charset utf8;
作用之一:規范數據格式,數據只能是規定的數據中的其中一個
作用之二:節省存儲空間(枚舉通常有一個別名:單選框),枚舉實際存儲的是數值,而不是字符串本身
在mysql中,系統也是自動轉換格式的,而且基本與PHP一樣(尤其是字符串轉數字)
-- 插入數據
-- 有效數據
insert into my_enum values('男'),('保密');
-- 數值插入枚舉元素
insert into my_enum values (1),(2);
原理在下面
-- 錯誤數據
insert into my_enum values('male'); -- 錯誤:沒有該元素
證明字段存儲的數據是數值:將數據去除了 +0 就可以判斷出原來的數據存儲的到底是字符串還是數值,如果是字符串最終結果永遠是0,否則是其他值
-- 將字段結果取出來進行+0運算
select gender + 0,gender from my_enum;
找出了枚舉元素的實際規律:按照元素出現的順序,從1開始編號
枚舉原理:枚舉在進行數據規范的時候(定義的時候),系統會自動建立一個數字與枚舉元素的對應關系(關系放到日志中);然后在進行數據插入的時候,系統自動將字符轉換成對應的數字存儲,然后在進行數據提取的時候,系統就自動將數字轉換成字符串顯示。
因為我枚舉實際存儲的是數值,所以可以直接插入數值
注意:站在 mysql的角度,盡量多用集合!
但是站在php操作mysql的角度,盡量少用!(兼容性差)
---------------------
版權聲明:本文為CSDN博主「文藝小卿年」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41725214/article/details/79771842