最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中CHAR和VARCHAR類型演變和詳解

 更新時(shí)間:2012年06月26日 10:29:11   作者:  
MySQL數(shù)據(jù)庫(kù)的varchar類型在5.0.3以下的版本中的最大長(zhǎng)度限制為255,其數(shù)據(jù)范圍可以是0~255
一、演變:

MySQL數(shù)據(jù)庫(kù)的varchar類型在5.0.3以下的版本中的最大長(zhǎng)度限制為255,其數(shù)據(jù)范圍可以是0~255。

在MySQL5.0.3及以上的版本中,varchar數(shù)據(jù)類型的長(zhǎng)度支持到了65535,也就是說可以存放65532個(gè)字節(jié)的數(shù)據(jù),起始位和結(jié)束位占去了3個(gè)字節(jié),也就是說,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的數(shù)據(jù)可以在高版本中使用可變長(zhǎng)的varchar來存放,這樣就能有效的減少數(shù)據(jù)庫(kù)文件的大小。

如果在varchar中寫入大于設(shè)定的長(zhǎng)度,默認(rèn)情況下會(huì)截去后面的部分。

二、詳解(MySQL5.1):

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

CHAR和VARCHAR類型聲明的長(zhǎng)度表示你想要保存的最大字符數(shù)。例如,CHAR(30)可以占用30個(gè)字符。

CHAR列的長(zhǎng)度固定為創(chuàng)建表時(shí)聲明的長(zhǎng)度。長(zhǎng)度可以為從0到255的任何值。當(dāng)保存CHAR值時(shí),在它們的右邊填充空格以達(dá)到指定的長(zhǎng)度。當(dāng)檢索到CHAR值時(shí),尾部的空格被刪除掉。在存儲(chǔ)或檢索過程中不進(jìn)行大小寫轉(zhuǎn)換。

VARCHAR列中的值為可變長(zhǎng)字符串。長(zhǎng)度可以指定為0到65,535之間的值。(VARCHAR的最大有效長(zhǎng)度由最大行大小和使用的字符集確定。整體最大長(zhǎng)度是65,532字節(jié))。

同CHAR對(duì)比,VARCHAR值保存時(shí)只保存需要的字符數(shù),另加一個(gè)字節(jié)來記錄長(zhǎng)度(如果列聲明的長(zhǎng)度超過255,則使用兩個(gè)字節(jié))。

VARCHAR值保存時(shí)不進(jìn)行填充。當(dāng)值保存和檢索時(shí)尾部的空格仍保留,符合標(biāo)準(zhǔn)SQL。

如果分配給CHAR或VARCHAR列的值超過列的最大長(zhǎng)度,則對(duì)值進(jìn)行裁剪以使其適合。如果被裁掉的字符不是空格,則會(huì)產(chǎn)生一條警告。如果裁剪非空格字符,則會(huì)造成錯(cuò)誤(而不是警告)并通過使用嚴(yán)格SQL模式禁用值的插入。

下面的表顯示了將各種字符串值保存到CHAR(4)和VARCHAR(4)列后的結(jié)果,說明了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é)
請(qǐng)注意上表中最后一行的值只適用不使用嚴(yán)格模式時(shí);如果MySQL運(yùn)行在嚴(yán)格模式,超過列長(zhǎng)度不的值不保存,并且會(huì)出現(xiàn)錯(cuò)誤。

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

mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO vc VALUES ('ab ', 'ab ');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;
+----------------+----------------+
| CONCAT(v, '+') | CONCAT(c, '+') |
+----------------+----------------+
| ab + | ab+ |
+----------------+----------------+
1 row in set (0.00 sec)


根據(jù)分配給列的字符集校對(duì)規(guī)則對(duì)CHAR和VARCHAR列中的值進(jìn)行排序和比較。

請(qǐng)注意所有MySQL校對(duì)規(guī)則屬于PADSPACE類。這說明在MySQL中的所有CHAR和VARCHAR值比較時(shí)不需要考慮任何尾部空格。

例如:
復(fù)制代碼 代碼如下:

mysql> CREATE TABLE names (myname CHAR(10), yourname VARCHAR(10));
Query OK, 0 rows affected (0.09 sec)

mysql> INSERT INTO names VALUES ('Monty ', 'Monty ');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT myname = 'Monty ', yourname = 'Monty ' FROM names;
+-----------------------------+-------------------------------+
| myname = 'Monty ' | yourname = 'Monty ' |
+-----------------------------+-------------------------------+
| 1 | 1 |
+-----------------------------+-------------------------------+
1 row in set (0.00 sec)

請(qǐng)注意所有MySQL版本均如此,并且它不受SQL服務(wù)器模式的影響。

對(duì)于尾部填充字符被裁剪掉或比較時(shí)將它們忽視掉的情形,如果列的索引需要唯一的值,在列內(nèi)插入一個(gè)只是填充字符數(shù)不同的值將會(huì)造成復(fù)制鍵值錯(cuò)誤。

CHAR BYTE是CHAR BINARY的別名。這是為了保證兼容性。

ASCII屬性為CHAR列分配latin1字符集。UNICODE屬性分配ucs2字符集。

相關(guān)文章

  • MySQL表的CURD使用

    MySQL表的CURD使用

    文章主要介紹了MySQL數(shù)據(jù)庫(kù)操作的基本方法,包括創(chuàng)建表、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等,涵蓋了表結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)插入、查詢條件、排序、分頁(yè)、更新和刪除操作,以及聚合函數(shù)和GROUP BY子句的使用
    2025-02-02
  • 在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)

    在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)

    在同一臺(tái)機(jī)器上運(yùn)行多個(gè) MySQL 服務(wù)...
    2006-11-11
  • Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析

    這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析,設(shè)計(jì)實(shí)例代碼,具有一定參考價(jià)值。需要的朋友可以了解。
    2017-10-10
  • 正確使用MySQL update語(yǔ)句

    正確使用MySQL update語(yǔ)句

    今天我們主要向大家講述的是MySQL update 語(yǔ)句的實(shí)際用法,以及在實(shí)際操作中哪些相關(guān)的操作步驟是值得我們大家注意的。
    2015-08-08
  • Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型

    Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型

    這篇文章主要介紹了Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型,數(shù)據(jù)庫(kù)索引是?mysql?數(shù)據(jù)庫(kù)中重要的組成部分,是數(shù)據(jù)庫(kù)查詢數(shù)據(jù)速度提升的關(guān)鍵,本文將介紹數(shù)據(jù)庫(kù)索引的一些內(nèi)容,下文更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • hive從mysql導(dǎo)入數(shù)據(jù)量變多的解決方案

    hive從mysql導(dǎo)入數(shù)據(jù)量變多的解決方案

    這篇文章主要介紹了hive從mysql導(dǎo)入數(shù)據(jù)量變多的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • mysql登錄警告問題的解決方法

    mysql登錄警告問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql登錄警告問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL數(shù)據(jù)庫(kù)存儲(chǔ)過程和事務(wù)的區(qū)別講解

    MySQL數(shù)據(jù)庫(kù)存儲(chǔ)過程和事務(wù)的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于MySQL數(shù)據(jù)庫(kù)存儲(chǔ)過程和事務(wù)的區(qū)別講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL 如何分析查詢性能

    MySQL 如何分析查詢性能

    這篇文章主要介紹了MySQL 如何分析查詢性能,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-05-05
  • MySQL最佳實(shí)踐之分區(qū)表基本類型

    MySQL最佳實(shí)踐之分區(qū)表基本類型

    這篇文章主要給大家介紹了關(guān)于MySQL最佳實(shí)踐之分區(qū)表基本類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

山丹县| 云安县| 马龙县| 黄平县| 和顺县| 无锡市| 土默特右旗| 舒兰市| 池州市| 延吉市| 朝阳县| 彰化县| 芜湖县| 岗巴县| 晴隆县| 监利县| 常宁市| 闽清县| 建德市| 涿州市| 高台县| 荥经县| 政和县| 土默特左旗| 菏泽市| 平谷区| 通海县| 南宫市| 商河县| 伽师县| 怀仁县| 涡阳县| 海南省| 东乡| 安岳县| 土默特左旗| 岳普湖县| 山西省| 海南省| 井陉县| 邵东县|