国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中VARCHAR與CHAR格式數據的區別

2024-07-24 13:07:53
字體:
來源:轉載
供稿:網友

char是一種固定長度的類型,varchar則是一種可變長度的類型,那么他們具體使用過程中有什么區別嗎

區別

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列刪除了尾部的空格。通過下面的例子說明差別:

 

 
  1. mysql> CREATE TABLE test(a VARCHAR(4), b CHAR(4)); 
  2.  
  3. mysql> INSERT INTO test VALUES ('ab ''ab '); 
  4.  
  5. mysql> SELECT CONCAT(a, '+'), CONCAT(b, '+') FROM test; 

結果如下:

 

 
  1. CONCAT(a, '+') CONCAT(b, '+'
  2. ab + ab+ 

從上面可以看出來,由于某種原因CHAR有固定長度,所以在處理速度上要比VARCHAR快很多,但是相對浪費存儲空間,所以對存儲不大,但在速度上有要求的可以使用CHAR類型,反之可以用VARCHAR類型來實現。

建議

MyISAM存儲引擎 建議使用固定長度,數據列代替可變長度的數據列

INNODB 存儲引擎 建議使用VARCHAR類型

總結分析:

文字字段若長度固定,如:身分證號碼,就不要用 varchar 或 nvarchar,應該用 char 或 nchar。

支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數據類型以盡量減少字符轉換問題

文字字段若長度不固定,如:地址,則該用 varchar 或 nvarchar。除了可節省存儲空間外,存取硬盤時也會較有效率

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泉州市| 宁河县| 奉新县| 阿坝县| 巴青县| 肥城市| 蒲城县| 广丰县| 启东市| 永寿县| 灌阳县| 兴国县| 米林县| 富锦市| 德兴市| 报价| 南乐县| 乐东| 寿光市| 大邑县| 都安| 杂多县| 古蔺县| 平邑县| 海淀区| 仲巴县| 绥滨县| 玛沁县| 内江市| 织金县| 张掖市| 都昌县| 明水县| 通化县| 德阳市| 库车县| 益阳市| 岳普湖县| 方城县| 革吉县| 凉山|