Mysql varchar 字节长度

1.我们经常 mysql创建 varchar(20)  name这个 20长度 究竟是表示的字符数还是字节数?根编码字符集又有没有关系?

首先 mysql 5.X 以上的版本的 定义中 表示的字符长度,如上varchar(20)你既可以添加20个英文字符,也可以添加二十个中文字符。 表示的字符长度

mysql 4.X 的版本表示的是字节长度,会根据字符集转变 内容字节长度存储。

2.关于 int(2) 中的2  ,表示的并非是int类型只能输入2位数字,而是只能显示2位数字范围,可以添加11位的int的任何数字。

3.mysql 5.X以上版本  存储时 char最大255字节,这个和字符集是否有关系?

本人测试没有关系,字符集是GBK或者UTF-8在char(255)下都可已添加255个字符(字母或者汉字或者都有)。

------------------------

1、限制规则 

字段的限制在字段定义的时候有以下规则: 
a) 存储限制 
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。 
b) 编码长度限制 
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766; 
  字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。 
  对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。 
  若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。 
c) 行长度限制 
   导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示 
  ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to    change some columns to TEXT or BLOBs。 
2、计算例子 
  举两个例说明一下实际长度的计算。 
a) 若一个表只有一个varchar类型,如定义为 
create table t4(c varchar(N)) charset=gbk; 
则此处N的最大值为(65535-1-2)/2= 32766。 
减1的原因是实际行存储从第二个字节开始'; 
减2的原因是varchar头部的2个字节表示长度; 
除2的原因是字符编码是gbk。 


b) 若一个表定义为 
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8; 
则此处N的最大值为 (65535-1-2-4-30*3)/3=21812 。(一行长度限制)
减1和减2与上例相同; 
减4的原因是int类型的c占4个字节; 
减30*3的原因是char(30)占用90个字节,编码是utf8。 

如果被varchar超过上述的b规则,被强转成text类型,则每个字段占用定义长度为11字节,当然这已经不是“varchar”了。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网上订餐python_来自美国网上订餐网站的创新

美国网上订餐网站的创新:小服务半径产生大价值来源:站长网 作者:扬扬做为一个上班族,尤其是从事it行业的白领阶层,整日对着电脑键盘敲敲打打,讲究的是效率,而每天中午乃至晚上考虑吃些什么却是让人极其头疼的事。去哪里…

PHP学习方向-进阶2(三)

实践篇 给定二维数组,根据某个字段排序如何判断上传文件类型,如:仅允许 jpg 上传不使用临时变量交换两个变量的值 $a1; $b2; > $a2; $b1; strtoupper 在转换中文时存在乱码,你如何解决?php echo strtoupper(ab你好c…

Spring的@Autowired和@Resource

Autowired 当Spring发现Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。 必须确保该类型在IOC容器中只有一个对象;否则报错。 Resource1、Resource后面没有任何内…

关于xml文件 xsi:schemaLocation

原文连接&#xff1a;https://www.jianshu.com/p/7f4cbcd9f09f ------------------------------------------------------相信很多人对xml 头上一大堆得东西都是拿来主义&#xff0c;copy过来就行了&#xff0c;并不理解那是什么意思先来一段<?xml version"1.0" …

ES6部分特性小结

前言 踩着前人的肩膀&#xff0c;努力前行。参考了很多前人的文章。 1.变量声明const和let es6之前声明变量只能用var&#xff0c;var的特点是无论声明在何处&#xff0c;都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部) function test(){if(false){var name …

java 顺序栈_Java实现顺序栈

一、分析栈是限定仅在表的一端进行插入或删除操作的线性表&#xff0c;对于栈来说&#xff0c;操作端称为栈顶&#xff0c;另一端则称为栈底&#xff0c;栈的修改是按照后进先出的原则进行的&#xff0c;因此又称为后进先出的线性表。顺序栈是指利用顺序存储结构实现的栈&#…

Spring IO platform

什么是Spring IO PlatformSpring IO Platform&#xff0c;简单的可以认为是一个依赖维护平台&#xff0c;该平台将相关依赖汇聚到一起&#xff0c;针对每个依赖&#xff0c;都提供了一个版本号&#xff0c;这些版本对应的依赖都是经过测试的&#xff0c;可以保证一起正常使用。…

二十多岁不信,三十多岁却深信不疑的道理

1.那些年偷的懒、荒废的时间、败坏的身体&#xff0c;都&#xff01;得&#xff01;还&#xff01; 年轻的时候心比天高&#xff0c;以为自己能干出一番大事业&#xff0c;后来慢慢意识到自己只是个普通人。 2.不和讲道理。 3.原来被嗤之以鼻的门当户对是有一定道理的。 4.以貌…

javascript === 和==的区别

原文链接&#xff1a;https://blog.csdn.net/seven_amber/article/details/62889290 -------------------------------------------------------------------- 用于比较 判断 两者相等 在比较的时候可以转自动换数据类型用于严格比较 判断两者严格相等 严格比较…

authentication java_HTTP基本认证(Basic Authentication)的JAVA实例代码

大家在登录网站的时候&#xff0c;大部分时候是通过一个表单提交登录信息。但是有时候浏览器会弹出一个登录验证的对话框&#xff0c;如下图&#xff0c;这就是使用HTTP基本认证。下面来看看一看这个认证的工作过程:第一步:客户端发送http request 给服务器,服务器验证该用户是…

Python数据分析入门(四)

前言上期给大家分享了关于豆瓣5500部电视剧的分析&#xff0c;那么这次我们就给吃货们带来一些福利&#xff0c;此次我们的主题为“寻找最好吃的火锅”。进入主题之前&#xff0c;先给所有的吃货们带来一桌美味的火锅&#xff0c;作为各位看官的前菜。数据采集此次我们采集的是…

微信开发者工具下载

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

java continue goto_Java中goto和break、continue实现区别

goto 关键字很早就在程序设计语言中出现。事实上&#xff0c;goto 是汇编语言的程序控制结构的始祖&#xff1a;“若条件 A&#xff0c;则跳到这里&#xff1b;否则跳到那里”。若阅读由几乎所有编译器生成的汇编代码&#xff0c;就会发现程序控制里包含了许多跳转。然而&#…

Linux VirtualBox安装及使用指南

2019独角兽企业重金招聘Python工程师标准>>> VirtualBox是一款虚拟机软件。虽然它的功能并不及VMware Workstation Pro&#xff0c;但它对开源精神的坚持使得它在Linux中依然深受欢迎。 唯一难以令人接受的是&#xff0c;VirtualBox的安装步骤较为复杂。不过&#x…

java web vm_java web .vm文件??

在JavaWeb项目中有很多.vm文件&#xff0c;打开以后是类似于.NETMVC项目中的.cshtml文件的形式#if($linkList)#set($itemsOnLine0)#foreach($linkin...在Java Web项目中有很多.vm文件&#xff0c;打开以后是类似于.NET MVC项目中的.cshtml文件的形式#if($linkList)#set ($items…

Android studio gradle 无法获取 pom文件

Android studio 3.1 导入app项目后&#xff0c;gradle无法获取 pom文件 具体保存内容如下&#xff1a; Could not GET https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-g…

生产环境linux下安装两个及两个以上tomcat实践

前言: 在生产环境部署程序项目中&#xff0c;有时候由于服务器紧张或缺少服务器等原因,往往都需要安装两个及两个以上tomcat。我们需要在/etc/profile中增加tomcat的环境变量&#xff0c;然后在新增加的tomcat的bin目录下的catalina.sh中引用自己在/etc/profile中配置的环境变量…

java 内存 四_java最终化的内存保留问题(4)

四、一种代替最终化的选择在前面一节中的示例还存在一种不确定性可能&#xff1a;JVM并不能保证它在最终化队列中调用对象的终结器的顺序。而来自于所有类(应用程序&#xff0c;库&#xff0c;等等)的终结器都是被同等对待的。因此&#xff0c;一个占有大量内存或一种稀有的本地…

基于Spring Boot不同的环境使用不同的配置方法

原文路径&#xff1a;http://www.jb51.net/article/132589.htm ---------------------------------------- 默认是profile为dev&#xff0c;可以修改 spring 多文件配置&#xff1a; 1、properties文件 2、YAML文件 一、properties文件 在 Spring Boot 中&#xff0c; 多环境配…

java set方法赋值_java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?...

富国沪深用反射吧&#xff0c;然后设置setAccessible为true就可以了&#xff0c;如下&#xff1a;public class Test {private String readOnly;public String getReadOnly() {return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchField…