MySQL基礎教程18-Mysql資料型別-字串型別
本篇來學習字串型別,在SQL中,將字串型別分成了6類:char, varchar, text, blob, enum, 和set。下面挑選列舉和集合來舉例看看。
定長字串
定長字串:char,磁碟上二維表在定義結構的時候,就已經確定了最終資料的儲存長度。
char(L): L代表length,可以儲存的長度,單位為字元,最大長度值可以為255.
char(4): 在UTF8環境下,需要4*3=12個位元組(utf8預設3個位元組儲存一個字元)
變長字串
變長字串:varchar, 在分配空間的時候,按照最大的空間分配,但是實際上最終用了多少是根據具體的資料來確定。varchar(L): L表示字元長度,理論長度是65536個字元,但是會多出一到2個位元組來確定儲存的實際長度。
如何選擇定長或者是變長字串?
定長的磁碟空間比較浪費,但是效率高;
變長的磁碟空間比較節省,但是效率低;
如果資料基本上確定長度都一樣,那麼建議使用定長,例如身份證,電話號碼,手機號碼。
如果資料不能確定長度(不同資料有變化),建議使用變長,例如姓名,地址。
文字字串
上面提到char最大長度是255個,如果資料量非常大,通常說超過255個字元就會使用文字字串。文字字串根據儲存的資料的格式分成text和blob兩類。
text: 儲存文字(二進位制資料實際上都是儲存路徑)
blob: 儲存二進位制資料(通常不用)
列舉
Enum:事先將所有可能出現的結果都設計好,實際上儲存的資料資料必須是規定好的資料中的一個。
列舉的使用方式
定義:enum(可能出現的元素列表);例如 enum(‘男’, ‘女’, ‘保密’)
舉例:建立一個列舉表
插入資料
其實在enum中還可以插入數字型資料,這是為什麼?
列舉原理:列舉在進行定義的時候,系統會自動建立一個數字與列舉元素的對應關係,然後在進行資料插入,系統自動將字元轉換成對應的數字儲存,然後在進行資料提取的時候,系統自動將數值轉換成對應的字串顯示。
集合字串
集合跟列舉類似,實際儲存的也是數值,而不是字串(集合是多選),集合的使用方式如下:
定義: set(元素列表)
使用:可以使用元素列表中的元素(一個或者多個),用逗號分隔。
舉例,建立一個set表
插入集合資料
看到上面第二行插入語句的值寫的是3,檢視結果發現顯示插入的資料是足球和籃球。原來這裡3等於1+2,1根據set的定義表示足球,2表示籃球,3表示羽毛球。回到前面提到集合和列舉很類似,可以利用數字和集合裡面元素進行加法運算,如下圖。
所以,集合中實際也是採用數字來儲存的,本篇關於字串的資料型別就介紹到這裡。