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 类型,并且自增字段必须作为主键或主键的一部分

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/890bb87375af41671c1c0cee4571b4dc.html