Mysql char(10) 與 varchar(10)的區別


DROP TABLE test_string;

CREATE TABLE test_string (col_char CHAR(10),
col_varchar VARCHAR(10));

INSERT INTO `test_string` VALUES ('mysql', 'mysql');

在創建數據庫表時,為了給一個string類型的數據定義一個數據庫中的數據類型,一般參考的都是char或varchar,但這兩者的選擇有時候讓人很糾結,現總結一下兩者的區別:

(1)CHAR的長度是固定的,而VARCHAR的長度是可以變化的。

比如,存儲字符串“mysql",對於CHAR(10),表示你存儲的字符串將占10個字節(包括5個空字符)。

而同樣的VARCHAR (10)則只占用5個字節的長度,10只是其最大值限制,當你存儲的字符小於10時,按實際長度存儲。

(2)CHAR的效率比VARCHAR的效率稍高。

取數據的時候,char類型的要用trim()去掉多余的空格,而varchar是不需要的。

盡管如此,char的存取數度還是要比varchar要快得多,因為其長度固定,方便程序的存儲與查找;

但是,char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。

(3)CHAR(10)若輸入數據的字符數小於10,則系統自動在其后添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。VARCHAR(10)數據類型的存儲長度為實際數值長度。

(4)char的存儲方式是,對英文字符(ASCII)占用1個字節,對一個漢字占用兩個字節;而varchar的存儲方式是,對每個英文字符占用2個字節,漢字也占用2個字節,兩者的存儲數據都非unicode的字符數據。

 

Good Good Study, Day Day Up.

順序 選擇 循環 總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM