位置: 编程技术 - 正文

Mysql中varchar长度设置方法(mysql类型varchar长度)

编辑:rootadmin

推荐整理分享Mysql中varchar长度设置方法(mysql类型varchar长度),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql中varchar长度报错,mysql varchar长度限制,mysql varchar sum,mysql varchar长度设置,mysql varchar2,mysql varchar10,mysql中varchar长度报错,mysql varchar多少字节,内容如对您有帮助,希望把文章链接给更多的朋友!

如果某一项中设置的是varchar()

那么对英文当然是

那么对中文呢

utf-8的中文占3个字节

那么,这个varchar()是不是只能存个汉字了&#;

mysql varchar() 不管中文 还是英文 都是存个的

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

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

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

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

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

推想:varchar字节最大,utf8编码一个字符3个字节/3=。

补充知识:

1.varchar类型的变化

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

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

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

a) 存储限制

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

b) 编码长度限制

Mysql中varchar长度设置方法(mysql类型varchar长度)

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

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

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

c) 行长度限制

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

ERROR (): Row size too large. The maximum row size for the used table type, not counting BLOBs, is . You have to change some columns to TEXT or BLOBs。

2.CHAR(M), VARCHAR(M)不同之处

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

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

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

3. VARCHAR和TEXT、BlOB类型的区别

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

BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有字节的最大限制;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。

4.总结char,varchar,text区别

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

效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char

char和varchar可以有默认值,text不能指定默认值

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

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

MySQL动态修改varchar长度的方法 虽然这种情况不应该发生,通常像我们关系型数据库,我们应该是事先设计好,以后不能改动,但是由于之前工作的疏忽,其实说实话,也不仅仅是我

MySQL的源码安装及使用UDFs进行数据自动更新的教程 MySQL的源码安装1.安装依赖组件#yuminstallgccgcc-c++ncurses-develperl-y2.安装cmake#

MySQL 5.6 解压缩版安装配置方法图文教程(win) 希望大家喜欢MySQLforWindows解压缩版配置安装这篇教程,也希望帮助大家顺利安装MySQL。1、MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如

标签: mysql类型varchar长度

本文链接地址:https://www.jiuchutong.com/biancheng/347898.html 转载请保留说明!

上一篇:Mysql数据库中把varchar类型转化为int类型的方法(MySQL数据库中把表中的一个字段重命名)

下一篇:MySQL动态修改varchar长度的方法(如何动态修改mysql的全局参数)

  • 缴纳当月的增值税
  • 计提坏账为什么是递延所得税资产
  • 土地使用税的纳税义务人
  • 专用发票超过360天认证期怎么办?
  • 债权投资产生的利息调整包括哪些内容
  • 简易计征怎么开票
  • 营业费用和营业收入的关系
  • 叉车上牌流程需要多少时间
  • 对公账户转个人账户
  • 子母公司有连带责任吗
  • 如何申报加计抵减
  • 工程承建方给予的工期奖励如何做账?
  • 非经营性费用包括哪些内容
  • 进项税发票已经认证但对方又作废
  • 营改增后进项税相关规定
  • 收费公路通行费增值税电子普通发票
  • 广告制作费属于现代服务吗
  • 员工出差报销制度
  • 进项税额转出不交税款怎么处理
  • 在建工程二级科目待摊支出
  • 个体工商户要交附加税吗
  • 企业外籍个人子女教育补贴
  • 公司原因领不了失业保险要赔偿吗
  • 微信收入与支出是怎么算的
  • 海尔笔记本最新款
  • 在win10系统中,如何限制孩子玩原神游戏
  • 苹果电脑怎么快速
  • 企业微信api错误码
  • 工资里的其他应收款是什么
  • 应用程序无法正常启动0xc000012d
  • 网络连接错误是什么意思啊
  • php字符串操作函数
  • 所得税季度预缴怎么算
  • 公司收到医疗保障事务中心的转账
  • 招标场地费计入什么科目
  • linux中loop的含义
  • php操作文件的常用函数
  • 专项应付款转资本公积需要什么附件
  • 公章没有数字是什么情况
  • 税控盘减免税款会计分录
  • 汽车租赁业务是否属于租赁服务
  • 社会团体收取的会费是否缴纳企业所得税
  • 固定资产多少可以上市
  • 固定资产停止使用
  • 外贸企业代理出口退税给谁
  • 员工宿舍的物业费能否抵扣
  • 织梦如何使用
  • 年底全年的研发费用占比
  • 支付宝支付高速公路发票怎么打印
  • 停工损失会计分录怎么写
  • 年末未分配利润减去年初未分配利润等于什么
  • 小规模纳税人增值税申报表怎么填
  • 业务招待费进项票可以抵扣吗
  • 小规模纳税人应纳税额减征额怎么算
  • 固定资产出售通过什么科目
  • 人力资源外包服务企业
  • 小规模纳税人取得普通发票可以抵扣吗
  • 发表文章开什么发票
  • 印花税城建税教育费附加等其他税种的纳税申报
  • 土地出让金抵减增值税
  • 公司自己搭建的房子出租可以按投资性房地产吗
  • 年终奖个税计税方式
  • 法院强制执行扣完款就完事了吗
  • 企业所得税税率多少
  • 政府补贴收入确认政策
  • 红酒礼品盒批发
  • sqlserver存储过程在哪里
  • win7系统重装后没声音
  • linux软件安装在哪个文件夹
  • 红石使用基础教学
  • w8系统怎么用
  • centos7.4安装
  • win7系统更新显卡驱动后黑屏无法启动
  • linux 11
  • easyui下拉列表
  • jquery代码实现鼠标点击
  • python3正则
  • js正则 \w
  • 跨浏览器插件
  • 税务局冲红发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设