数值型: 整型 小数: 定点数 浮点数 字符型: 较短的文本: CHAR 、 VARCHAR 较长的文本:text 、 BLOB(较长的二进制数据) 日期型 #原则: 所选择的类型越简单越好
1、整型(int)
TINYINT | SMALLINT | MEDIUMINT | INT/INTEGER | BIGINT |
1 | 2 | 3 | 4 | 8 |
特点: 1、如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加 UNSIGNED 关键字 2、如果插入的数值超出了整型的范围,会报out of range异常,并且插入的是临界值 3、如果不设置长度,会有默认的长度 4、长度代表的意思为显示的最大宽度,如果不够会用0在左边填充,但必须搭配 ZEROFILL 来使用 使用了 ZEROFILL 会自动默认成无符号
2、浮点型和定点型(float)
分类: 1、浮点型 FLOAT(M,D) DOUBLE(M,D) 2、定点型 DEC(M,D) DECIMAL(M,D) 特点: 1)M,D M:整数部位+小数部位 D:小数部位 如果超过范围,则插入临界值 2)M和D都可以省略 如果是 DECIMAL ,则M默认为10,D默认为0 如果是float和double,则会根据插入数值的精读来决定精度 3)定点型的精确度较高,如果要求插入数值的精读较高如货币运算等则考虑使用
3、字符型(varchar)
较短的文本: CHAR VARCHAR 其他: BINARY 和 VARBINARY 用于保存较短的二进制 ENUM 枚举(填写男女时可用) 只可插入一个 SET 集合 可插入多个 较长的文本: TEXT BLOB(较大的二进制)
写法 | M的意思 | 特点 | 空间的耗费 | 效率 |
CHAR(M) | 最大的字符数 | 固定长度的字符 | 比较耗费 | 高 |
VARCHAR(M) | 最大的字符数 | 可变长度的字符 | 比较节省 | 低 |
4、日期型(timestamp)
分类: DATE 只保存日期 TIME 只保存时间 YEAR 只保存年 DATETIME 保存日期+时间 TIMESTAMP 保存日期+时间
关键字 | 字节 | 范围 | 时区等的影响 |
DATETIME | 8 | 1000-9999 | 不受 |
TIMESTAMP | 4 | 1970-2038 | 受 |