MySQL支持的数据类型
MySQL支持的数据类型
1、数值类型
整数类型:TINYINT (1)、SMALLINT (2)、MEDIUMINT (3)、INT/INTEGER (4)、BIGINT (8)
浮点数类型:FLOAT (4)、DOUBLE (8)
位类型:BIT(M) (1~8)
对于整形数据,支持在类型名称后面的小括号内指定西安是宽度。
如int(5),意思是数值宽度小于5位的时候在数字前面填满宽度。
不显示指定宽度默认为int(11),配合zerofill使用:用0填充,
但如果超过也可以进入,如
AUTO_INCREMENT,整形类型的属性,一个表最多只有一个,其列为NOT NULL,并定义为PRIMARY KEY或者UNIQUE键。
浮点数和定点数都可以用类型名称后加(M,D)的方式进行表示:
表示一共显示M位数字(整数+小数),其中D表示位于小数点后面/(精度和标度)
2、时间类型
DATE:年月日
DATETIME:年月日时分秒
TIME:时分秒
TIMESTAMP:需要经常插入或者更新日期为当前系统时间 YYYY-MM-DD HH:MM:SS (共19个字符)
TIMESTAMP与DATETIME的表示方法非常类似,主要区别:
(1)、TIMESTAMP支持的时间范围较小,而DATETIME范围更大
(2)、表中的第一个TIMESTAMP列自动设置为系统时间。如果在一个TIMESTAMP列中插入NULL,则该列值将自动设置为当前的日期和时间。再插入或更新一行但不明确给TIMESTAMP列赋值时也会自动设置该列为当前日期和时间,当插入的值超出取值范围,MySQL会溢出,使用“0000-00-00 00:00:00”进行填补。
(3)、TIMESTAMP的插入和查询都受当地时区的影响,更能反应出实际的日期。而DATETIME只能反映出插入时当地的时区,其他时区会有误差。
(4)、TIMESTAMP的属性受MySQL版本和吴福气SQLMode的影响很大。
YEAR的范围为(1901-2155)。使用两位字符串时范围(00-99)(00-69:2000-2069;70-99:1970-1999)
3、字符串类型
CHAR和VARCHAR类型
CHAR:长度固定为创建表时声明的长度,char列删除了尾部的空格
VARCHAR:可变长字符串,varchar保留结尾空格
BINARY和VARBINARY类型
BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的的是它们包含二进制字符串而不包含非二进制字符串。
ENUM类型
枚举类型,对于1-255个成员需要1个字节存储;对于255-65535个成员,需要2个字节。
create table t(gender enum(‘M’, ‘F’)); //描述了范围只在M,F之间。
insert into t values(‘M’), (‘l’), (‘f’), (null)
SET类型(不重复)
跟ENUM类型类似,也是一个字符串对象。SET一次可以选取多个成员,而ENUM只能选一个。