美文网首页
mysql varchar类型的实际存储长度

mysql varchar类型的实际存储长度

作者: 南土酱 | 来源:发表于2019-04-14 10:30 被阅读0次

\color{blue}{如果某一项中设置的是varchar(50)}

- 对英文当然是50
- 对中文(根据不同的字符集)utf-8的中文占3个字节

\color{red}{那么,这个varchar(50)是不是只能存16个汉字了?}

  • mysql低版本之前是这样的,但是5.0以后就不是了
  • mysql varchar(50) 不管中文 还是英文 都是存50个的,但是一个表中所有varchar字段的总长度跟编码有关,如果是utf-8,那么大概65535/3,如果是gbk,那么大概65535/2.

通过查看mysql文档:
http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh/
可知:

- VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值.
- VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节。
- VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)

例如:

VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,存储需要5个字节。
VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小

- 如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。
- 如果被裁掉的字符是空格,则会产生一条警告。 
- 如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。
- 如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误。

感谢这位大佬的文章分享,从中得到了提示:
https://www.cnblogs.com/joeblackzqq/p/4633862.html

相关文章

  • mysql varchar类型的实际存储长度

    mysql低版本之前是这样的,但是5.0以后就不是了mysql varchar(50) 不管中文 还是英文 都是...

  • 数据库 varchar vs char

    char 与 varchar都是数据库存储字符串的存储类型 区别: char是固定长度存储方式,实际存储长度没达到...

  • mysql日常使用

    大纲: 一. mysql 数据类型 注意点: char和varchar使用char长度不可变,varchar长度可...

  • MySQL 字符串数据类型

    MySQL 字符串数据类型 CHAR & VARCHAR 区别: CHAR 是一种长度固定的类型;VARCHAR ...

  • MySQL 学习笔记 | 基本语法

    类型 较少文本: CHAR 存储定长数据,需要定义长度 VARCHAR 存储变长数据,需要在括号里定义长度,存储...

  • MySQL中CHAR and VARCHAR

    MySQL版本:8.0版本 CHAR和VARCHAR类型相似,但在存储、检索方式、最大长度和是否保留末尾空格四个方...

  • Mysql char varchar text

    1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其...

  • 数据类型:varchar和char区别及使用场景

    varchar存储MySQL的字符串类型数据。 1 varchar 1.1 一些说明 MySQL数据的规定:一行数...

  • mysql练习题3

    **问题:**MySQL中的varchar和char有什么区别? 有三种区别:长度,效率,存储 1.长度 char...

  • SpringBoot + Mybatis + PostgreSQ

    继 上篇博客的遗留问题:MySQL数据库,存储类型是VARCHAR(255),很容易超出上限。而且在实际项目中使用...

网友评论

      本文标题:mysql varchar类型的实际存储长度

      本文链接:https://www.haomeiwen.com/subject/hcljwqtx.html