Mysql数据类型大致分为:数字、字符串、时间三种类型
1.数字类型
(1)bit[M]:二进制位,m表示二进制位的长度(1-64),默认m=1
(2)tinyint[(m)]:小整数,范围:
有符号:-128~127 signed
无符号:0~255 unsigned
注:Mysql中无布尔值,使用tinyint(1)构造
(3)int[(m)]:整数,范围:
有符号:-2147483648~214783647
无符号:0~4294967295
注:整数类型中的m仅用于显示,对存储范围无限制。例如:int(5),当插入数据2时,select时数据显示为:00002
(4)bigint[(m)]:大整数,范围:
有符号:-9223372036854775808 ~ 9223372036854775807
无符号:0 ~ 18446744073709551615
(5)decimal[m[,d]]:准确的小数值(也就是说这个小数值是准确的,不是近似值),其中m表示:小数点前面位数+小数点后面位数;d表示:小数点后面的位数
(6)FLOAT[(m,d)]:单精度浮点数(是一个非精确的小数值),m是数字总个数,d是小数点后面的位数
(7)DOUBLE[(m,d)]:双精度浮点数(非精确小数值),m是数字总位数,d是小数点后面的位数
注:对于FLOAT和DOUBLE来说数值越大,越不准确。
2.字符换类型
(1)char(m) :char数据类型用于表示固定长度的字符串,最多包含255个字符,其中m表示字符串的长度
(2)varchar(m):varchar数据类型表示变长的字符串类型,最多包含255个字符,其中m表示该字符串所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡
(3)text:text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
(4)mediumtext:和text用法一致,区别在于长度比text长,长度为16777215(2**24-1)个字符
(5)longtext:和text用法一致,区别在于长度比mediumtext更长,长度为:4294967295字符(4GB)
3.时间和其他
(1)enum:枚举类型
用法例子如下:sex ENUM('男','女','保密')
(2)set:集合类型
用法:创建一个表,里面包含了一个set类型
create table myset(
id int primary key auto_increment,
col set('a','b','c','d')
);
set的使用
insert into myset(col) values ('a,b'),('b,d'),('a,d'),('a,b,c,d')
set集合可以将col中设置的a,b,c,d任意组合,而enum类型只能选择里面的其中一个。
(3)DATE:YYYY-MM-DD(2019-05-25)
(4)TIME:HH:MM:SS(888:59:59)
(5)YEAR:YYYY(2019)
(6)DATETIME:YYYY-MM-DD HH:MM:SS(2019-12-31 23:59:59)