溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫中ENUM類型的作用是什么

發(fā)布時間:2021-08-04 16:49:06 來源:億速云 閱讀:180 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)MySQL數(shù)據(jù)庫中ENUM類型的作用是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

  MySQL數(shù)據(jù)庫中ENUM類型是什么意思

  ENUM類型是一個字符串對象,其值通常選自一個允許值列表中,該列表在表創(chuàng)建時的列規(guī)格說明中被明確地列舉。

  在下列某些情況下,值也可以是空串("")或NULL。

  如果將一個無效值插入一個ENUM(即,一個不在允許值列表中的字符串),空字符串將作為一個特殊的錯誤值被插入。事實(shí)上,這個字符串有別于一個"普通的"空字符串,因?yàn)檫@個字符串有個數(shù)字索引值為0。稍后有更詳細(xì)描述。

  如果一個ENUM被聲明為NULL,NULL也是該列的一個合法值,并且該列的缺省值也將為NULL。如果一個ENUM被聲明為NOTNULL,該列的缺省值將是該列表所允許值的第一個成員。每個枚舉值均有一個索引值。

  在列說明中列表值所允許的成員值被從1開始編號。

  空字符串錯誤值的索引值為0。這就意味著,你可以使用下面所示的SELECT語句找出被賦于無效ENUM值的記錄行。mysql>SELECT*FROMtbl_nameWHEREenum_col=0;

  MySQL數(shù)據(jù)庫中ENUM類型是什么意思

  NULL值的索引值為NULL。例如,指定為ENUM("one","two","three")的一個列,可以有下面所顯示的任一值。每個值的索引值也如下所示:值索引值NULLNULL""0"one"1"two"2"three"3換個枚舉最大可以有65535個成員值。從MySQL3.23.51開始,當(dāng)表被創(chuàng)建時,ENUM值尾部的空格將會自動刪除。當(dāng)為一個ENUM列賦值時,字母的大小寫是無關(guān)緊要的。然而,以后從列中檢索出來的值的大小寫卻是匹配于創(chuàng)建表時所指定的允許值。

  如果在一個數(shù)字語境中檢索一個ENUM,列值的索引值將被返回。例如,你可以像這樣使用數(shù)字值檢索一個ENUM列:mysql>SELECTenum_col+0FROMtbl_name;

  如果將一個數(shù)字存儲到一個ENUM中,數(shù)字被當(dāng)作為一個索引值,并且存儲的值是該索引值所對應(yīng)的枚舉成員。(但是,這在LOADDATA將不能工作,因?yàn)樗曀械妮斎刖鶠樽址?在一個ENUM字符串中存儲數(shù)字是不明智的,因?yàn)樗赡軙騺y思維。

  ENUM值依照列規(guī)格說明中的列表順序進(jìn)行排序。(換句話說,ENUM值依照它們的索引號排序。)舉例來說,對于ENUM("a","b"),"a"排在"b"后,但是對于ENUM("b","a"),"b"卻排在"a"之前??兆址旁诜强兆址?,NULL值排在其它所有的枚舉值前。為了防止意想不到的結(jié)果,建議依照字母的順序定義ENUM列表。也可以通過使用GROUPBYCONCAT(col)來確定該以字母順序排序而不是以索引值。

  如果希望得到一個ENUM列的所有可能值,可以使用SHOWCOLUMNSFROMtable_nameLIKEenum_colum來實(shí)現(xiàn)。

以上就是MySQL數(shù)據(jù)庫中ENUM類型的作用是什么,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI