天天看点

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

21 常用的时间类型

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

实战时间类型的特点

  • 新建表
MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
  • 插入数据
    MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
  • 查询结果
    MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
  • 由于北京时间是东八区,因此我们更改时区
    MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
  • 新的查询结果
    MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

    这就是timestamp具有时区性的特点

22 字符串类型的特点

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

23 如何为数据选择合适的的数据类型

23.1 优先选择符合存储数据需求的最小数据类型

INET_ATON( '255.255.255.255' ) = 4294967295
INET_ NTOA(4294967295) ='255.255.255.255'      

23.2 谨慎使用ENUM,TEXT字符串类型

23.2.1 ENUM 的迁移

数据迁移的时候,它几乎不可能被其他数据库所支持,如果 ENUM 里面是字符串,对于其他数据库来说就更郁闷了,还不能设为tinyint等类型的字段

23.2.2 ENUM 的索引

纯数字类型的不建议用枚举类型,这是因为在 ENUM 内部维护有一个隐形的索引,也是按数字排列的,容易混淆;添加枚举值也是一个问题,如果添加在最后还好,如果添加在中间什么位置的话,原来的隐藏索引将不再起作用

23.2.3 ENUM 字段 的NULL 值

ENUM 字段默认是可以插入 NULL 值的,这个就比较尴尬了,而且没有办法优化

23.2.4 插入的值

如果插入的值比ENUM设定的值大,会默认保存成接近的那个值;插入的值不能包含函数,不能传递参数

所以如果插入的值是数字型的,建议用tinyint,如果插入的值是字符型的,建议用char。如果真想用 ENUM 也是可以得,前提是要了解到 ENUM 的弊端,就可以有效规避这些问题

23.4 同财务相关的数值型数据,必需使用decimal类型。

24 为项目表们选择合适的数据类型

24.1 课程表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.2 章节表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.3 小节表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.4 课程分类表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.5 课程难度表

24.5 课程方向表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.6 用户表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考
MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.7 问答评论表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.8 笔记表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

24.9 用户选课表

MySQL8.0实战(二) - 数据库设计(下)22 字符串类型的特点23 如何为数据选择合适的的数据类型24 为项目表们选择合适的数据类型30 如何为表和列选择合适的名字31 总结参考

30 如何为表和列选择合适的名字

  • 所有数据库对像名称必须使用小写字母可选用下划线分割
  • 所有数据库对像名称定义禁止使用MySQL保留关建字
  • 数据库对像的命名要能做到见名识义,并且最好不要超过32个字
  • 临时库表必须以tmp为前缀并以日期为后缀
  • 用于备份的库,表必须以bak为前缀并以日期为后缀
  • 所有存储相同数据的列名和列类型必须一致。

31 总结

工程师的必备技能

1、前奏:【业务分析】欲善其事,必三思而行;

2、高潮:【逻辑设计】范式化VS反范式化;

3、结束:【物理设计】存储引擎&数据类型&命名规约。

内容综述

  • 数据库的逻辑设计规范
  • MySQL的常用存储引擎及其选择方法
  • MySQL的常用数据类型及其选择方法
  • 如何为表选择适合的存储类型
  • 如何为表起一个好名

参考

数据库设计 MySQL慎用 ENUM 字段