昨天我的一对多聊天系统考核,由于数据库中我的大多字段用的都是char类型的,(好吧,自己总感觉char是万能的,什么都可以存)其实这样是不对的,要根据不同字段的需要去确定到底用什么数据类型,减少空间占用的问题。
下面来所以下mysql的数据类型:
首先说日期型的吧
mysql数据类型 | 详解 |
data | 日期,占有3个字节,格式为YYYY-MM-DD, eg:2016-05-22 |
time | 时间,占用3个字节,格式为hh:mm:ss, eg:09:07:30 |
datatime | 日期+时间,占用8个字节,格式为YYYY-MM-DD hh:mm:ss, eg:2016-05-22 09:07:30 |
timestamp | 自动存储记录修改的时间,占用4个字节 (这是一个比较特别的数据类型,它可以自动在你不使用程序更新 的情况下只要你更新了记录,timestamp就会自动更新时间) |
year | 年份,占用1个字节, |
下面接着说数值类型的,数值类型分为整形和浮点型
或后面的是加上unsigned关键字,对应的取值范围翻倍哦
说下整形
mysql数据类型 | 详解 |
tinyint | 占用1个字节,范围是(-128~127)或(0~255) |
smalint | 占用2个字节,范围(-32768~32767)或(0~65535) |
mediumint | 占用3个字节,范围(-8388608~8388607)或 (0~16777215) |
int | 占用4个字节,范围(-2147483648~2147483647)或 (0~4294967295) |
bigint | 占用8个字节,范围(+-9*10^18)或(9*10^18*2) |
浮点型
mysql数据类型 | 详解 |
float(m,d) | 单精度浮点型,占用4个字节,m个总个数,d个小数位 |
double(m,d) | 双精度浮点型,占用8个字节,m个总个数,d个小数位 |
decimal(m,d) | 存储为字符串的浮点数 |
最后说下字符串类型的
mysql数据类型 | 详解 |
char(n) | 支持固定长度的字符串,最大长度为255 |
varchar(n) | 支持可变长度的字符串,最大长度为65535 |
textblob | 支持可变长度的字符串,最大长度为65535 |
tinytext | 支持可变长度的字符串,最大长度是255 |
mediumtext | 支持可变长度的字符串,最大长度2^24-1 |
longtext | 支持可变长度的字符串,最大长度2^32-1 |
最后来说下其它数据类型
eunm ('number1'…‘’number65535'') | 枚举型,最多可以包含65532个成员,定义某列为枚举后, 该列的值限定为枚举中的定义的值。(注意:如果枚举中 包含null值,则默认值为null,如果为not null,则第一个成 员为默认值) |
set ("number"…,“number64”) | 集合型,可以有0个或多个值,最多可有64个不同的成员, 其值来自表创建时规定的允许的一列值,set成员本身不可 包含逗号 |