MySQL的数据类型

MySQL中的数值类型

类型字节最小值最大值
TINYINT1有符号-128,无符号0有符号127,无符号255
SMALLINT2有符号-32768,无符号0有符号32767,无符号65535
MEDIUMINT3有符号-8388608,无符号0有符号8388607,无符号16777215
INT4有符号-2147483648,无符号0有符号2147483647,无符号4294967295
BIGINT8有符号-232,无符号0有符号232,无符号264
FLOAT4
DOUBLE8
DEC(M,D)M+2最大取值范围与DOUBLE相同,给定DECIMAL的有效取值范围由M和D决定

对于整数类型,MySQL支持在类型名称后面的小括号内指定显示宽度,例如int(5)表示当数值宽度小于5位的时候在数字前面填满宽度,如果不显示指定宽度则默认为int(11),一般配合zerofill使用
当设置了宽度限制后,如果插入大于宽度限制的值,不会对插入的数据有任何影响,还是按照类型的实际精度进行报仇呢,此时宽度实际上没有意义
MySQL分为两种方式:浮点数和定点数,定点数在MySQL内部以字符串形式存放,比浮点数更精确。(M,D)表示该值一共显示M位数字(整数位+小数位),其中D位位于小数点后面,M和D又称为精度和标度。MySQL保存值时进行四舍五入

日期时间类型

MySQL中有多种数据类型可以用于日期和时间的表示,

  1. 如果用来表示年月日,可以用DATE来表示。
  2. 如果用来表示年月日时分秒,可以用DATETIME表示。
  3. 如果用来鄙视时分秒,可以用TIME来表示。
日期和时间类型字节最小值最大值
DATE41000-01-019999-12-31
DATETIME81000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMP4197001010800012038年的某个时刻
TIME3-838:59:59838:59:59
YEAR119012155

TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如’1968-01-01’,虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。
值以UTC格式保存( it stores the number of milliseconds)
时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。
默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。
默认情况下以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
如果需要可以设置timestamp不自动更新。通过设置DEFAULT CURRENT_TIMESTAMP 可以实现

字符串类型

字符串类型字节描述以及存储需求
CHAR(M)MM为0~255之间的证书
VARCHAR(M)M为0-65535之间的整数,值的长度+1个字节
TINYBLOB允许长度0~255字节,值的长度+1个字节
BLOB允许长度0~6553字节,值得长度+2个字节
MEDIUMBLOB允许长度167772150字节,值的长度+3个字节
LONGBLOB允许长度0~4294967295字节,值的长度+4个字节
TINYTEXT允许长度0~255字节,值的长度+1个字节
TEXT允许长度0~6553字节,值得长度+2个字节
MEDIUMBLOB允许长度167772150字节,值的长度+3个字节
LONGBLOB允许长度0~4294967295字节,值的长度+4个字节
VARBINARY(M)允许长度0~M个字节的变长字节字符串,值的长度+1个字节
BINARY(M)M长度0~M个字节的定长字节字符串

CHAR和VARCHAR很类似,都用来保存MySQL中较短的字符串
不同之处

  1. CHAR列的长度固定为创建表时生命的长度,长度可以为0~255
  2. VARCHAR列的值为可变长字符串,长度可以指定为0~65535(MySQL5.0.3版本后)之间的任何值;
  3. 在检索时,VARCHAR保留尾部空格而CHAR则删除这些空格

ENUM类型

值范围需要在创建表时通过枚举方式显示指定。最多允许65535个成员;EMUN类型忽略大小写,插入不咋EMUN指定范围内的值时,默认选取第一个值;ENUM类型只允许从值集合中选取单个值,而不能一次选取多个值

SET类型

包含最高64个成员,可以选取多个。对于超出允许值范围的数据不允许注入到SET类型列中,而对于重复的成员集合只取一次

《深入浅出MySQL数据库开发、优化与维护管理》;
互联网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值