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 三大列类型的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之字段数据类型和列属性

数据库MySQL/mariadb知识点——数据类型

MySQL

使用 json rereiver php mysql 在片段中填充列表视图

Mysql 6 业务设计(逻辑设计)+物理设计

数据类型 介绍