平常进行数据库操作时,字段的数据类型可能并不是很起眼,但是它对于减少内存占用和提高效率非常有帮助,而这就需要我们对数据类型有着清晰的认知。
char与varchar:
create table vc(v varchar(4),c char(4));
insert into vc values('ab ','ab ');
由此我们可以清晰看出 varchar列保留空格,char列会删除尾部空格
char列会删除空格再做操作,varchar列依然保留空格
date,time,datetime:
create table t (d date,t time,dt datetime);
insert into t values(now(),now(),now());
由此可以看出值类型:
date: YYYY-MM-DD
time:HH-MM-SS
datetime:YYYY-MM-DD HH-MM-SS
timestamp:
timestamp:
timestamp的重要特点之一是:
与时区有关。
当插入日期时,会先转换为本地时区后存放;
而从数据库里取值,也需要将日期转为本地时区后显示。
所以不同时区看到的同一个时间可能不一样。
create table t4(
id1 timestamp not null default CURRENT_TIMESTAMP,
id2 datetime default null
);
SYSTEM就是显示为本地时区
tiemstamp常作为时间戳,主要应用于时区不同的场景
ENUM:
create table t (gender enum ('M','f'));
insert into t5 values('M'),('1'),('f'),(NULL);
ENUM存储:
1-255 以1字节形式存储
255-65535 以2个字节存储
ENUM类型是忽略大小写的,对于M,F存储时都默认将他们转换为了大写
而且并没有返回警告
ENUM只允许从值集合当中选取单个值,而不是一次取多个值