如何区别char与varchar?

1、varchar与char两个数据类型用于存储字符串长度小于255的字符,MySQL5.0之前是varchar支持最大255。比如向一个长度为40个字符的字段中输入一个为10个字符的数据。使用varchar取为10个字符;使用char取为40个字符。

2、varchar占用更少的存储空间,拥有额外1-2个字节存储长度(比如:列长度<=255时,varchar(255)会占用256个字节存储空间加1,varchar(256)会占用258个字节存储空间加2),5.0以上版本,取值或设置值都会保存字符串末尾的空格,4.1之前的版本都会把字符串末尾的空格删除掉,最大长度远大于平均长度,很少发生更新的时候适合使用varchar,因为碎片更少了。

3、char使用固定长度,保存的时候会去掉字符串末尾的空格,适合保存MD5后的哈希值或经常改变的值,因为固定的行不容易产生碎片,处理的速度比varchar快,因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡。

时间: 2024-10-18 19:52:40

如何区别char与varchar?的相关文章

数据库中char与varchar类型的区别

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,总结一下它们两者的区别,明确一下两者的区别. 1.char的长度是不可变的,而varchar的长度是可变的.也就是说,定义一个char[10]和varchar[10],如果存进去的是'abcd',那么char所占的长度依然为10,除了字符'abcd'外,后面跟六个空格,而varchar就立马把长度变为4了;取数据的时候,char类型的要用trim()去掉多余的空格,而v

char、varchar、text和nchar、nvarchar、ntext的区别

ntext: 可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符.存储大小是所输入字符个数的两倍(以字节为单位).ntext 在 SQL-92 中的同义词是 national text. ntext中存数据是按双字节存的 ,显示不了NTEXT你换一下recordset打开方式就行了 text: 服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符.当服务器代码页使用双字节字符时,存储量仍是

MYSQL, char 与 varchar的区别!

一.char 和 varchar 的区别: 1)取值范围: char:取值范围:0~255 varchar:取值范围:0~65535 2)空间占用与速度: char: 定长字符串,占用空间大,速度快,一般用于固定长度的表单提交数据存储,例如:身份账号.电话号码.密码等 varchar:变长字符串,占用空间小,速度慢 3)存储与检索数据: char:存储的数据是否达到了给定值得字节,都要占用给定值大小的空间,不足的自动用空格填充,在检索时后面的空格会被自动去裁剪掉. 如:定义  tel char(

【面试虐菜】—— Oracle中CHAR、VARCHAR的区别

1.CHAR. CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR. 存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保

char、varchar、nchar、nvarchar的区别

char.varchar.nchar.nvarchar四种类型对比: 定长或变长所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度:有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长. Unicode或非Unicode数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储.如果英文与汉字同时存在,由于占

char、varchar和nvarchar的区别

首先char.varchar和nvarchar.text.ntext都是数据库中的文本数据类型,再区分区分var前缀.n前缀的区别.而text.ntext已经普遍被varchar(MAX)和nvarchar(MAX)所替代,所以一般不使用. char 表示不可变长度,如果赋的值不够指定位数,则末尾使用空格补齐. varchar 表示可变长度,如果赋的值不够指定位数,以实际赋的值为准. nvarchar n前缀表示的是unicode编码标准.如果是带n的,则每个字符占2个字节.如果不带n的,则英文

SQL中char、varchar、nvarchar的区别

SQL中char.varchar.nvarchar的区别: char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为

Sql Server char、varchar、nchar、nvarchar的区别

(1) 定义: char: 固定长度,存储ANSI字符,不足的补英文半角空格. nchar: 固定长度,存储Unicode字符,不足的补英文半角空格 varchar: 可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化. nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零. varch

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用(转载)

一 varchar,varchar2,nvarchar,nvarchar2 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节,都是非 Unicode 字符数据,可以定义的最大长度为4000字节. nvarchar和nvarchar2的区别和上面一样,   与上面区别在于是根据Unicode   标准所进行的定义的类型(长度定义的是字符数,而不是字节数),通常用于支持多国语言类似系统的定义,可以定义的最大长度为400