TIMESTAMP与DATETIME的区别
- TIMESTAMP只使用DATETIME一半的存储空间。
- DATETIME默认值为null,TIMESTAMP默认为当前时间
- 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:
- datetime保存的范围为1001年到9999年,timestamp保存的范围为1970年到2038年
- 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)