枚舉類型在mysql的使用方法:1、插入數(shù)據(jù),語法為【insert into my_enum values (1),(2);】;2、錯誤數(shù)據(jù),語法為【insert into my_enum values(‘male’);】。
相關(guān)學(xué)習(xí)推薦:mysql教程
枚舉類型在mysql的使用方法:
枚舉:enum,實(shí)現(xiàn)將所有可能出現(xiàn)的結(jié)果都設(shè)計(jì)好,實(shí)際上存儲的數(shù)據(jù)必須是規(guī)定好的數(shù)據(jù)中的一個。
枚舉的使用方式
定義:enum(可能出現(xiàn)的元素列表);
如enum(‘男’,‘女’)
使用:存儲數(shù)據(jù),只能存儲上面定義好的數(shù)據(jù)
意義在于:
1, 限定值的可能性!
2, 速度快,比普通的字符串速度快!
原因是枚舉型 是利用 整數(shù)進(jìn)行管理的,能夠2個字節(jié)進(jìn)行管理!
每個值,都是一個整數(shù)標(biāo)識,從第一個選項(xiàng)開始為1,逐一遞增!
管理時整數(shù)的形式,速度比字符串快!
一共有2 個字節(jié),0-65535,因此可以有 65535個選項(xiàng)可以使用!、
創(chuàng)建枚舉表
create?table?my_enum( gender?enum('男','女','保密') )charset?utf8;
作用之一:規(guī)范數(shù)據(jù)格式,數(shù)據(jù)只能是規(guī)定的數(shù)據(jù)中的其中一個
作用之二:節(jié)省存儲空間(枚舉通常有一個別名:單選框),枚舉實(shí)際存儲的是數(shù)值,而不是字符串本身
在mysql中,系統(tǒng)也是自動轉(zhuǎn)換格式的,而且基本與php一樣(尤其是字符串轉(zhuǎn)數(shù)字)
?
插入數(shù)據(jù)
— 有效數(shù)據(jù)
insert?into?my_enum?values('男'),('保密');
— 數(shù)值插入枚舉元素
insert?into?my_enum?values?(1),(2);
原理在下面
錯誤數(shù)據(jù)
insert?into?my_enum?values('male');?--?錯誤:沒有該元素
?
證明字段存儲的數(shù)據(jù)是數(shù)值:將數(shù)據(jù)去除了 +0 就可以判斷出原來的數(shù)據(jù)存儲的到底是字符串還是數(shù)值,如果是字符串最終結(jié)果永遠(yuǎn)是0,否則是其他值
— 將字段結(jié)果取出來進(jìn)行+0運(yùn)算
select?gender?+?0,gender?from?my_enum;
找出了枚舉元素的實(shí)際規(guī)律:按照元素出現(xiàn)的順序,從1開始編號
?
枚舉原理:枚舉在進(jìn)行數(shù)據(jù)規(guī)范的時候(定義的時候),系統(tǒng)會自動建立一個數(shù)字與枚舉元素的對應(yīng)關(guān)系(關(guān)系放到日志中);然后在進(jìn)行數(shù)據(jù)插入的時候,系統(tǒng)自動將字符轉(zhuǎn)換成對應(yīng)的數(shù)字存儲,然后在進(jìn)行數(shù)據(jù)提取的時候,系統(tǒng)就自動將數(shù)字轉(zhuǎn)換成字符串顯示。
因?yàn)槲颐杜e實(shí)際存儲的是數(shù)值,所以可以直接插入數(shù)值
想了解更多編程學(xué)習(xí),敬請關(guān)注mysql教程欄目!