char varchar和varchar2的比較

2021-10-09 10:55:12 字數 1124 閱讀 5462

在mysql 中char 和 varchar 都是儲存字串的,區別在於char有固定的長度,而varchar屬於可變長的字元型別。

目前varchar和varchar2是同義詞,工業標準的varchar型別可以儲存空字串,但是oracle不這樣做,儘管它保留以後這樣做的權利。oracle自己開發了乙個資料型別varchar2,這個型別不是乙個標準的varchar,它將在資料庫中varchar列可以儲存空字串的特性改為儲存null值。如果你想有向後相容的能力,oracle建議使用varchar2而不是varchar。

char(n)型別的資料列中,所有資料都佔n個位元組的長度,當字元長度不夠是,用空格補全(在檢索操作中,這些空格會被刪掉)。在varchar(n)型別的資料列中,每個字元都只佔(字元長度個位元組+乙個記錄字元長度的位元組)個位元組(即l+1)。

char 固定長度,所以在處理速度上要比varchar快速很多,但是對費儲存空間,所以對儲存不大,但在速度上有要求的可以使用char型別。

定長的char的優勢:

一,儲存很短的資訊,比如門牌號碼101,201……這樣很短的資訊應該用char,因為varchar還要佔1個byte用於儲存首席資訊官度,本來打算節約儲存的現在得不償失。

二,固定長度的。比如使用uuid作為主鍵,那用char應該更合適。因為他固定長度,varchar動態根據長度的特性就消失了,而且還要佔1個長度資訊。

三,十分頻繁改變的column。因為varchar每次儲存都要有額外的計算,得到長度等工作,如果乙個非常頻繁改變的,那就要有很多的精力用於計算,而這些對於char來說是不需要的。

總的說來:char定長,儲存效率不如varchar,對於短資料的查詢優於varchar。

何時該用char,何時該用varchar2?

char與varchar2是一對矛盾的統一體,兩者是互補的關係.

varchar2比char節省空間,在效率上比char會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在資料庫設計上常說的『以空間換效率』。

varchar2雖然比char節省空間,但是如果乙個varchar2列經常被修改,而且每次被修改的資料的長度不同,這會引起『行遷移』(row migration)現象,而這造成多餘的i/o,是資料庫設計和調整中要盡力避免的,在這種情況下用char代替varchar2會更好一些。

char varchar和nvarchar的區別

1.char 適用於長度固定,一般不含中文的情況。char區分中英文,英文佔1個位元組,中文佔2個位元組。比如 char 20 你只能插入20個字母或者10個漢字。即使你插入abc,不足20個位元組,資料庫也會在abc後自動插入17個空格補足20個位元組 2.varchar 適用於長度不固定,一般不...

Char Varchar和Nvarchar的區別

char和varchar這兩種型別是我們經常使用的資料型別,但是在使用的過程中也沒有特別的去注意他們有什麼樣的區別,nvarchar相對與char和varchar就不是很常用。通過一次技術的分享和在網際網路上查詢一些知識,讓我對這些數值型別有了深刻的認識。char 是計算機程式語言中只可容納單個字元...

char varchar和varchar2的區別

1 char的長度是固定的,而varchar2的長度是可以變化的,比如,儲存字串 abc 對於char 20 表示你儲存的字元將佔20個位元組 包括17個空字元 而同樣的varchar2 20 則只占用3個位元組的長度,20只是最大值,當你儲存的字元小於20時,按實際長度儲存。2 char的效率比v...