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