mysql中char和varchar有什么区别?

作者&投稿:皇廖 (若有异议请与网页底部的电邮联系)
mysql中char和varchar有什么区别?~

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型

他们的存储方式和数据的检索方式都不一样。
数据的检索效率是:char>varchar>text
空间占用方面,要具体情况具体分析了。
CHAR(M)M个字节,0 <=M<= 255
VARCHAR(M)L+1个字节,其中L<=M且0 <=M<= 65535
TEXTL+2个字节,其中L< 216
Char为定长,varchar,text为变长
Char在保存的时候,后面(右边)会用空格填充到指定的长度,在检索的时候后面的空格会去掉,所以检索出来的数据需要再用什么trim之类的函数去处理。(与sql server可能有些不同)
Varchar在保存的时候,不进行填充。当值保存和检索时尾部的空格仍保留。
TEXT列不能有默认值,存储或检索过程中,不存在大小写转换.
当存储的字符超过他们定义的长度时候,如果不是在sql服务器的严格模式下,都会自动截取合适的字段存储,而不会出现错误。但是,如果是中文的话同样要报错误:)比如定义char(4),然后insert (‘c哈哈’).
注意一点的,Char,Varchar不像数值类型,有系统默认长度,所以必须在括号里定义长度,可以有默认值
text不可以写默认值,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

在MySQL中用来判断是否需要进行对据列类型转换的规则

1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型

mysql中char与varchar的区别分析

1.都是用来存储字符串的,只是他们的保存方式不一样。

2.char有固定的长度,而varchar属于可变长的字符类型。



varchar通常用于保存可变长字符串。在磁盘存储数据时,它只会占用实际使用到的空间,因此对性能有提升。vachar在保存数据时会额外使用1个或者2个字符,用于记录列的长度,如果列内字节长度小于等于255就使用1个字节记录,如果是大于255则使用2个字节记录。因为varchar是变长的,所以update操作可能会产生碎片,从而使列的长度变长,mysql还需要做额外的工作处理。其实varchar(5)和varchar(255)存储'hello'所用的空间是一样的,但是我们在实际使用的时候,列的长度还是越短越好,原因是更长的列会占用更多的内存,Mysql通常会分配固定大小的内存块保存内部值。这个在内存临时表做排序和操作的时候会变得很糟糕,在磁盘临时表进行排序时也会特别的糟糕。
再说一下char,对比下你就会明白。
char类型适用于存储固定长度的数据。比如说MD5后的密码,这个长度就是固定的32位,很适合使用char类型。因为char类型是固定长度,因此在修改数据时也不容易产生碎片。他在磁盘上的存储空间是固定的,如果存储的数据长度不够,会在右侧以空格的方式补充,方便进行比较。对于非常短的列(单字节字符集),char的效率比varchar要高,因为char不需要使用额外的字节去记录长度。
使用什么样的类型存储数据,要根据实际情况而定,最好是对各种存储类型都有一定的了解。
纯手打,希望可以帮到你,共同进步。:)

char固定长度,是说占用空间的长度一定,而不是必须有那么多值。你输入两个字符,第三个字符空着,但是必须不能被其它字符占用。
varchar就可以啊!没有占用到那么长,就可以少给她分配空间,从而达到介绍资源的目的!

在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节,这个说法是错的。当 M <= 255 的时候是用一个字节即可记录其长度,当 M>255 的时候则需要2个字节。因为 1 个字节只能记录变长长度为 0~255,而如果变长长度为 32767 这种大于 255 的值的时候,是没有办法单单用1个字节记录下来的。


MySQL数据类型char与varchar中数字代表的究竟是字节数还是字符数_百度...
4.0版本以下,char和varchar,指的是字节;5.0版本以上,char和varchar,指的是字符.

mysql中定义表字段的national修饰符是做什么用的解决方法
char是character的简写。national char(或其等效短形式nchar)是标准的定义char列应使用 默认字符集的sql方法。这在mysql中为默认值。

int(11)最大长度是多少,MySQL中varchar最大长度是多少(转)
int(11)最大长度是多少,MySQL中varchar最大长度是多少?int(11)最大长度是多少?在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。这个11代表显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度...

mysql中tinytext与text的区别是什么?
。二、作用不同 1、tinytext:存储二进制数据,区分大小写。2、text:存储二进制数据,不区分大小写。三、适用不同 1、tinytext:适用于存储对大小写要求严格的二进制数据。2、text:适用于存储长度很长的二进制数据。参考资料来源:百度百科-SQL数据类型 参考资料来源:百度百科-MySQL数据库 ...

mediumint 在mysql 中是什么类型
mysql的字段类型大体来讲分为int、text、varchar、char、blog等几种,而各自的类型中又划分了不同的字符数的类型,mediumint是MySQL数据库中的一种数据类型,比INT小,比SMALLINT大。字节(byte),1个字节等于8个位(bit),一个bit存储0或者1,理解这个对于理解后面的占用字节导致的存储数值的有很重要...

给char(10)输入不到十个字符时会报错吗
不会报错。char(10)是定长的,表示不管你给的什么值,都会被mysql固定保存成10个字符。如果给的字符长度小于10,那么在尾部就会自动用空格补齐;如果大于10,在严格模式(strictsqlmode)下就会报错,在非严格模式下就会对内容做自动截取操作。

Mysql如何在字段中删除和添加换行符和回车符
1、去掉mysql数据库中某字段的换行符和回车符:replace函数 UPDATE student SET name = REPLACE(REPLACE(title,CHAR(10),''),CHAR(13),'') WHERE ID = xxxxxx;注解:CHAR(10),'':将换行符CHAR(10)替换成空串,可理解为删除换行符 CHAR(13),'':将回车符CHAR(13)替换成空串,可理解为...

mysql中有数量用什么数据类型
MySQL 数据类型细分下来,大概有以下几类:数值,典型代表为 tinyint,int,bigint浮点\/定点,典型代表为 float,double,decimal 以及相关的同义词字符串,典型代表为 char,varchar时间日期,典型代表为 date,datetime,time,timestamp二进制,典型代表为 binary,varbinary位类型枚举类型集合类型 ...

mysql 数据库varchar可以存储多少个汉字和多少个数字?
phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web界面管理MySQL资料库。phpMyBackupPro也是由PHP写成的,可以透过Web界面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。另外,还有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,...

mysql中varchar(140)这个是什么意思
表示最多140个字符或者70个汉字 但是如果你放入 10个字符 他实际占用内存11个字符的位置 而如果是 char(140)也是最多140个字符 但是他占用内存一直是140字符位置~反正就是相当于一个动态的 一个固定的~

彭州市18947866967: mysql中数据类型char和varchar的区别 -
丙弦得治: char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)...

彭州市18947866967: 数据库varchar和char的区别 -
丙弦得治: 区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你...

彭州市18947866967: 数据库中char类型和varchar类型的区别 -
丙弦得治: char是定长的,比如你定义char(30),就总是占用30字节,如果你输入1个字节,也会补齐长度. varchar是变长的,定义varchar(30),如果你1字节,就只占1字节(实际会多占一点,用于记录长度等信息). 应该根据实际数据的特点来选择字段类型.

彭州市18947866967: 数据库char、varchar、nchar、nvarchar有什么区别? -
丙弦得治: char 类型是一个字节 char(8)只能存8字母 nchar 类型是双字节 nchar(8)能存8个汉字 varchar 类型是可变的、即如果 varchar(8)你只存了一个字母、在内存中只占一个字节 char 类型如果 char(8)你只存了一个字母、在内存中也占8个字节

彭州市18947866967: sql 中int nvarchar char VARchar 有什么区别
丙弦得治: INT是整数,CHAR是字符(或者文本) CHAR类型都有个最大长度,超过长度的无法保存,不够长度留空.VARCHAR也有一个最大长度,但是当数据长度不够的时候,按照实际数据长度分配空间,少浪费,但查询的时候效率有影响.

彭州市18947866967: SQL SERVER char和varchar数据类型的区别 -
丙弦得治: 数据类型区别如下: 1. char表示的是固定长度, 2. varchar表示的是实际长度的数据类型 比如:如果是char类型,当你输入字符小于长度时,后补空格;而是varchar类型时,则表示你输入字符的实际长度

彭州市18947866967: SQL server中的char(10),nchar(10),varchar(10),nvarchar(10)分别是什么意思? -
丙弦得治: 首先,带n的和不带n的,只是输入字符的全角和半角占字符的问题. char(10)是固定10个字符位子,比如你输入2个字符,它返回的还是10个字符,多余的8个字符用空格代替了. varchar(10)是自动缩进,比如你输入2个字符,它返回的就是两个字符

彭州市18947866967: sql server中创建表时各个数据类型时什么意思?? -
丙弦得治: 我学这个时学了sql数据库9大数据类型,但其中有一部分我到现在也不明白究竟什么时候用,因为后来很少用到,我就给你列举一下那些常用的吧! 1.字符型数据: char\varchar\text 这几种数据类型都是用来装字符串的 char 固定长度存储数据 ...

彭州市18947866967: sql中CHAR后面的数字可以随便写吗? -
丙弦得治: 一楼的说法不太准确. 1.char和varchar各有优缺点.char是定长,实际长度超过指定长度是,右边被截去,不足时右边补空格;varchar是变长,数字表示允许的最大长度,在储存时用另外一个字节来保存实际的长度. 2.一般来说,char确实会导致一...

彭州市18947866967: 数据库里的var.什么什么有什么作用 -
丙弦得治: var...开头的数据类型用来保存可变长度的数据的,以VARCHAR型和CHAR举例来说:假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES.当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度. 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符.字符串的后面会被附加多余的空格.VARCHAR型字段较突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间.当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要.不知这么解释能否明白?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网