Welcome 微信登录

首页 / 数据库 / MySQL / 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到2551个字节
SMALLINT[(M)]    [UNSIGNED] [ZEROFILL]-32768到32767         或 0到655352个字节
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]-8388608到8388607     或 0到167772153个字节
INT[(M)]       [UNSIGNED] [ZEROFILL]-2147483648到2147483647 或 0到42949672954个字节
BIGINT[(M)]      [UNSIGNED] [ZEROFILL]-9223372036854775808到9223372036854775807  或 0到184467440737095516158个字节
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]数值混合型整数最大位数(M)为65,小数位数最大(D)为30变长
DATE日期类型YYYY-MM-DD 精确到天3个字节
DATETIMEYYYY-MM-DD HH:MM:SS(1001年到9999年的范围)8个字节
TIMESTAMPYYYY-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个字符
TEXT64K个字节
所有变长字符串全部使用 VARCHAR 类型,类似于状态,有限类别的字段,也使用可以比较明显表示出实际意义的字符串,而不应该使用INT之类的数字来代替固定长度的字符串使用 CHAR 类型,所有单个字符的全部使用 CHAR 类型,而不应该使用VARCHAR 类型当字符数量可能超过 20000 个的时候,可以使用 TEXT 类型来存放字符类数据。所有使用 TEXT 类型的字段必须和原表进行分拆,与原表主键单独组成另外一个表进行存放;需要精确到时间(年月日时分秒)的字段可以使用DATETIME 或TIMESTAMP,但请注意各自能表达的范围,以及是否需要用到TIMESTAMP的特性,尽量使用TIMESTAMP类型替代DATETIME以减少数据存储空间的占用只需要精确到天的字段全部使用 DATE 类型,而不应该使用 TIMESTAMP或DATETIME  自增序列特性的字段只能使用 INT 或者 BIGINT,必须明确标识为无符号类型 (关键词:UNSIGNED),除非确实会出现负数,仅当该字段的数值会超过42亿,才使用 BIGINT 类型,并且自增字段必须作为主键或主键的一部分本文永久更新链接地址