MySQL中char、varchar和text的區別


三者空間占用方面:

char:存儲定長數據很方便,CHAR字段上的索引效率極高,可以有默認值,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間(自動用空格填充),且在檢索的時候后面的空格會隱藏掉,所以檢索出來的數據需要記得用strip()之類的函數去過濾空格。
varchar:存儲變長數據,但存儲效率沒有CHAR高。保存數據的時候,不進行空格自動填充,而且如果數據存在空格時,當值保存和檢索時尾部的空格仍會保留。另外,varchar類型的實際長度是它的值的實際長度+1,這一個字節用於保存實際使用了多大的長度
text:存儲可變長度的非Unicode數據,最大長度為2^31-1個字符。存儲或檢索過程中,不存在大小寫轉換。

[補充]UTF8字符:

基本拉丁字母、數字和標點符號使用一個字節;
大多數的歐洲和中東手寫字母適合兩個字節序列:擴展的拉丁字母(包括發音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言;
韓語、中文和日本象形文字使用三個字節序列。

總結:

盡量用varchar,能用varchar的地方不用text
char最大255個字符
varchar最大65535個字節(因此不同字符集,所能存儲的字符個數是不同的)
text最大65535字符

確定最大長度限制是字符還是字節的例子,可以參考這篇文章


References:
MySQL中char、varchar和text的區別
MySQL CHAR和VARCHAR那些事
mysql類型varchar()與text有什么區別?[12樓]


免責聲明!

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



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