mysql创建表是字段类型的选择
整数类型
可以使⽤的⼏种整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使⽤8,16,24,32,64位存储空间。尽量使⽤满⾜需求的最⼩数据类型
字符和字符串类型
1. varchar根据实际内容长度保存数据
1、使⽤最⼩的符合需求的长度。
2、varchar(n) n⼩于等于255使⽤额外⼀个字节保存长度,
n>255使⽤额外两个字节保存长度。
3、varchar(5)与varchar(255)保存同样的内容,
硬盘存储空间相同,但内存空间占⽤不同,是指定的⼤⼩。
4、varchar在mysql5.6之前变更长度,
或者从255⼀下变更到255以上时时,都会导致锁表。
应⽤场景
1、存储长度波动较⼤的数据,如:⽂章,有的会很短有的会很长
2、字符串很少更新的场景,每次更新后都会重算并使⽤额外存储空间保存长度
3、适合保存多字节字符,如:汉字,特殊字符等
2. char固定长度的字符串
1、最⼤长度:255
2、会⾃动删除末尾的空格
3、检索效率、写效率会⽐varchar⾼,以空间换时间
应⽤场景
1、存储长度波动不⼤的数据,如:md5摘要
2、存储短字符串、经常更新的字符串
BLOB和TEXT类型
varchar2最大长度MySQL 把每个 BLOB 和 TEXT 值当作⼀个独⽴的对象处理。
两者都是为了存储很⼤数据⽽设计的字符串类型,分别采⽤⼆进制和字符⽅式存储。
datetime和timestamp
1. datetime
1、占⽤8个字节
2、与时区⽆关,数据库底层时区配置,对datetime⽆效
3、可保存到毫秒
4、可保存时间范围⼤
5、不要使⽤字符串存储⽇期类型,占⽤空间⼤,损失⽇期类型函数的便捷性
2. timestamp
1、占⽤4个字节
2、时间范围:1970-01-01到2038-01-19
3、精确到秒
4、采⽤整形存储
5、依赖数据库设置的时区
6、⾃动更新timestamp列的值
3. date
1、占⽤的字节数⽐使⽤字符串、datetime、int存储要少,使⽤date类型
只需要3个字节
2、使⽤date类型还可以利⽤⽇期时间函数进⾏⽇期之间的计算
3、date类型⽤于保存1000-01-01到9999-12-31之间的⽇期
使⽤枚举代替字符串类型
有时可以使⽤枚举类代替常⽤的字符串类型,mysql存储枚举类型会⾮常紧凑,会根据列表值的数据压缩到⼀个或两个字节中,mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm⽂件中保存“数字-字符串”映射关系的查表
create table enum_test(e enum(‘fish’,‘apple’,‘dog’) not null);
insert into enum_test(e) values(‘fish’),(‘dog’),(‘apple’);
select e+0 from enum_test;
特殊类型数据
⼈们经常使⽤varchar(15)来存储ip地址,然⽽,它的本质是32位⽆符号整数不是字符串,可以使⽤INET_ATON()和INET_NTOA函数在这两种表⽰⽅法之间转换
案例:select inet_aton(‘1.1.1.1’)
select inet_ntoa(16843009)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论