1. 程式人生 > >mysql 資料型別筆記

mysql 資料型別筆記

一. varchar儲存規則:

4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組) 
5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是65532位元組 
Mysql4中最大也不過是20個位元組,但是Mysql5根據編碼不同,儲存大小也不同。 

 

二. varchar和char 的區別:

char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是: char(M)型別的資料列裡,每個值都佔用M個位元組,如果某個長度小於M,MySQL就會在它的右邊用空格字元補足.(在檢索操作中那些填補出來的空格字元將被去掉)在varchar(M)型別的資料列裡,每個值只佔用剛好夠用的位元組再加上一個用來記錄其長度的位元組(即總長度為L+1位元組). 

二. int integer:

int 和 integer 本質沒有區別;

注意:這裡的M代表的並不是儲存在資料庫中的具體的長度,以前總是會誤以為int(3)只能儲存3個長度的數字,int(11)就會儲存11個長度的數字,這是大錯特錯的。
其實當我們在選擇使用int的型別的時候,不論是int(3)還是int(11),它在資料庫裡面儲存的都是4個位元組的長度,在使用int(3)的時候如果你輸入的是10,會預設給你儲存位010,也就是說這個3代表的是預設的一個長度,當你不足3位時,會幫你不全,當你超過3位時,就沒有任何的影響。
int(10)與int(11)有什麼區別,當時覺得就是長度的區別吧,現在看,他們之間除了在儲存的時候稍微有點區別外,在我們使用的時候是沒有任何區別的。
int(10)也可以代表2147483647這個值int(11)也可以代表。