MENU

字段数据类型 | 初学MySQLの学习笔记 No.2

2023 年 12 月 20 日 • 阅读: 557 • 学习时间

::huaji:huaji1::MySql 的数据类型是真的多,之前学 ACCESS 的时候才几个
MySql 一看都十几个了

整数类型

类型

类型用途占用范围 (有符号) 范围 (无符号)
BIGINT 大整数 8 字节 -9223372036854775808,92233720368547758070,18446744073709551615
INT\INTEGER 标准整数 4 字节 -2147483648,21474836470,4294967295
MEDIUMINT 中整数 3 字节 -8388608,83886070,16777215
SMALLINT 小整数 2 字节 -32768,327670,65535
TINYINT 迷你整数 1 字节 -128,1270,255

MySql 中提供的整数类型很多,但是其实都差不多,主要区别在字节数和范围上
这时候就会遇到一个问题
为什么要弄这么多整型,直接一个 INT 不就挺好
目的就是为了最大程度的使用硬盘空间,同时还可以提高查询的速度
通常情况下 INT 和 TINYINT 用的最多 (毕竟大部分情况下不缺这么点字节,弄大点还能避免很多意想不到的问题)
无符号需要在字段类型后面加上 unsigned,比如 age TINYINT UNSIGNED 表示一个无符号的年龄字段

另外,有的时候可以见到诸如 int(X) 这样的表达方式
这里使用到的是显示宽度,首先什么是显示宽度?
表示存储值的长度不满 X 的情况下,显示为 X 个字符长度,如果满足 X, 则显示完整的数据
在 MySQL 中所有的整数类型都支持显示宽度,但仅仅对显示有所影响,并不会影响其占用的大小

浮点类型

类型

类型用途占用
FLOAT 单精度浮点数 4 字节
DOUBLE/REAL 双精度浮点数 8 字节
DECIMAL/NUMERIC 高精度小数对 DECIMAL (M,D) ,如果 M>D,为 M+2 否则为 D+2

字符串类型

字符串类型主要的就是 VARCHAR、CHAR 和 TEXT

VARCHAR 和 CHAR 的对比

特性 VARCHARCHAR
长度定长,固定字符数,最大 255 个字符,数据长度不足声明值时,在尾部自动填充空格长度可变,可设置最大存储字符数,最大不超过行大小 (默认 65535)
前缀 1~2 字节,看列长度是否可能超过 255 字节
有否尾部空格长度不足默认用空格填满,检索和获取时会自动去除不会自动填充空格输入值就包含空格,则会存储,检索和获取数据都会体现
超长处理超长部分如果是空格自动截断,如果是字符,严格模式下会报错超长部分如果是空格自动截断,并生成警告,如果是字符,严格模式下会报错
存储开销数据值的字节和 + 补位空格数数据值的字节和 + 长度标识字节数

TEXT 类型细分

类型占用用途
TINYTEXT255 个字符短文本字符串
TEXT65535 个字符长文本数据
MEDIUMTEXT16777215 个字符中等长度文本数据
LONGTEXT4294967295 个字符极大文本数据

添加新评论

已有 2 条评论
  1. 试问存一个精确到秒的时间戳要用什么数据类型?存一个 QQ 号要用什么数据类型?存一篇新闻用什么数据类型?::huaji:huaji4::

    1. @小丁::huaji:huaji10:: 万能 TEXT (雾