1. 程式人生 > >mysql字串型別

mysql字串型別

字串型別
utf8字符集 一個漢字佔3個位元組
GBK字符集 一個漢字佔2個位元組,一個字母佔一個位元組
char和varchar
1、char(M)M為該字串佔的最大長度,長度為0~255位元組之間任意值,佔用固定位元組,查詢時不區分大小寫。
2、varchar(M)長度為0~65535位元組之間任意值,以ascii碼為例。實際佔位元組數為實際字元長度的基礎上加1,因為最後有個結束標誌符佔用一個位元組。最大能存2w~6w個漢字(受字符集影響),utf8最多可以存22000左右個漢字(受字符集影響),5.0版本以前也只能存255個位元組。
3、char和varchar中字串最後有空格的話,char不保留空格,varchar保留空格。char每個值都佔用M個位元組,如果某個長度小於M,MySQL就會在它的右邊用空格字元補足.(在檢索操作中那些填補出來的空格字元將被去掉),一個漢字也表示一個字元,按字元儲存。
4、如果插入字串長度超過限制會提示不能插入

text型別
TINYTEXT 允許長度0~255位元組 儲存空間值的長度+2個位元組
TEXT  允許長度0~65535位元組 儲存空間為值的長度+2個位元組,最大也能存2w~6w個漢字(受字符集影響),text不能全文索引,不能加預設值
MEDIUMTEXT  允許長度0~167772150位元組 儲存空間為值的長度+3個位元組
LONGTEXT  允許長度0~4294967295位元組 儲存空間為值的長度+4個位元組

ENUM型別
格式:屬性名 ENUM('值1','值2',...,'值n'); 值最多可以有65535個,這些值末尾的空格將會被系統直接刪除,向表中插入的字元只能是ENUM中限定的字串。
如果加了not null限制,那麼不允許插入NULL值,如果不指定插入值預設插入值1。
如果不加not null限制,那麼不指定插入值或者插入值為NULL,都顯示插入的是NULL。

SET型別
格式:屬性名 SET('值1','值2',...,'值n'); 這些值末尾的空格將會被系統直接刪除,向表中插入的字元只能是ENUM中限定的字串,可以其中的多個值的組合,取多個值時,不同值之間用逗號隔開,最多隻能有64個值構成。
如插入:set型別取值表為('a','b','c','d'),插入值為('b')和('a,c,d')。顯示b和a,c,d。