关于mysql:MySQL数据类型

2次阅读

共计 1607 个字符,预计需要花费 5 分钟才能阅读完成。


整型利用细节:

​。生产中应该抉择哪种类型

​ 在满足业务所需数值范畴的状况下,抉择占用字节更少的类型。能够节俭内存空间

​。int(11)、tinyint(4) 与 zerofill(0 填充) 的问题

​ 只是显示属性,没有实际意义,只示意宽度,不会影响字段的值

​ alter table t1 modify a tinyint zerofill not null;

a tinyint(3) unsigned zerofill NOT NULL

​ 正数加 zerofill 是不被容许的

​。int 类型转换为 bigint 注意事项

​ 如果该列是主键,则无奈应用 onlineddl

​ 如果不是主键,反对 onlineddl

​ onlineddl:执行 ddl 语句,能够反对 dml 语句,不会阻塞 dml 语句

​。ipv4 地址抉择什么类型寄存

​ 倡议应用 int 类型存储。

​ inet_aton(‘ip’) 将 ip 地址转为整型 select inet_aton(‘255.255.255.255’);

​ inet_ntoa(‘int’) 将整型转为 ip 地址 select inet_ntoa(‘4294967295’);


浮点型利用细节:

​。生产中浮点数如何抉择?

​ 但凡波及到资金的,倡议抉择 decimal。

​。测试环境中插入随机字符?

​ floor() : 向下取整 select floor(‘1.23’);

     ceil():select ceil('1.23');

     round():select round(0.54); select round(0.5354, 2); 

​ rand():取 0 - 1 随机值 select rand();

​ 公式:floor(i+rand()(j-i)) 随机取 i - j 整数 select floor(1+rand()(10-1)); 随机取 1 -10

​ insert into t2 values(repeat(‘a’, floor(1+rand()*(30-1))));

​。float 长度细节

​ float 没有定义长度,默认占 4 字节

​ float(p) , 0<=p<=24, 占 4 字节

​ 25<=p<=53, 占 8 字节

​。float 列不指定精度时,不能做等值查问

​ 等值查问后果为空。

​。decimal 最大长度

​ decimal(M,D) M 最大值 65,D 最大值 30。

字符串类型利用细节:

​。varchar 是变长类型,须要额定的 1 - 2 个字节

​ varchar(30) <255 额定占用 1 字节,>255 额定占 2 字节

​。char(30)、varchar(30),在 utf8 字符集下,占字节数计算

​ char(30) 占用字节数 =30*3

​ varchar(30) 占用字节数 =30*3+1

​。varchar 理论长度超过 255 字节时,会被作为 text 解决

​。varchar 长度越长排序时应用更多的内存空间,所以 varchar 类型的字段长度越短越好

​。字段超长可能会造成页溢出(off page)

​ page 16k,字段超过 page 大小的一半,就会产生 off page

​。大文本大字段尽量不要去应用,业务上必须有的话,能够寄存到独立子表中

​。对 text 列进行排序,只会用到 max_sort_length 字节去作排序

​。enum() 枚举类型,细节

​ enum(v_list), v_list 最多能够是 65535 个,如果不超过 255 占 1 字节,超过 255 占 2 字节。

日期类型利用细节:

​。timestamp,当行被更改时,会自动更新为以后工夫

​ 5.6.5 之后 datetime 也能够设置自动更新为以后工夫

​ alter table t3 modify d datetime default current_timestamp on update current_timestamp;

​。5.6.4 之后底层都是以整型存储,效率高,举荐应用 datetime

​。日期函数

​ now() 以后工夫 select now();

​ cast(now() as date) 工夫转换 select cast(now() as date);

正文完
 0