MySQL字段类型及使用

本文主要介绍MySQL的字段。

首先,字段类型分为以下几大类:数值型、日期时间型、字符串型、复合类型

先插入一个换算:1字节(byte)(B)=8bit(位)(b)   1M=1024B  1G=1024M  1T=1024G

 

数值型:

整形:

MySQL字段类型及使用_第1张图片

注意事项:

以INT为例,int(11) 后面的这个数字近表示最大显示长度,并不是指最大存储数值。其他类似


浮点型:

MySQL字段类型及使用_第2张图片

注意事项:

1、双进度占用存储资源是单精度的一倍。一般对精度要求高才用double。否则为了节约资源。我们都用float来代替小数。 

2、金钱相关不适用以上两种,使用 decimal 。这个字段长度在现在市面上运行版本(5.+) 值,

       如DECIMAL(5,2) :- 9 9 9 . 9 9,9999.99  占用 7个字节。 

       所占字节长度:DECIMAL(M, D) 为  M+2个字节


字符型:

MySQL字段类型及使用_第3张图片

注意事项:

1、char(5),varchar(5) 都能存储5个字符,单varchar要比char多占用一个字节,多出来一位存储字符串长度

2、char会根据定义长度分配空间,并剔除末尾空格

3、更新操作,字符串变长,varchar空间占用会变多,MyISAM将行拆开不同片段处理,而InnoDB分裂页使行可以存在业内,容易产生碎片,而char定长,不容易产生碎片

4、字符串长短差异较大时使用varchar 如果长度差不多或者相同char

5、varchar能存储255字符,超长的字符串需使用text;

6、查询速度  char>varchar>text

7、char(10),varchar(10)等括号内的数字在MySQL5.0.3后表示字符数,而不是字节数

8、varchar、text在MySQL5.0.3以后占用内存空间最大都是65535字节,

9、varchar、char 可以设置默认值,text没有默认值


时间日期格式

MySQL字段类型及使用_第4张图片

1、timestamp超出范围的值无法设置。

2、实际工作中我基本上不用以上字段,基本上会使用时间戳,存储int字段中。整体下来int性能相对较好一些(实际与存储引擎等均有关系,具体可创建表录入百万数据设置不同字段类型查询比较,我测试int整体下来相对好一点,仅个人意见)。


表设计注意事项:

1、表名、字段名尽量简明释义,注意添加注释

2、尽可能的设置自增主键

3、实现具体逻辑是尽量不要使用存储过程

4、字段类型为枚举或者布尔值是尽量使用tinyint

5、尽量将索引字段值设置为非空,null 会导致索引失效

6、能用到整形尽量用整形,能用短字符尽量用短字符,能用char尽量用char

7、text尽量不要使用

8、IP信息需要存储时尽量转成整形存int

 

 

其他信息后续如果想起来再继续补充

你可能感兴趣的:(mysql,经典面试题汇总)