mysql 三大列类型
Posted fbjtcp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 三大列类型相关的知识,希望对你有一定的参考价值。
数值型
1.整型
tinyint
占据空间:1个字节,存储范围:-128-127,0-255
一个字节 8个位
0000 0000 -1111 1111
0 -> 2的8次方-1=255
0 000000-0 1111111
0->127
1 000000-1 1111111
0->-127
-127->127
二进制补码的问题
如上理解的话,+0,-0重复了,浪费了一种可能性
因此计算机中的负数,不是照着“后面的绝对值位乘-1得到的”
而是用补码换算的
负数=绝对值位-128(绝对值位为去掉符号位后的值)
smallint
占据空间:2个字节,存储空间:-32768-32767,0-65535
mediuint
int
bigint
zerofill零填充
2.小数型
float(M,D) decimal(M,D)
M 叫“精度”,代表“总位数” D叫“标度”,代表“小数位”
如float(6,2) 可表示-9999.99 -> +9999,99
浮点数占多大空间呢
答: 如果M<=24,占四个字节,否则占8个字节
用来表示数学中的小数,除了float ->浮点
还有一种叫定点decimal,定点是把整数部分,和小数部分,分开存储的,比float 精确
当小数点后位数较多时,float会损失精度
如果数据要求比较精确,应该使用decimal
2.字符型
char
称为定长,对于char(n) ,不够n个长度,用空格补齐,浪费了尾部,取出时,再把后面的空格去掉
varchar
称为变长,对于varchar(n),不用补齐,但是列内容前有1-2个字节,来标志该列内容的长度
速度上:定长速度快
注意:char(m) 与varchar(m) 限制的是字符,不是字节
text
文本类型,可以存较大的文本段,搜索速度稍慢
一般用来存储文章内容,新闻内容等
声明text列时 ,不必给默认值
blob
是二进制类型,用来存放图像,音频等二进制信息
blob在于防止因为字符集的问题导致信息丢失
比如:一张图片里有0XFF字节,在ascii字符集中认为非法,再入库时被过滤
3.时期时间类型
date 日期 0000-00-00 3个字节
time 时间 00:00:00 3个字节
datetime 日期时间类型 0000-00-00 00:00:00 8个字节
year 年份 0000 1个字节 范围:1901-2155 如果错误,存入0000年
create table m4 -> ( ts timestamp default CURRENT_TIMESTAMP -> , -> id int -> )engine myisam charset utf8;
timestamp
获取当前时间
以上是关于mysql 三大列类型的主要内容,如果未能解决你的问题,请参考以下文章