表设计-数据类型的选择

312 阅读2分钟

1、为表中的字段选择合适的数据类型

  • 当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是时间或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型。

2、如何选择正确的整数类型

image.png

3、如何选择正确的实数类型

image.png

4、如何选择Vachar和Char类型

-----------------------------------------------------------
Vachar类型的存储特点
1、vachar用于存储边长字符串、只占用必要的存储空间
2、列的最大长度小于255则只占用一个额外字节用于记录字符串长度
3、列的最大长度大于255则要占用两个额外字节用于记录字符串的长度

Vachar长度的选择问题
1、使用最小的符合需求的长度

Vachar的适用场景
1、字符串列的最大长度比平均长度大很多
2、字符串列很小被更新
3、使用了多字节字符集存储字符串
-----------------------------------------------------------
Char类型的存储特点
1Char类型是定长的
2、字符串存储在Char类型的列中会删除末尾的空格
3Char类型的最大宽度为255

Char类型的适用场景
1Char类型适合存储长度近似的值
2Char类型适合存储短字符串
3Char类型适合存储经常更新的字符串列

5、如何存储日期类型

DataTime类型
    以YYYY-MM-DD HH:MM:SS[.fraction]格式存储日期时间
    datetime=YYYY-MM-DD HH:MM:SS
    datetime=YYYY-MM-DD HH:MM:SS.fraction
    DateTime类型与时区无关,占用8个字节的存储空间
    时间范围1000-01-01 00:00:009999-12-31 23:59:59
    
TimeStamp类型
    存储了由格林尼治时间197011日到当前时间的秒数
    以YYYY-MM-DD HH:MM:SS.[.fraction]的格式显示,占用4个字节
    时间范围1970-01-012038-01-19
    timestamp类型显示依赖于所指定的时区
    在行的数据修改时可以自动修改timestamp列的值
    
Date类型和Time类型
    date类型用于保存1000-01-019999-12-31之间的日期
    time类型用于存储时间数据,格式为HH:MM:SS
    
存储日期时间数据的注意事项
    不要使用字符串类型来存储日期时间数据

6、如何为InnoDB选择住建

  • 主键应该尽可能的小
  • 主键应该是顺序增长的
  • InnoDb的主键和业务主键可以不填