mysql 长度_一文搞懂MySQL的数据类型中长度的含义

本文详细介绍了MySQL中CHAR、VARCHAR、INT和DECIMAL数据类型的长度含义及其占用空间。对于CHAR,长度n表示最多容纳n个字符,不足时用空格填充,检索时自动省略空格。VARCHAR不补空,占用空间包括实际字符和1字节记录字符数。INT(n)的n用于显示位宽,不影响存储,仅在特定客户端输出时影响格式。DECIMAL(M,D)的M和D分别表示总位数和小数点后位数,以字符串形式存储,占用M个字节。理解这些有助于更有效地建表。" 96480138,8328620,Node.js 中的 HTTP 服务详解,"['Node.js', '网络编程', '服务器开发', 'HTTP']
摘要由CSDN通过智能技术生成

前言

我们在数据库建表时,经常会困扰某个字段应该选择什么数据类型,以及填写什么长度。选择数据类型方面一般不会有什么大问题,但是在填写对应的长度的时候,很多人就会困扰,对应长度填写的数字到底是什么含义,以及会影响到哪些东西。笔者在翻阅网上的相关文章时,发现一大半文章写的都是错的,主要的问题在于搞混了“字符”和“字节”这两者的含义,甚至有的人觉得这就是一回事。如果对字符和字节不理解的读者,可以先阅读《一文搞懂字符和字节的含义》。

本文我们通过实例来介绍MySQL的数据类型中长度的含义,读完本文能够让你在数据库建表的时候不再困惑。

字符串类型

常用的字符串类型的数据类型有 CHAR 和 VARCHAR 两种,两者后面都需要跟上一个数字表示长度,例如

CHAR(10)

VARCHAR(10)

CHAR(n) 和 VARCHAR(n) 两者中的 n 含义均为该字段最大可容纳的字符数。(注意早期的版本中,n指的是字节数,你也不需要关注是哪些版本,因为是十多年前的版本了,估计一般人也用不到)。

占用空间

CHAR(n) 和 VARCHAR(n) 字段值的占用空间不是固定的,而是由实际存入的内容决定的,但在细节上两者有一些不同。我们均以 n=4 为例。

对于 CHAR(4) 表示固定容纳4个字符,当少于4个字符时,会使用空格填充空缺的部分,使其达到4个字符。如果超过4个字符,会自动截断超出部分。例如你存入数据为 'ab' ,实际会存入 'ab ' (ab后有2个空格),因此占用4个字节。以下以几个案例作为演示:

(1) 'a啊b' —— 字符数为3,少1个用空格补齐,因此实际存入 'a啊b ' ,字符数:4,字节数:1+3+1+1=6

(2)'a啊b哈ccccccccc' —— 字符数超出4,仅保留前4个字符,因此实际存入 'a啊b哈' ,字符数:4,字节数:1+3+1+3=8

(3)'a啊和哈' —— 字符数刚好为4,不需要截断和补齐,因此实际存入 'a啊和哈' ,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值