一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL中VARCHAR與CHAR格式數據的區別

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

2020-05-18 15:24MYSQL教程網 Mysql

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
2
3
4
5
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;

結果如下:

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

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

建議

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

總結分析:

文字字段若長度固定,如:身分證號碼,就不要用 varchar 或 nvarchar,應該用 char 或 nchar。
支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數據類型以盡量減少字符轉換問題
文字字段若長度不固定,如:地址,則該用 varchar 或 nvarchar。除了可節省存儲空間外,存取硬盤時也會較有效率

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99精彩免费观看 | 色愉拍亚洲偷自拍 | 欧美在线视频免费播放 | 欧美精品超清在线播放 | 掰开逼操 | 亚洲欧美国产精品完整版 | 亚洲、国产综合视频 | 深夜免费看 | 精品久久久麻豆国产精品 | 狠狠狠地啪香蕉 | 午夜在线观看视频 | 国产精品亚洲精品日韩已满 | 好吊操这里有精品 | 婷婷色在线 | 1717国产精品视频免费 | 午夜性色一区二区三区不卡视频 | 亚洲精品免费观看 | 男人日女人的b | www.尤物在线 | 日韩无砖2021特黄 | 欧美极品摘花过程 | 欧美精品日韩一区二区三区 | 成人网中文字幕色 | 亚洲精品永久免费 | 国产xx肥老妇视频奂费 | 日本精工厂网址 | 四虎影院com | 出差被灌醉绝伦的上司日本 | 色综合色狠狠天天久久婷婷基地 | 国产精品视频一区二区三区经 | 国产区久久 | 久久精视频 | 性xxxxbbbbxxxx中国 | 日本大学jalapsiki | 校园纯肉H教室第一次 | 秋霞黄色大片 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 肥胖女性大bbbbbb视频女厕 | 99精品久久久久久 | 欧洲喷浆乌克兰 | 狠狠色婷婷丁香六月 |