【MySQL】MySQL的varchar字段最大长度是65535?

news/2024/11/16 6:57:33/

在MySQL建表sql里,我们经常会有定义字符串类型的需求。

CREATE TABLE `user` (  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名字') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;

比方说user表里的名字,就是个字符串。MySQL里有两个类型比较适合这个场景。

char和varchar。

声明它们都需要在字段边上加个数组,比如char(100)和varchar(100),这个100是指当前字段能放的最大字符数

char和varchar的区别在于,varchar虽然声明了最大能放100个字符,但一开始不需要分配100个字符的空间,可以根据需要慢慢增加空间。而char一开始声明是多少,就固定预留多少空间。

所以,varchar比起char更省空间,一般没啥大事,大家都爱用varchar。

那问题来了,声明varchar字段时,它的最大长度是多少呢?

相信大家应该听说过varchar字段的最大长度是65535吧,没听过也没关系,你现在听到了。

但实际上是这样吗?我们来做个实验。

一、varchar最大值是多少

我们直接拿65535来试一下。

图片

长度为65535的varchar报错

很明显报错了。报错内容也说了, 由于列长度过大导致报错,最长是16383

把上面的65535改成 16383,确实是成功了。

哦?所以说varchar最大值是16383?

当然不是,这其实还有好几个因素影响这个最大值。

二、不同字符集的影响

varchar里放的是字符串,而字符串看起来可以是英文字母,也可以是数字或中文。但不管怎么样,都可以把这样的中英文数字转成二进制的01串。

按照一定规则把符号和二进制码对应起来,这就是编码。而把n多这种已经编码的字符聚在一起,就是我们常说的字符集

建表语句里有个CHARSET,这里填的是字符集

不同的字符集要求使用的字节个数也不同,我们可以通过 show charset; 看到mysql支持哪些字符集,以及这些字符集里存储一个字符所需的最大字节数(Maxlen)

图片

查看mysql支持哪些charset

我们尝试下把建表sql语句里的CHARSET改一改,比如改成utf8mb3。

我们再执


http://www.ppmy.cn/news/1263387.html

相关文章

圈子社交系统:打破时间与空间的限制。APP小程序H5三端源码交付,支持二开!

在现代社会,社交已成为人们生活中不可或缺的一部分。然而,传统的社交方式往往受制于时间和空间的限制,使得人们难以充分发挥社交的潜力。为了解决这一问题,圈子社交系统应运而生。 圈子社交系统通过技术手段打破时间与空间的限制&…

【开源视频联动物联网平台】JAIN-SIP库写一个SIP服务器

JAIN-SIP(Java API for Integrated Networks - Session Initiation Protocol)是用于实现SIP(Session Initiation Protocol)的Java API。以下是使用JAIN-SIP库编写一个简单的SIP服务器的基本步骤: 1.添加JAIN-SIP库依赖…

【powerjob】定时任务调度器 xxl-job和powerjob对比

文章目录 同类产品对比资源及部署相关资源占用对比:部署方式:xxl job :调度器:执行器: powerjob:调度器:执行器: 总结 背景: 目前系统的定时任务主要通过Spring框架自带的Scheduled注…

Java 将word转为PDF的三种方式和处理在服务器上下载后乱码的格式

我这边是因为业务需要将之前导出的word文档转换为PDF文件,然后页面预览下载这样的情况。之前导出word文档又不是我做的,所以为了不影响业务,只是将最后在输出流时转换成了PDF,当时本地调用没什么问题,一切正常&#xf…

【外观模式】SpringBoot集成mail发送邮件

前言 发送邮件功能,借鉴 刚果商城,根据文档及项目代码实现。整理总结便有了此文,文章有不对的点,请联系博主指出,请多多点赞收藏,您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

Linux 环境部署RabbitMQ

1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management 方式二:从本地加载(本文章带有mq安装包) docker load -i mq.tar 1.2.安装MQ 执行下面的命令来运行…

[原创] FPGA的JTAG烧录不稳定或烧录失败原因分析

一、电路故障背景 打板回来常会出现烧录不良,调试是一个技术活,如果烧录不过关,一切白搭。 二、常见JTAG故障原因如下: 1、ESD防护器件焊接不良; 电路板给生产部分焊接,发现元器件虚焊,特别是…

2048.下一个更大的数值平衡数

​题目来源: leetcode题目,网址:2048. 下一个更大的数值平衡数 - 力扣(LeetCode) 解题思路: 从 n1 开始暴力遍历即可。 解题代码: class Solution { public:bool isNumericallyBalanced(int …