MySQL学习之数据类型


一、数据类型

1.数值类型    -- TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、 DECIMAL
2.时间类型    -- DATE、DATETIME、TIMESTAMP
3.字符串类型 – CHAR、VARCHAR、TEXT
4.特有类型    -- ENUM、SET
字符串区分大小写  --  VARBINARY

数据类型

类型分类

表达的范围

存储需求

TINYINT[(M)]    [UNSIGNED] [ZEROFILL]

数值整型

 -128到127              或 0到255

1个字节

SMALLINT[(M)]    [UNSIGNED] [ZEROFILL]

-32768到32767          或 0到65535

2个字节

MEDIUMINT[(M)]  [UNSIGNED] [ZEROFILL]

-8388608到8388607      或 0到16777215

3个字节

INT[(M)]        [UNSIGNED] [ZEROFILL]

-2147483648到2147483647 或 0到4294967295

4个字节

BIGINT[(M)]      [UNSIGNED] [ZEROFILL]

-9223372036854775808到9223372036854775807  或 0到18446744073709551615

8个字节

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

数值混合型

整数最大位数(M)为65,小数位数最大(D)为30

变长

DATE

日期类型

YYYY-MM-DD 精确到天

3个字节

DATETIME

YYYY-MM-DD HH:MM:SS(1001年到9999年的范围)

8个字节

TIMESTAMP

YYYY-MM-DD HH:MM:SS(1970年到2037年的范围)

4个字节

ENUM

枚举类型

1到65535个元数据

1个字节或2个字节

SET

集合类型

1到64个元数据

1,2,3,4或8个字节

CHAR(M)

字符串类型

0(建议CHAR(1)外,超过此长度的统一用VARCHAR(M)替代)

M*N个字节,其中N大小由字符集编码,以及是否为中文还是字母数字等有关系

VARCHAR(M)

0个字符

TEXT

64K个字节

所有变长字符串全部使用 VARCHAR 类型,类似于状态,有限类别的字段,也使用可以比较明显表示出实际意义的字符串,而不应该使用INT之类的数字来代替

固定长度的字符串使用 CHAR 类型,所有单个字符的全部使用 CHAR 类型,而不应该使用VARCHAR 类型

当字符数量可能超过 20000 个的时候,可以使用 TEXT 类型来存放字符类数据。所有使用 TEXT 类型的字段必须和原表进行分拆,与原表主键单独组成另外一个表进行存放;

需要精确到时间(年月日时分秒)的字段可以使用DATETIME 或TIMESTAMP,但请注意各自能表达的范围,以及是否需要用到TIMESTAMP的特性,尽量使用TIMESTAMP类型替代DATETIME以减少数据存储空间的占用

只需要精确到天的字段全部使用 DATE 类型,而不应该使用 TIMESTAMP或DATETIME  自增序列特性的字段只能使用 INT 或者 BIGINT,必须明确标识为无符号类型 (关键词:UNSIGNED),除非确实会出现负数,仅当该字段的数值会超过42亿,才使用 BIGINT 类型,并且自增字段必须作为主键或主键的一部分

本文永久更新链接地址

相关内容