首頁 資料庫 mysql教程 MySQL中VARCHAR和CHAR格式数据的区别

MySQL中VARCHAR和CHAR格式数据的区别

Jun 07, 2016 pm 02:58 PM
char m varchar

CHAR与VARCHAR类型类似,但它们保存和检索的方式不同。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列删除了尾部的空格。通过下面的例子说明差别:

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类型

MySQL InnoDB存储引擎锁机制实验

InnoDB存储引擎的启动、关闭与恢复

MySQL InnoDB独立表空间的配置

MySQL Server 层和 InnoDB 引擎层 体系结构图

InnoDB 死锁案例解析

MySQL Innodb独立表空间的配置

本文永久更新链接地址

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

AITO旗下問界M9全景智慧旗艦SUV即將登場 AITO旗下問界M9全景智慧旗艦SUV即將登場 Sep 26, 2023 pm 02:41 PM

AITO旗下問界M9全景智慧旗艦SUV即將登場

mysql中varchar類型如何實現日期進行比較、排序等操作 mysql中varchar類型如何實現日期進行比較、排序等操作 May 31, 2023 pm 01:49 PM

mysql中varchar類型如何實現日期進行比較、排序等操作

mysql中char和varchar有什麼差別 mysql中char和varchar有什麼差別 Sep 04, 2023 pm 02:16 PM

mysql中char和varchar有什麼差別

C語言中的關鍵字:go是其中之一嗎? C語言中的關鍵字:go是其中之一嗎? Mar 15, 2024 am 11:15 AM

C語言中的關鍵字:go是其中之一嗎?

數字虛擬貨幣是什麼?數字虛擬貨幣在哪裡購買? 數字虛擬貨幣是什麼?數字虛擬貨幣在哪裡購買? Feb 14, 2025 pm 05:06 PM

數字虛擬貨幣是什麼?數字虛擬貨幣在哪裡購買?

CentOS7部署cicd服務之Jenkins CentOS7部署cicd服務之Jenkins Feb 20, 2024 am 08:30 AM

CentOS7部署cicd服務之Jenkins

極摩客新品發表:M3與M4迷你主機強勢登場! 極摩客新品發表:M3與M4迷你主機強勢登場! Aug 13, 2023 pm 03:45 PM

極摩客新品發表:M3與M4迷你主機強勢登場!

華為智慧汽車問界M7:九月全新亮相,駕駛體驗質的提升! 華為智慧汽車問界M7:九月全新亮相,駕駛體驗質的提升! Aug 22, 2023 am 09:13 AM

華為智慧汽車問界M7:九月全新亮相,駕駛體驗質的提升!

See all articles