mysql中文字符存储_mysql定义汉字存储类型

mysql手册上说:

在MySQL 5.x版本中,CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。GBK内码的情况下,一个汉字占两个字节,但是在UTF-8内码的情况下,一个汉字需要占用三个字节。

什么是字符?

百度百科里说:

字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节,2个数字为一个字节。例如在VB中求字符串的长度时,len(str(1234))=4,len(1234)=2。

字符是可使用多种不同字符方案或代码页来表示的抽象实体。例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字节序列。公共语言运行库使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)表示字符。

针对公共语言运行库的应用程序使用编码将字符表式形式从本机字符方案映射至其他方案。应用程序使用解码将字符从非本机方案映射至本机方案。

电脑和通讯设备会使用字符编码的方式来表达字符。意思是指,会将一个字符指定给某个东西。传统上,是代表整数量的位元序列,如此,则可透过网络来传输,同时亦便于储存。两个常用的例子是ASCII和用于统一码的UTF-8。根据谷歌的统计,UTF-8是目前最常用于网页的编码方式。[1]相较于大部分的字符编码把字符对应到数字或位元串,摩斯密码则是使用不定长度的电子脉冲的序列来表现字符。

什么是字节?

字节,英文名称是Byte。Byte是Binary Term的缩写。一个字节代表八个比特(bit)。它是通常被作为计算机信息计量单位,不论被存储数据的类型为何。它也是程序设计语言里不可缺少的基本数据类型——整数。

Byte(字节)可被缩写成B,例如MB表示Megabyte;Bit(比特)可被缩写成b,例如Mb表示Megabit。

那么如果我们想定义最大能存储10个汉字的字段,该怎么定义呢?

有了上面的说明,应该很明了了char(10)或者varchar(10)。我们来验证一下:

CREATETABLE`t1` (

`str`varchar(10)DEFAULTNULL) ENGINE=MyISAMDEFAULTCHARSET=utf8;

向表中插入下列数据:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

insertinto`t1`(`str`)values('一二三四五六七八九十');insertinto`t1`(`str`)values('一二三四五六七八九十十一');insertinto`t1`(`str`)values('abcdefghijklmnopqrst');insertinto`t1`(`str`)values('1234567890123456');

我们来查看下结果:

52937c662c1039cf0ca701ab78ef3fde.png

由此可以印证上面说的内容,而且如果超出了定义的范围,mysql会自动截短,我们在实际应用中应该注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值