《MYSQL教程MySQL中VARCHAR與CHAR格式數據的區別》要點:
本文介紹了MYSQL教程MySQL中VARCHAR與CHAR格式數據的區別,希望對您有用。如果有疑問,可以聯系我們。
區別MYSQL學習
CHAR與VARCHAR類型類似,但它們保留和檢索的方式不同.CHAR有固定的長度,而VARCHAR屬于可變長的字符類型.它們最大長度和是否尾部空格被保留等方面也不同.在存儲和檢索過程中不進行大小寫轉換.MYSQL學習
下面的表格顯示了將各種字符串值保留到CHAR(4)和VARCHAR(4)列后的結果,說明了CHAR和VARCHAR之間的差別:MYSQL學習
值?CHAR(4)?存儲需求?VARCHAR(4)?存儲需求
''?' '?4個字節?''?1個字節
'ab'?'ab '?4個字節?'ab'?3個字節
'abcd'?'abcd'?4個字節?'abcd'?5個字節
'abcdefgh'?'abcd'?4個字節?'abcd'?5個字節MYSQL學習
從上面可以看得出來CHAR的長度是固定的,不管你存儲的數據是多少他都會都固定的長度.而VARCHAR則處可變長度但他要在總長度上加1字節,這個用來存儲字符長度(如果聲明的長度超過255,則使用2個字節).所以實際應用中用戶可以根據本身的數據類型來做.MYSQL學習
請注意,上表中最后一行的值只適用不使用嚴格模式時;如果MySQL運行在嚴格模式,超過列長度的值不被保留,并且會出現錯誤.MYSQL學習
從CHAR(4)和VARCHAR(4)列檢索的值并不總是相同,因為檢索時從CHAR列刪除了尾部的空格.通過下面的例子說明差別:MYSQL學習
mysql> CREATE TABLE test(a VARCHAR(4), b CHAR(4)); mysql> INSERT INTO test VALUES ('ab ', 'ab '); mysql> SELECT CONCAT(a, '+'), CONCAT(b, '+') FROM test;
結果如下:MYSQL學習
CONCAT(a, '+') CONCAT(b, '+') ab + ab+
從上面可以看出來,由于某種原因CHAR有固定長度,所以在處理速度上要比VARCHAR快很多,但是相對浪費存儲空間,所以對存儲不大,但在速度上有要求的可以使用CHAR類型,反之可以用VARCHAR類型來實現.MYSQL學習
建議MYSQL學習
MyISAM存儲引擎 建議使用固定長度,數據列代替可變長度的數據列
INNODB 存儲引擎 建議使用VARCHAR類型MYSQL學習
總結分析: MYSQL學習
筆墨字段若長度固定,如:身分證號碼,就不要用 varchar 或 nvarchar,應該用 char 或 nchar.
支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數據類型以盡量減少字符轉換問題
筆墨字段若長度不固定,如:地址,則該用 varchar 或 nvarchar.除了可節省存儲空間外,存取硬盤時也會較有效率MYSQL學習
《MYSQL教程MySQL中VARCHAR與CHAR格式數據的區別》是否對您有啟發,歡迎查看更多與《MYSQL教程MySQL中VARCHAR與CHAR格式數據的區別》相關教程,學精學透。維易PHP學院為您提供精彩教程。