小数值:float/double/decimal:
http://blog.leanote.com/post/weibo-007/mysql_float_double_decimal
日期/时间:
https://www.cnblogs.com/Jie-Jack/p/3793304.html
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
而对于DATETIME,不做任何改变,基本上是原样输入和输出。
关于时间戳的使用:
https://blog.csdn.net/dreamer2020/article/details/51794458
用法
## 在表中定义一个timestamp类型的字段,如下所示:
create table test(
id integer primary key auto_increment,
name varchar(256) not null,
createdAt timestamp default current_timestamp on update current_timestamp
);
createdAt字段被定义为timestamp类型,而且默认值是当前时间戳,当记录发生更新时,该字段同时会更新为当前时间戳。timestamp等于是提供了对一条对数据自身修改时间的记录。
依据不同的场景,一般timestamp会有几类用法:
## 在记录创建和修改时都刷新
参见上面的例子,在sql语句上,要同时注明default字段和on update字段。
createdAt timestamp default current_timestamp on update current_timestamp
## 只在记录创建时刷新时间,以后修改时不再刷新
如下所示,在定义字段时删去on update语句。
createdAt timestamp default current_timestamp
(就是extra字段
字符串:
https://www.cnblogs.com/xrq730/p/8446246.html
(这是一个整体数据类型的整理贴
- char/varchar/binary
mysql的binary、char、varchar区别:
binary:
保存二进制字符串,它保存的是字节而不是字符,没有字符集限制。
binary(8)可以保存8个字符,每个字符占1个字节,共占8个字节
进行比较时是按字节进行比较,而不是按字符(char),按字节比较比字符简单快速.
按字符比较不区分大小写,而binary区分大小写
char:
使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,
gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间.
如果需要存储的字符串的长度跟所有值的平均长度相差不大,适合用char,如MD5
对于经常改变的值,char优于varchar,原因是固定长度的行不容易产生碎片
对于很短的列,char优于varchar,原因是varchar需要额外一个或两个字节存储字符串的长度
varchar:
保存可变长度的字符串,使用额外的一个或两个字节存储字符串长度,varchar(10),除了需要存储10个字符,还需要1个字节存储长度信息(10),超过255的长度需要2个字节来存储
char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较
注意指定的n是显示长度,存储的长度都是各自有规定的
- varchar/text/blob
text和blob两种数据类型,它们的设计初衷是为了存储大数据使用的,因为之前说了,MySql单行最大数据量为64K(varchar的65535字节)。
先说一下text,text和varchar是一组既有区别又有联系的数据类型,其联系在于当varchar(M)的M大于某些数值时,varchar会自动转为text:
M>255时转为tinytext
M>500时转为text
M>20000时转为mediumtext
所以过大的内容varchar和text没有区别,同事varchar(M)和text的区别在于:
单行64K即65535字节的空间,varchar只能用63352/65533个字节,但是text可以65535个字节全部用起来
text可以指定text(M),但是M无论等于多少都没有影响
text不允许有默认值,varchar允许有默认值
varchar和text两种数据类型,使用建议是能用varchar就用varchar而不用text(存储效率高),varchar(M)的M有长度限制,之前说过,如果大于限制,可以使用mediumtext(16M)或者longtext(4G)。
至于text和blob,简单过一下就是text存储的是字符串而blob存储的是二进制字符串,简单说blob是用于存储例如图片、音视频这种文件的二进制数据的。
网友评论