Mysql系列之一数据类型

转自:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79227696

一、数值类型:


注: DECIMAL(5,3)表示总共可以有5+2个字节,小数点后必须有三位,即范围是(-99.999,999.999)

备注:-和.也占一个字节

二、字符串类型:


 

三、日期时间型:

 

四、需要知道的知识点:

1、 char和varchar的区别:

(1)char(n)类型

char类型是定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节。当输入的字符长度超过指定的数时,char会截取超出的字符。而且,当存储char值时,MySQL是自动删除输入字符串末尾的空格。

char适合存储很短的、一般固定长度的字符串。例如,char非常适合存储密码的MD5值,因为这是一个定长的值。

(2)varchar(n)类型

varchar(n)类型用于存储可变长的,长度为n个字节的可变长度的字符数据。

n必须是介于1和8000之间的数值,存储大小为输入数据的字节的实际长度+1或者2个字节。比如varchar(10), 然后输入abc三个字符,那么实际存储大小为3个字节。

除此之外,varchar还需要使用1或2个额外字节记录字符串的长度,如果列的最大长度小于等于255字节(是定义的最长长度,不是实际长度),则使用1个字节表示长度,否则使用2个字节来表示。

(3)何时该用CHAR,何时该用varchar? 

CHAR与VARCHAR是一对矛盾的统一体,两者是互补的关系。

VARCHAR比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计中常说的‘以空间换效率’。

VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。

所以,从空间上考虑,varcahr较合适;从效率上考虑,用char更适合。

2、Mysql中timestamp,datetime,int类型的区别与优劣

int

1. 占用4个字节

2. 建立索引之后,查询速度快

3. 条件范围搜索可以使用使用between

4. 不能使用mysql提供的时间函数

结论:适合需要进行大量时间范围查询的数据表

datetime

1. 占用8个字节

2. 允许为空值,可以自定义值,系统不会自动修改其值。

3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)

4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

5. 不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。

6. 可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。

结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。

timestamp

1. 占用4个字节

2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。

3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,

但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。

4.值以UTC格式保存( it stores the number of milliseconds)

5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。

7. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。

8. 以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。

结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。

猜你喜欢

转载自blog.csdn.net/qq_32534441/article/details/86493233