Web/10-Node.js和数据库/MySQL数据库/04-MySQL字段的数据类型.md
2020-04-23 11:15:26 +08:00

3.6 KiB
Raw Blame History

前言

MySQL 中的字段,主要有四种数据类型:

  • 整型(整数)

  • 浮点型(小数)

  • 字符串类型

  • 时间日期类型

下面来详细讲一讲。

整数类型

整数类型的分类

MySQL中整型有五种

  • 迷你整型tinyint使用1个字节存储整数最多存储256个整数-128~127

  • 短整型smallint使用2个字节存储整数。

  • 中整型mediumint使用3个字节存储整数。

  • 标准整型int使用4个字节存储整数。

  • 大整型bigint使用8个字节存储。

强调

1如果你不知道用哪一种或者懒得计算那就用标准整型 int吧,这个用的最多。

2整型在 MySQL 中默认是有符号的,即有正负;无符号需要使用 unsigned 修饰整型,代表正整数。

举例

在指定的表中新增 age 字段,要求 age 是正整数:

alter table table_qiangu1 add age int unsigned;

设计思路

如果需要新建整型的字段,设计思路如下:

1确定需要存储的数据是整数。

2预估整数的范围选择合适的整数类型。

3确定这个整数是否需要包含负数。

整数类型的取值范围

todo。参考链接https://blog.csdn.net/slyjit/article/details/54290486

整数类型的显示宽度、零填充

我们在很多设计表中,可能会看到比如 int(11)这种数据类型,这里面的 11代表的就是显示宽度

所谓的显示宽度,其实就是显示的时候,看到的最少数字个数。

比如 int(2) 表示不管你的数值是多少最少可以看到两个数字。假如你存的数值是9没有满两位就会在前面补零显示为09假如你的数值是120超过了显示宽度则直接显示原始值不会做零填充

显示宽度的注意事项

  • 显示宽度只适用于 MySQL 的整数类型。

  • 显示宽度只是指明 MySQL 整数类型最少显示的数字个数可以通过desc查看表字段显示

  • 显示宽度只是在显示的时候改变数值的样式,不会对原本的值进行更改

  • 显示宽度和数值类型的取值范围无关。例如int(10) 他的取值范围任然是(-2 147 483 6482 147 483 647)。

零填充的注意事项

  • 要想让显示宽度自动进行零填充,必须要配合 ZEROFILL这个关键字一起使用。

  • 零填充只能针对正整数,也就是说,ZEROFILL 要求整型为无符号型。

举例

1、新建一张表然后在这张表中新增 num1 字段,要求 num1 显示3位不够3位的自动进行零填充

# 新建一张表
CREATE TABLE table_qiangu1 (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY
);

# 显示宽度有效(正确写法)
alter table table_qiangu1 add num1 int(3) zerofill;

# 对比:显示宽度无效
alter table table_qiangu1 add num2 int(3);

# 对比:普通写法
alter table table_qiangu1 add num3 int;

上述命令中,如果把 zerofill 这个关键字去掉,是达不到显示宽度的效果的。执行完上述命令后,我们执行 desc table_qiangu1 命令,对比一下 num1、num2、num3 的字段结构就知道了:

上方截图可以看到,只有 num1 才有显示宽度它可以进行零填充num2、num3不行。我们往表中插入整数 6,然后看看显示结果,就一目了然:

参考链接:MySql数据库 数值类型的显示宽度