【8.26】MySQL 数据类型实践(持续更新)

·  阅读 177

这是我参与8月更文挑战的第24天,活动详情查看:8月更文挑战

关于 MySQL 的数据类型,不同数据类型之前的对比,官网和各个文章已经介绍的很详细了,这篇文章不再一个一个的介绍,具体可以参考:MySQL 官网

本文主要介绍 MySQL 数据类型的实践,我们在实际业务中应该选择哪种类型,以下是以 utf8 编码为前提介绍的。

本文会根据日常的实践持续更新,欢迎讨论、点赞、收藏~

ID

ID 一般会作为表的主键,是数值类型,一般是 INT 或者 BIGINT,并且是 UNSIGNED的,也可以是 AUTO_INCREMENT(自增)

UNSIGNED 意思是无符号,ID 只需要正数,于是我们定义为无符号的

INT 需要的存储空间是 4 个字节,在有符号的情况下,可以存储的数值范围是 -2^31(-2147483648) 到 2^31 - 1(2147483647),无符号情况下,可以存储 0 到 2^32 - 1(4294967295)

BIGINT 需要的存储空间是 8 个字节,同理,有符号的情况下可以存储 -2^63 到 2^63-1,无符号的情况下可以存储 0 到 2^64-1

这样 SQL 语句会是

CREATE TABLE `movie_list` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
)
复制代码

这里 INT(11) 中的 11 没有特别的含义,不会影响存储空间,只会在这个类设置了 ZEROFILL 是,如果存储的数值没有到 11 位,查询结果会在左侧补 0。

description 用户输入的内容

用户输入的描述,这种一般是由业务决定的长度,比如前端限制最多输入 100,数据库可以稍微限制大一点,比如 200。

这种一般使用 VARCHAR(200),其中 200 是字段可存储的最大字符数,一般表的编码格式是 utf8mb4(mb4 是指之前 mysql 支持 utf8 格式只有最大三个字节,mb4 的意思是 more byte 4,可以存储四个字节的 utf8 格式),另外对于汉字,一个汉字字符对应存储三个字节,于是这个例子中,需要最大 600 个字节的存储空间。

VARCHAR 在使用时不建议过长,比如大于 2048,因为 MySQL 一行最大存储的字节数 65535 个字节(其中 BLOBTEXT 类型只占用 9-12 个字节,因为他们的内容存储在其他地方),如果 VARCHAR 过长,后面增加字段会受限制。参考

另外,尽量使用 VARCHAR 替代 CHAR,因为 CHAR 在不足位数时,会用空格补足位数,容易引起问题

image.png

结合上面的例子,这里的实现是

CREATE TABLE `movie_list` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `description` VARCHAR(200) COMMENT '描述',
  PRIMARY KEY (`id`)
)
复制代码

create_time 和 update_time

创建时间和更新时间,待更新

以上是 MySQL 数据类型实践,本文会根据后续实践持续更新,欢迎点赞和讨论~

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改