MySQL中的枚舉的用法


枚舉: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM