char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是:
char(m)型別的資料列裡,每個值都占用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足.
(在檢索操作中那些填補出來的空格字元將被去掉)
在varchar(m)型別的資料列裡,每個值只占用剛好夠用的位元組再加上乙個用來記錄其長度的位元組(即總長度為l+1位元組).
存資料時的區別
char定義的是固定長度,長度範圍為0-255,儲存時,如果字元數沒有達到定義的位數,會在後面用空格補全存入資料庫中
varchar是變長長度,長度範圍為0-65535,儲存時,如果字元沒有達到定義的位數,也不會在後面補空格,當然還有一或兩個位元組來描述該位元組長度
取資料時的區別
資料庫取char的資料時,會把後面的空格全部丟棄掉,也就是說,在char中的尾部存入空格時,最後取出來都會被丟棄
資料庫在取varchar資料時,尾部空格會保留
占用位元組差別
當定義char時,不管你存入多少字元,都會占用到你定義的字元數,而用varchar時,則和你輸入的字元數有關,會多一到兩個位元組來
記錄位元組長度,當資料位占用的位元組數小於255時,用1個位元組來記錄長度,資料位占用位元組數大於255時,用2個位元組來記錄長度,還有
一位來記錄是否為nul值
Varchar與char的區別
char 對英文 ascii 字元占用1個位元組,對乙個漢字占用2個位元組 varchar 的型別不以空格填滿,比如varchar 100 但它的值只是 qian 則它的值就是 qian 而char 不一樣,比如char 100 它的值是 qian 而實際上它在資料庫中是 qian qian後共有9...
CHAR 與 VARCHAR的區別
為什麼要談char與varchar?大家可能想char和varchar這種東西再簡單不過了,只不過是mysql中最基本的資料型別,有什麼好深究的。其實有時候越簡單 越基礎的東西越複雜,越難以捉摸。大家在使用mysql建立資料表時都會遇到這樣的問題,如何為字段選擇合適的資料型別,熟悉這些基本資料型別將...
char與varchar的區別?
1 char m m代表可儲存的字元數,char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char 10 那麼不論你儲存的資料是否達到了10個字元,都要占去10個字元的空間。2 varchar n n代表可儲存的位元組數,儲存變長資料,但儲存效率沒有char高。如果乙個字段可能的值是...