mysql中char、varchar、nvarchar区别

可变长度的Unicode字符数据,最大长度4000个字符。字节的存储大小是所输入字符个数的两倍。char的存储速率比varchar要高,因为varchar要去计算输入字符的长度。但是空间的利用率上varchar要比char更好。我们知道Unicode编码对英文和中文字符都是用两个字节表示,nvarchar一般用来存储中文 ,存储英文的时候数量上会...
mysql中char、varchar、nvarchar区别
mysql 中 char 、 varvhar 、 nvarchar 都是用来 存储字符串 的,只是他们的存储方式不一样。

固定长度的非Unicode字符数据,最大长度8000个字符。例:char(8) 输入的字符小于8时,后面用空格补齐,输入的字符大于8时,截取前8个字符。

可变长度的非Unicode字符数据,最大长度8000个字符。例:varchar(8) 存储的字符实际上就是你所输入的字符。但要在总长度上加1字符,用来记录其字节的长度。

可变长度的Unicode字符数据,最大长度4000个字符。字节的存储大小是所输入字符个数的两倍。

char的存储速率比varchar要高,因为varchar要去计算输入字符的长度。但是空间的利用率上varchar要比char更好。

我们知道Unicode编码对英文和中文字符都是用两个字节表示,nvarchar一般用来存储中文 ,存储英文的时候数量上会有所损失。

建议纯英文和数字用char/varchar,有中文使用nvarchar。

对于 MyISAM 存储引擎的表,尽量使用 char ,对于经常需要修改而形成碎片的myisam数据表更是如此,它的缺点是占用磁盘空间。

对于 InnoDB 存储引擎的表,尽量使用 varchar ,因为它的数据存储格式对固定长度的格式和可变长度的格式不加以区分,所以char会比varchar占用更多存储空间,从减少空间占用和磁盘I/O角度看,使用varchar更好。

关于varchar还有一个问题,varchar可以自适应存储空间,那varchar(20)和varchar(1000)存储都是一样的,那每次设计越大就好,免得以后不够用,这个观点是错的,因为mysql会把表信息放进内存中(查询第一次后就缓存了),这时内存的申请是按照固定长度来的,varchar很大,申请的内存也会越大,所以还是按需设值。

1、 存储很短的信息的时候应该用char,例如门牌号:104,因为varchar还会再多一个字节记录长度。

2、 频繁改变的字段应该用char,因为每次修改varchar都会重新计算长度,而这些char不用。

3、 大数据量(多行)提取时varchar的磁盘I/O消耗更低,意味着varchar在综合查询性能上比char更好。

4、 存储数据有中文时,有用nvarchar。2022-07-08
mengvlog 阅读 9 次 更新于 2025-07-20 08:07:35 我来答关注问题0
  •  湖北倍领科技 char和varchar2区别在哪

    1、char的长度是不可变的,而varchar的长度是可变的 字段b:类型char(10), 值为:abc,存储为:abc (abc+7个空格)字段d:类型varchar(10), 值为:abc,存储为:abc (自动变为3个的长度)2、超出长度自动截取 字段c:类型char(3), 值为:abcdefg,存储为:abc(defg自动删除)...

  •  文暄生活科普 varc是什么?

    VARC是一个数据类型,通常用于存储字符信息,特别适用于不确定长度的字符串。VARCHAR的名称来源于"可变长度字符",其定义中括号内的数字(如VARCHAR(50))表示该类型最多可以容纳50个字节的存储空间。与CHAR类型相比,VARCHAR更为灵活,因为它允许存储的字符串长度可以根据实际需要变化,直到达到指定的最大...

  • 这段代码使用了MySQL C API,首先初始化MySQL连接,然后连接到数据库。接着,创建一个可以执行SQL语句的语句对象,并准备执行一条插入语句。插入语句包括两个参数,即name和created_date。在绑定这两个参数的值之前,需要先将它们定义为MYSQL_BIND对象。对于字符串类型的参数,可以直接将其指针和长度赋值给...

  •  黑科技1718 数据库函数有哪些?

    因数据库不同有不同的函数,以oracle为例:常用的有单条语句作用的函数:destinct(去除重复行),to_char(转换自符串),to_date(日期格式函数),sumstr(截取自符串),lower(将字母转换为小写),upper(将字母矗换为小写),char(将数字转换为字符),ascii(求字符的ascii码)等函数; 组函数:min(求最小值),max(求最大...

  •  科技猕猴桃 2017年12月计算机二级MySQL模拟试题及答案(3)

    2017年12月计算机二级MySQL模拟试题及答案(3)一、选择题 1、在MySQL中,通常使用___语句来指定一个已有数据库作为当前工作数据库。A.USING B.USED C.USES D.USE 2、下列___类型不是MySQL中常用的的数据类型。A.INT B.VAR C.TIME D.CHAR 3、可用于从表或视图中检索数据的SQL语句是___。A....

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部