MySQL VARCHAR字段最大长度到底是多少
varchar(n),n表示什么?
MySQL5.0.3之前varchar(n)这里的n表示字节数
MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个
n最大可以是多少
MySQL行长度
MySQL要求一个行定义长度不能超过65535个字节,不包括text、blob等大字段类型,varchar长度受此长度限制,和其他非大字段加起来不能超过65535个字节.
超过以上限制则会报错:
drop table if EXISTS test1111;
create table test1111(
id char(255) null,
content varchar(21830) null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
[Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
varchar(n)占用几个字节
varchar(n)占用几个字节跟字符集有关系:
字符类型若为gbk,每个字符占用2个字节
字符类型若为utf8,每个字符最多占用3个字节
varchar最大长度可以是多少
根据字符集,字符类型若为gbk,每个字符占用2个字节,最大长度不能超过32766,字符类型若为utf8,每个字符最多占用3个字节,最大长度不能超过21845,若超过这个限制,则会自动将varchar类型转为mediumtext或longtext,例如:
drop table if EXISTS test1111;
create table test1111(
id char(255) null,
content varchar(63000) null
);
desc test1111; 结果:
CREATE TABLE `test1111` (
`id` char(255) DEFAULT NULL,
`content` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在mysql中新建数据表的时候会有长度一说,其实用建表语句建数据表的时候也有涉及
例如:
CREATE TABLE user(
uid int(4),
name varchar(255),
passward varchar(20)
birthday data
)
不知道你有没有注意这个数据类型后面的括号有什么玄机,今天看了《Mysql 5.6 从零开始学》这本书,算是把这个地方搞清楚了。
括号里的数字叫数据的宽度,我们不能一概而论,因为不同的数据类型对宽度的处理也不一样:
1、整数类型,这里显示的宽度和数据类型的取值范围是没有任何关系的,显示宽度只是指明Mysql最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。
例如上面的udi,显示的宽度是4,但是我向uid中插入100001,也是可以的,保存和显示的都会是100001
如果你不设置宽度,系统将添加默认的宽度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),这些默认的宽度是跟该类型的取值范围长度相关。
2、字符串类型,字符串类型这个宽度才真的用上了。不管是char还是varchar,宽度都定义了字符串的最大长度
例如上面的 password varchar(20),如果你输入了一个21个字符的密码,那么保存和显示的只会是前20个字符,你将丢失一个字符信息,char同理。由于varchar是变长存储的,所以实际开发中我们一般都把varchar的宽度设为最长255,反正你没用完它也不会浪费空间。
3、浮点和日期等数据类型对数据的宽度没有要求,一般也不设置,默认是0
MySQL VARCHAR字段最大长度到底是多少的更多相关文章
- Mysql VARCHAR的最大长度到底是多少
MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据 ...
- 你真的了解mysql的varchar字段的长度有多少吗?
今天在设计系统字段的时候, 发现自己对varchar还不够了解.我设了一个字段.类型为VARCHER,然后我就往里面测试性了写了东西.发现没有多少就满了.我觉得奇怪,5.5版本以上的MYSQL不是有6 ...
- Mysql 相关字段类型长度
1. Compact行记录是在MySQL 5.0时被引入的,其设计目标是能高效存放数据. 2. Redundant是MySQL 5.0版本之前InnoDB的行记录存储方式. 3. InnoDB存 ...
- MySql计算字段的长度
用户账号有用中文字符,查找所有含有中文字符的账号 SELECT member_name FROM table_member WHERE length(member_name)!=char_length ...
- mysql 对表字段进行长度截取操作
现在的问题是数据库某一个表中其中的车牌号字段有些数据多了一位,需要把它找出来然后把多的最后一位去掉..... 通过自带的length(字段名)函数把长度过长的数据过滤出来,其中,一个汉字算3个字符,一 ...
- MySQL的varchar定义长度到底是字节还是字符
相信这个问题也会困扰不少人,尤其是使用过其它数据库(如Oracle)的人,之前我也没有太在意这个问题,再加上一些书籍和网上的文章讲的不够细致,又没测试过,导致我一直理解错误.下面通过实例来解释,在开始 ...
- 修改MySQL中字段的类型和长度
MySQL修改字段类型的命令是: mysql> alter table 表名 modify column 字段名 类型; 假设在MySQL中有一个表为:address,有一个字段为city 初始 ...
- Mysql varchar大小长度问题介绍
如果被 varchar 超过上述的 b 规则,被强转成 text 类型,则每个字段占用定义长度为 11 字节,当然这已经不是 varchar 了4.0版本以下,varchar(20),指的是20字节, ...
- mysql 修改字段长度
mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 类型 ...
随机推荐
- 更改和配置本地yum源
查看yum 存放位置 [root@web01 yum.repos.d]# ll /etc/yum.repos.d/ total -rw-r--r--. root root Jun CentOS-Bas ...
- 【BZOJ3691】游行 最小可相交路径覆盖转化
因为C是不断变化的而且C是和点权相关和边权无关 所以我们可以MCMF但是MCMF的时候不能与C相关 再分析问题 我们可以认为每条路径S->T只覆盖T这个终点 因为题目中说了如果Si != Ti ...
- sql 索引的使用 转载:https://www.cnblogs.com/xiaoyangjia/p/11267191.html#mysql_performance
B-Tree索引的3个限制: 如果不是按照索引的最左列开始查找,则无法使用索引 不能跳过索引中的列.如果联合索引(a,b,c) ,如果使用条件a和c条件查询,那么只能使用索引的第一列a 如果查询中有某 ...
- 深入理解JavaScript之实现继承的7种方式
1.原型链继承 核心:将父类的实例作为子类的原型 首先,要知道构造函数.原型和实例之间的关系:构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个原型对象的指针. func ...
- Sql Server (MSSQLSERVER) 服务无法启动
北京的冬天特别干燥,大清早的一同事就和服务器擦出了爱的火花,结果没想到竟导致服务器无法开机了,这可尴尬了,代码可都在服务器上托管着呢,一会还等着上线呢,必须得修啊.他们说是主板坏了,就另外找了一台电脑 ...
- 自定义MVC--增删改查
使用自定义mvc框架完成CRUD操作 1.通用分页的jar.自定义mvc框架.自定义标签 导入jar.导入之前写好的pageTag.自定义mvc.xml 1.1导入需要用到的jar包 1.2导入之前已 ...
- Oracle 10g和11g中的自动统计任务
1) 先来看下oracle 10g中的自动统计任务的问题. 从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动 ...
- JSON.parseObject的几种用法
https://blog.csdn.net/a18827547638/article/details/80272099 https://blog.csdn.net/a18827547638/artic ...
- fdisk分区命令
fdisk是Linux系统中最常用的分区工具,通过这个命令也可以查看系统中所有可用的分区,但是这个命令只支持MBR的分区表(这句话应该只对某些系统,CentOS7-1810适用,Debian9.5和o ...
- 2019ICPC徐州自我反省及未来打算
徐州站结束了有好几天了,然而为了热爱的网络课(qdu-zpj网络课你值得信赖),一直没时间写个博客,今天又来说点心里话 今年的ICPC,就这样都打完了,可惜最终也是没能拿金,不过拿到了块银,也算保底吧 ...