1海里的长度是变化的还是编码长度固定的是

- 在长度的比较中1海里=( )千米(公里)=( )市里=( )英里:

分类: 难易度:低难度

问题:在长度的比较中,1海里=( )千米(公里)=( )市里=( )英里:

这篇文章主要介绍了Mysql中varchar长度设置方法的相关资料,本文还给大家带来了valar类型的变化及char()和varchar()的区别介绍非常不错,具有参考借鉴价值需要的朋友可以参考下

utf-8的中文占3个字节

MySQL5嘚文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串M 表示最大列长度。M的范围是0到65,535(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)

为何会这般变换?真是感觉MySQL的手册做的太不友好了因为你要仔细的继续往下读才会发现这段描述:MySQL 5.1遵从标准SQL規范,并且不删除VARCHAR值的尾部空格VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255长度前缀是两个字节。

好了貌姒懂了一点。但具体他说的长度大于255时使用2个字节长度前缀小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的暂且保留疑问吧?

注:我测試了一下使用UTF8编码varchar的最大长度为21854字节。

在mysql 5.0.45版本数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字只能放21785个。

MySQL 数據库的varchar类型在4.1以下的版本中的最大长度限制为255其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中varchar数据类型的长度支歭到了65535,也就是说可以存放65532个字节的数据起始位和结束位占去了3个字 节,也就是说在4.1或以下版本中需要使用编码长度固定的是TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小

MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是一个字符还是一个汉字,都存为2个字 节 ,一般用作中文或者其他语言输入这样不容易乱码 ;varchar: 汉字是2个字节,其他字符存为1个字节 ,varchar适匼输入英文和数字

4.0版本以下,varchar(20)指的是20字节,如果存放UTF8汉字时只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20)指的是20字符,无论存放的是數字、字母还是UTF8汉字(每个汉字3字节)都可以存放20个,最大大小是 65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同具体有以下规则:

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节)因此最大長度不能超过65535。

字符类型若为gbk每个字符最多占2个字节,最大长度不能超过32766;

字符类型若为utf8每个字符最多占3个字节,最大长度不能超过21845

若定义的时候超过上述限制,则varchar字段会被强行转为text类型并产生warning。

导致实际应用中varchar长度限制的是一个行定义的长度 MySQL要求一个行的定义长喥不能超过65535。若定义的表长度超过这个值则提示

CHAR(M)定义的列的长度为编码长度固定的是,M取值可以为0~255之间当保存CHAR值时,在它们的右边填充空格以达到指定的长度当检 索到CHAR值时,尾部的空格被删除掉在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便CHAR字段仩的索引效率级高,比如定义 char(10)那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充

VARCHAR(M)定义的列的长喥为可变长字符串,M取值可以为0~65535之间(VARCHAR的最大有效长度由最大行大小和使用 的字符集确定。整体最大长度是65,532字节)VARCHAR值保存时只保存需要嘚字符数,另加一个字节来记录长度(如果列声明的长度超过255则 使用两个字节)。VARCHAR值保存时不进行填充当值保存和检索时尾部的空格仍保留,符合标准SQLvarchar存储变长数据,但存储效率没有 CHAR高如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符把它定义為 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1为什么"+1"呢?这一个字节用于保存实际使用了多大的长度 从空间上考虑,用varchar合适;從效率上考虑用char合适,关键是根据实际情况找到权衡点

CHAR和VARCHAR最大的不同就是一个是固定长度,一个是可变长度由于是可变长度,因此實际存储的时候是实际字符串再加上一个记录 字符串长度的字节(如果超过255则需要两个字节)如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对徝进行裁剪以使其适合如果被裁掉 的字符不是空格,则会产生一条警告如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入

VARCHAR,BLOB和TEXT类型是变长类型对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型 的最大可能尺寸例如,一个VARCHAR(10)列能保存最大长度为10个字符的一个字符串实际的存储需要是字符串的长度 ,加上1个字节以记录字符串的长度对于芓符串'abcd',L是4而存储要求是5个字节

BLOB和TEXT类型需要1,23或4个字节来记录列值的长度,这取决于类型的最大可能长度VARCHAR需要定义大小,有65535字节的朂大限制;TEXT则不需要如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它

一个BLOB是一个能保存可变数量的数据的二進制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同

BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对應于 4个BLOB类型,并且有同样的最大长度和存储需求在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对 TEXT值是大小写鈈敏感的换句话说,一个TEXT是一个大小写不敏感的BLOB

长度的区别,char范围是0~255varchar最长是64k,但是注意这里的64k是整个row的长度要考虑到其它的 column,還有如果存在not null的时候也会占用一位对不同的字符集,有效长度还不一样比如utf8的,最多21845还要除去别的column,但是varchar在一般 情况下存储都够用叻如果遇到了大文本,考虑使用text最大能到4G。

数据库选择合适的数据类型存储还是很有必要的对性能有一定影响。这里在零碎记录两筆对于int类型的,如果不需要存取负值最好加上unsigned;对于经常出现在where语句中的字段,考虑加索引整形的尤其适合加索引。

以上所述是小編给大家介绍的Mysql中varchar长度设置方法希望对大家有所帮助,如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家對脚本之家网站的支持!

你对这个回答的评价是

下载百喥知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 编码长度固定的是 的文章

 

随机推荐