欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中VARCHAR與CHAR格式數(shù)據(jù)的區(qū)別

 更新時(shí)間:2015年09月02日 11:07:46   投稿:hebedich  
char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型,那么他們具體使用過(guò)程中有什么區(qū)別嗎

區(qū)別

CHAR與VARCHAR類型類似,但它們保存和檢索的方式不同。CHAR有固定的長(zhǎng)度,而VARCHAR屬于可變長(zhǎng)的字符類型。它們最大長(zhǎng)度和是否尾部空格被保留等方面也不同。在存儲(chǔ)和檢索過(guò)程中不進(jìn)行大小寫轉(zhuǎn)換。

下面的表格顯示了將各種字符串值保存到CHAR(4)和VARCHAR(4)列后的結(jié)果,說(shuō)明了CHAR和VARCHAR之間的差別:

值 CHAR(4) 存儲(chǔ)需求 VARCHAR(4) 存儲(chǔ)需求
'' ' ' 4個(gè)字節(jié) '' 1個(gè)字節(jié)
'ab' 'ab ' 4個(gè)字節(jié) 'ab' 3個(gè)字節(jié)
'abcd' 'abcd' 4個(gè)字節(jié) 'abcd' 5個(gè)字節(jié)
'abcdefgh' 'abcd' 4個(gè)字節(jié) 'abcd' 5個(gè)字節(jié)

從上面可以看得出來(lái)CHAR的長(zhǎng)度是固定的,不管你存儲(chǔ)的數(shù)據(jù)是多少他都會(huì)都固定的長(zhǎng)度。而VARCHAR則處可變長(zhǎng)度但他要在總長(zhǎng)度上加1字節(jié),這個(gè)用來(lái)存儲(chǔ)字符長(zhǎng)度(如果聲明的長(zhǎng)度超過(guò)255,則使用2個(gè)字節(jié))。所以實(shí)際應(yīng)用中用戶可以根據(jù)自己的數(shù)據(jù)類型來(lái)做。

請(qǐng)注意,上表中最后一行的值只適用不使用嚴(yán)格模式時(shí);如果MySQL運(yùn)行在嚴(yán)格模式,超過(guò)列長(zhǎng)度的值不被保存,并且會(huì)出現(xiàn)錯(cuò)誤。

從CHAR(4)和VARCHAR(4)列檢索的值并不總是相同,因?yàn)闄z索時(shí)從CHAR列刪除了尾部的空格。通過(guò)下面的例子說(shuō)明差別:

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é)果如下:

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

從上面可以看出來(lái),由于某種原因CHAR有固定長(zhǎng)度,所以在處理速度上要比VARCHAR快很多,但是相對(duì)浪費(fèi)存儲(chǔ)空間,所以對(duì)存儲(chǔ)不大,但在速度上有要求的可以使用CHAR類型,反之可以用VARCHAR類型來(lái)實(shí)現(xiàn)。

建議

MyISAM存儲(chǔ)引擎 建議使用固定長(zhǎng)度,數(shù)據(jù)列代替可變長(zhǎng)度的數(shù)據(jù)列
INNODB 存儲(chǔ)引擎 建議使用VARCHAR類型

總結(jié)分析:

文字字段若長(zhǎng)度固定,如:身分證號(hào)碼,就不要用 varchar 或 nvarchar,應(yīng)該用 char 或 nchar。
支持多語(yǔ)言的站點(diǎn)應(yīng)考慮使用 Unicode nchar 或 nvarchar 數(shù)據(jù)類型以盡量減少字符轉(zhuǎn)換問(wèn)題
文字字段若長(zhǎng)度不固定,如:地址,則該用 varchar 或 nvarchar。除了可節(jié)省存儲(chǔ)空間外,存取硬盤時(shí)也會(huì)較有效率

相關(guān)文章

  • 淺談一下MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別

    淺談一下MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別

    這篇文章主要介紹了MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別,存儲(chǔ)引擎是MySQL中特有的一個(gè)術(shù)語(yǔ),其它數(shù)據(jù)庫(kù)中沒(méi)有,實(shí)際上存儲(chǔ)引擎是一個(gè)表存儲(chǔ)/組織數(shù)據(jù)的方式,今天就跟小編來(lái)看看MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別,需要的朋友可以參考下
    2023-04-04
  • MySQL性能優(yōu)化之table_cache配置參數(shù)淺析

    MySQL性能優(yōu)化之table_cache配置參數(shù)淺析

    這篇文章主要介紹了MySQL性能優(yōu)化之table_cache配置參數(shù)淺析,本文介紹了它的緩存機(jī)制、參數(shù)優(yōu)化及清空緩存的命令等,需要的朋友可以參考下
    2014-07-07
  • MySQL創(chuàng)建索引需要了解的

    MySQL創(chuàng)建索引需要了解的

    這篇文章主要介紹了MySQL創(chuàng)建索引需要了解的知識(shí),幫助大家更正確的使用MySQL的索引,感興趣的朋友可以了解下
    2021-04-04
  • MySQL生產(chǎn)庫(kù)Insert了2次同樣的記錄但是主鍵ID是不一樣的問(wèn)題的分析過(guò)程

    MySQL生產(chǎn)庫(kù)Insert了2次同樣的記錄但是主鍵ID是不一樣的問(wèn)題的分析過(guò)程

    這篇文章主要介紹了MySQL生產(chǎn)庫(kù)Insert了2次同樣的記錄但是主鍵ID是不一樣的問(wèn)題的分析過(guò)程,需要的朋友可以參考下
    2014-02-02
  • mysql增加和刪除索引的相關(guān)操作

    mysql增加和刪除索引的相關(guān)操作

    下面小編就為大家?guī)?lái)一篇mysql增加和刪除索引的相關(guān)操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql分區(qū)表使用方法,新增分區(qū)、刪除分區(qū)、分區(qū)的合并、分區(qū)的拆分等使用方法
    2013-12-12
  • 關(guān)于Mysql自增id的這些你可能還不知道

    關(guān)于Mysql自增id的這些你可能還不知道

    這篇文章主要給大家介紹了關(guān)于Mysql自增id的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 解決MySQL登錄報(bào)錯(cuò)1045-Access?denied?for?user?'root'@' '(using?password:YES)

    解決MySQL登錄報(bào)錯(cuò)1045-Access?denied?for?user?'root'@

    這篇文章主要給大家介紹了關(guān)于解決MySQL登錄報(bào)錯(cuò)1045-Access?denied?for?user?‘root‘@‘‘(using?password:YES)的相關(guān)資料,文中一步步將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • mysql之group by和having用法詳解

    mysql之group by和having用法詳解

    這篇文章主要介紹了mysql之group by和having用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺談sql連接查詢的區(qū)別 inner,left,right,full

    淺談sql連接查詢的區(qū)別 inner,left,right,full

    下面小編就為大家?guī)?lái)一篇淺談sql連接查詢的區(qū)別 inner,left,right,full。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10

最新評(píng)論