MySql数据类型之间的区别

TIMESTAMP与DATETIME的区别

  1. TIMESTAMP只使用DATETIME一半的存储空间。
  2. DATETIME默认值为null,TIMESTAMP默认为当前时间
  3. DATETIME不会自动更新时间,但是可以设置 DEFAULT CURRENT_TIMESTAMP从而设置默认值

需要注意的是如果向允许为空的datetime类型的字段里插入空值(如图1),那么它的值就为null,
如果该字段不允许为空,则像下图那样写插入语句会报错。

而TIMESTAMP不论是否允许为空都会设置默认时间(如图2)。

建表语句

DROP TABLE
IF EXISTS test;

CREATE TABLE test (
	id BIGINT (20) NOT NULL AUTO_INCREMENT,
	date1 TIMESTAMP,
	date2 datetime,
	PRIMARY KEY (id)
)

图1:

图2:

如果想给datetime赋予默认时间,只需插入时不指定该字段即可(如图3)

图3:

  1. datetime保存的范围为1001年到9999年,timestamp保存的范围为1970年到2038年
  2. timestamp显示的值依赖时区,根据时区的设置,存储的值会有所不同。

tinyint(1)与tinyint(2)的区别

tinyint(1)与tinyint(2) 这里的1和2值的是存储大小,如果使用zerofill则会填充0,
但是navicat中不会显示填充的0

BLOB和TEXT的区别

BLOB使用二进制方式存储,没有排序规则或字符集,而TEXT有排序规则和字符集,如果只需要排序前面一小部分字符,则可以减少max_sort_length的配置,或者使用order by sustring(column,length)

原文地址:https://www.cnblogs.com/yimengyizhen/p/13198895.html