mysql数据库中的数据类型
数据类型:是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
有符号位:二进制最高位,为0表示数字正数,为1表示数字负数。
无符号位:数字不存在负数的情况,都是正数。
一、整型
数据类型 | 存储范围 | 字节 |
tinyint |
有符号:-128~127(-27~27-1) 无符号:0~255(0~28-1) |
1 |
smallint |
有符号:-32768~32767(-215~215-1) 无符号:0~65535(0~216-1) |
2 |
mediumint |
有符号:-8388608~8388607(-223~223-1) 无符号:0~16777215(0~224-1) |
3 |
int |
有符号:-2147483648~2147483647(-231~231-1) 无符号:0~4294967295(0~232-1) |
4 |
bigint |
有符号:-9223372036854775808~9223372036854775807(-263~263-1) 无符号:0~18446744073709551615(0~264-1) |
8 |
二、浮点数
float和double都可以float(m,d)和double(m,d),或者不加(m,d),m表示数字的有效位数,d表示数字的小数位数
数据类型 | 存储范围 | 字节 |
float(单精度) | -3.40282346E+38~3.40282346E+38,精确到小数点后面8位小数 | 4 |
double(双精度) | -1.7976931348623157E+308~1.7976931348623157E+308,精确到小数点后面16位小数 | 8 |
三、小数
decimal(m,d)依赖m和d,m表示数字的有效位数,d表示数字的小数位数,和double相比,decimal精度更高,范围更小。
数据类型 | 存储范围 |
decimal | 依赖m和d值 |
四、日期时间
数据类型 | 存储范围 | 字节 |
year | 1901/2155 | 1 |
time | '-838:59:59'/'838:59:59' | 3 |
date | 1000-01-01/9999-12-31 | 3 |
datetime | 1000-01-01 00:00:00/9999-12-31 23:59:59 | 8 |
timestamp |
1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间2038-1-19 11:14:07, 格林尼治时间2038年1月19日凌晨03:14:07 |
4 |
五、字符
数据类型 | 规则 |
char(m) | 定长字符串。m个字节,0<=m<=255。m为几,字符就多长,不够的会以空格补充。 |
varchar(m) | 变长字符串。m个字节,0<=m<=65535。字符实际多长就是多长,不以m为标准。 |
tinytext | 短文本字数据。0~255个字节。 |
text | 长文本数据。0~65535个字节。 |
mediumtext | 中等长度文本字数据。0~16777215个字节。 |
longtext | 极大文本数据。0~4294967295个字节。 |
tinyblob | 二进制形式的短文本数据。0~255个字节。 |
blob | 二进制形式的长文本数据。0~65535个字节。 |
mediumblob | 二进制形式的中等长度文本字数据。0~16777215个字节。 |
longblob | 二进制形式的极大文本数据。0~4294967295个字节。 |
enum | 枚举类型。enum(value1,value2,...),一个或两个字节,取决于枚举值得数量,最多65535个值,值只能是枚举中的一个值 |
set | set(value1,value2,value3,...),最多64个值,set中的取值可以是所列出的n个值任意排列组合而成 |