mysql 列类型选择

原则:

能小不要大

能定不要变

能数值,不要字符串。

1、在精度要求高的应用中,建议使用定点数来存储数值,以保证结果的准确性

create table t2(price float(9,2),dprice decimal(9,2));

insert into t2 values(1234567.55,1234567.55);

 

 

 

2、录入手机号带来的问题,

使用char(11)会占用较多的字节,gbk占用2字节*11,utf-8占用3*11,

可以使用bigint,宽度是20,只占用8个字节。

uploading.4e448015.gif

 

3、 ip地址也可以采用int整型。

如果用varchar()来存储ip地址。

255.255.255.255       utf-8字符串会占用15*3+2=47字节,

如果使用int的只占用4个字节。

使用函数进行转换:

inet_aton():把ip地址转换成整数

inet_ntoa();把整数转换成ip地址。

 

IPv4存储为int型

PHP:

ip2long() :ip地址到整数的转换,

long2ip():整数到ip地址的转换。

MySQL: inet_aton(), inet_ntoa();

4、根据需求选择最小整数类型。比如用户在线状态:离线,在线,离开,忙碌,隐式等,可以采用0,1,2,3,来表示。

5、避免字段内容为null,原因:null不利于索引,要用特殊的字节来标注,在磁盘上占据的空间其实更大。

create table t3(mobile bigint);

create table t5(name char(1) not null default '');

insert into t5 values('a'),('b'),('c');

create table t6(name char(1));

insert into t6 values('a'),(null),('c');

 

另外的一个字节用于维护null,所以以后在创建表时,避免字段内容为null

uploading.4e448015.gif

 

NULL的判断只能用is null,is not null

NULL 影响查询速度,一般避免使值为NULL

 

6、三范式

第一范式:数据的字段不能在分割,只要是关系型数据库则天生就满足第一范式。

第二范式:通俗的说,就是不能有完全相同的两条记录,可以使用一个主键解决。

第三范式:通俗的说,存储的数据不能冗余。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章