1. 程式人生 > >MySQL基礎教程18-Mysql資料型別-字串型別

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表示羽毛球。回到前面提到集合和列舉很類似,可以利用數字和集合裡面元素進行加法運算,如下圖。


所以,集合中實際也是採用數字來儲存的,本篇關於字串的資料型別就介紹到這裡。