程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中VARCHAR與CHAR格局數據的差別

MySQL中VARCHAR與CHAR格局數據的差別

編輯:MySQL綜合教程

MySQL中VARCHAR與CHAR格局數據的差別。本站提示廣大學習愛好者:(MySQL中VARCHAR與CHAR格局數據的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL中VARCHAR與CHAR格局數據的差別正文


差別

CHAR與VARCHAR類型相似,但它們保留和檢索的方法分歧。CHAR有固定的長度,而VARCHAR屬於可變長的字符類型。它們最年夜長度和能否尾部空格被保存等方面也分歧。在存儲和檢索進程中不停止年夜小寫轉換。

上面的表格顯示了將各類字符串值保留到CHAR(4)和VARCHAR(4)列後的成果,解釋了CHAR和VARCHAR之間的差異:

值 CHAR(4) 存儲需求 VARCHAR(4) 存儲需求
'' ' ' 4個字節 '' 1個字節
'ab' 'ab ' 4個字節 'ab' 3個字節
'abcd' 'abcd' 4個字節 'abcd' 5個字節
'abcdefgh' 'abcd' 4個字節 'abcd' 5個字節

從下面可以看得出來CHAR的長度是固定的,不論你存儲的數據是若干他都邑都固定的長度。而VARCHAR則處可變長度但他要在總長度上加1字節,這個用來存儲字符長度(假如聲明的長度跨越255,則應用2個字節)。所以現實運用頂用戶可以依據本身的數據類型來做。

請留意,上表中最初一行的值只實用不應用嚴厲形式時;假如MySQL運轉在嚴厲形式,跨越列長度的值不被保留,而且會湧現毛病。

從CHAR(4)和VARCHAR(4)列檢索的值其實不老是雷同,由於檢索時從CHAR列刪除尾部的空格。經由過程上面的例子解釋差異:

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;

成果以下:

CONCAT(a, '+') CONCAT(b, '+')
ab + ab+

從下面可以看出來,因為某種緣由CHAR有固定長度,所以在處置速度上要比VARCHAR快許多,然則絕對糟蹋存儲空間,所以對存儲不年夜,但在速度上有請求的可使用CHAR類型,反之可以用VARCHAR類型來完成。

建議

MyISAM存儲引擎 建議應用固定長度,數據列取代可變長度的數據列
INNODB 存儲引擎 建議應用VARCHAR類型

總結剖析:

文字字段若長度固定,如:成分證號碼,就不要用 varchar 或 nvarchar,應當用 char 或 nchar。
支撐多說話的站點應斟酌應用 Unicode nchar 或 nvarchar 數據類型以盡可能削減字符轉換成績
文字字段若長度不固定,如:地址,則該用 varchar 或 nvarchar。除可節儉存儲空間外,存取硬盤時也會較有用率

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved