溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中的char與varchar有什么區別

發布時間:2020-06-24 19:33:40 來源:億速云 閱讀:312 作者:元一 欄目:MySQL數據庫

這篇文章將為大家詳細講解有關mysql中char與varchar的區別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

varchar類型用于存儲可變長的字符串,是比較常見常用的字符串數據類型。

在存儲的字符串是變長時,varchar更加節約空間。由于varchar是變長的,在使用update的時候,可能使得行變得比原來更長,這就導致需要做額外的工作。

如果一個行占用的空間增加,并且在頁內沒有多余的空間可與存儲,這是innoDB的存儲引擎需要分裂頁來使行可以放進頁內。

char類型用于存儲定長的字符串。

在存儲數據時,MySQL會刪除所有文末的空格,所以,即便你存儲的是:'abc ',注意這個字符串末尾是有空格的,也會在存儲時把這個空格刪掉。

mysql中char和varchar數據類型的區別:

1.CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,存儲字符串“abc",對于CHAR (10),表示你存儲的字符將占10個字節(包括7個空字符),而同樣的VARCHAR2 (10)則只占用3個字節的長度,10只是最大值,當你存儲的字符小于10時,按實際長度存儲。 

2.CHAR的效率比VARCHAR2的效率稍高。 

3.目前VARCHAR是VARCHAR2的同義詞。工業標準的VARCHAR類型可以存儲空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權利。Oracle自己開發了一個數據類型VARCHAR2,這個類型不是一個標準的VARCHAR,它將在數據庫中varchar列可以存儲空字符串的特性改為存儲NULL值。如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。 

何時該用CHAR,何時該用varchar2? 

CHAR與VARCHAR2是一對矛盾的統一體,兩者是互補的關系. 

VARCHAR2比CHAR節省空間,在效率上比CHAR會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在數據庫設計上常說的‘以空間換效率’。 

VARCHAR2雖然比CHAR節省空間,但是如果一個VARCHAR2列經常被修改,而且每次被修改的數據的長度不同,這會引起‘行遷移’(Row Migration)現象,而這造成多余的I/O,是數據庫設計和調整中要盡力避免的,在這種情況下用CHAR代替VARCHAR2會更好一些。

使用場景:

varchar適用的場景:

  • 字符串列的最大長度比平均長度要大很多;

  • 字符串列的更新很少時,因為沒有或很少有內存碎片問題;

  • 使用了UTF-8這樣復雜的字符集,每個字符都使用不同的字節數進行存儲;

char適用的場景:

  • 列的長度為定值時適合適用,比如:MD5密文數據。

關于mysql中char與varchar的區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女