varchar(n),n表示什么

  • MySQL5.0.3之前varchar(n)这里的n表示字节数
  • MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个

VARCHAR字段限制原因

字段的限制在字段定义的时候有以下规则:

  • 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. ”

举两个例说明一下实际长度的计算。

  • 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-303)/3=21812
    减1和减2与上例相同;
    减4的原因是int类型的c占4个字节;
    减30
    3的原因是char(30)占用90个字节,编码是utf8。
    如果被varchar超过上述的b规则,被强转成text类型,则每个字段占用定义长度为11字节,即字段不再是“varchar”。

转载于:https://www.cnblogs.com/one-villager/p/8554192.html

MySQL字段类型VARCHAR相关推荐

  1. php数据库字段类型,mysql 字段类型说明

    mysql 字段类型说明 更新时间:2007年04月27日 00:00:00   作者: MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用 ...

  2. 原 hibernate与mysql字段类型对应关系

    原 hibernate与mysql字段类型对应关系 发表于8个月前(2015-04-17 08:56)   阅读(1102) | 评论(0) 2人收藏此文章, 我要收藏 赞0 1月16日厦门 OSC ...

  3. MySQL字段类型解析

    前言: 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇 ...

  4. MySQL字段类型详解

    MySQL字段类型详解 2009-01-05 09:25 来源:泡菜博客 0个评论 分享文章 A- A+ 百度权重查询 词库网 网站监控 服务器监控 SEO监控 Swift编程语言教程 MySQL支持 ...

  5. MySQL 字段类型解析

    MySQL字段类型 MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 字符串 char和varchar: 1.char(n) 若存入字符数小于n,则以空格补于 ...

  6. MySQL字段类型与Java中类型的对应

    MySQL字段类型与Java中类型的对应 在设计数据的时候,需要与Java里的类型进行匹配,我自己在设计过程中参考的内容如下 编号 类型名称 显示长度 数据库类型 Java类型 备注/描述 0 VAR ...

  7. MySQL字段类型汇总及用法(超详细)

    /********************************FileName: MySQL字段类型汇总及用法*Author: weibo*Version: v1.0*Date: 2016.5.1 ...

  8. MySQL字段类型对应Java字段

    前言 MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的: 一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.Strin ...

  9. 详解mysql字段类型int(4) int(10)等区别

    一.mysql字段类型大致可以分为:数值.日期/时间.字符串 数值类型:tinyint,smallint,mediumint,int/integer,bigint,float,double,decim ...

最新文章

  1. python flask实现博客系统_基于Flask的博客网站设计与实现
  2. SAP BSP和JSP页面里UI元素的ID生成逻辑
  3. 使用GetDIBts/SetDIBits高速逐点处理 from http://blog.sina.com.cn/s/blog_552ad2090100e3eu.html...
  4. java实现二叉查找树_二叉查找树BST----java实现(示例代码)
  5. 三星S10指纹识别玩脱了!多家金融APP关闭指纹登陆功能
  6. 走进markdown
  7. 西瓜书+实战+吴恩达机器学习(十七)规则学习(序贯覆盖)
  8. Maven技巧和窍门:高级Reactor选项
  9. php增加html元素,使用php将appendChild($ element)添加到现有的html元素中
  10. maya前台渲染_maya前台渲染MEL
  11. 猿创征文|C++软件开发值得推荐的十大高效软件分析工具
  12. 专业模拟飞行11 linux,飞行模拟器 FlightGear 2019.1,Ubuntu PPA安装
  13. Java拦截器和过滤器
  14. 影子系统PowerShadow v2.6.0511中文破解版
  15. 中国智能POS终端行业市场供需与战略研究报告
  16. 网卡MAC地址是什么?
  17. c语言.jpg图片转成数组_图片可以转Word吗?教你两种方法轻松转换
  18. Android计步器获取手机步数
  19. 如何用AE导出程序员可以复用的Json代码
  20. 制作“大白菜”启动U盘教程

热门文章

  1. 【OpenSSL 之五】:HMAC算法分析
  2. 智慧(灯杆)路灯建设有可能会掀起城市革命,从而点亮新型智慧城市
  3. 没有链克口袋,但我一样玩游戏掘金
  4. 假定某计算机的cpu,43.(11分)假定某计算机的CPU主频为80 MHz,CPI为4
  5. WordPress让插件随主题一同启用
  6. RFI/RFP/RFQ
  7. 中学计算机竞赛教程,全国中小学信息技术课程教学大赛获奖案例初中信息技术八年级-设置自定义动画动作路径...
  8. 五分钟学会一篇期末学生学籍管理系统
  9. 优思学院|利用Excel进行双样本t检验
  10. jupyter 中重新 import 模块