Mysql中的数据类型设计

Mysql中的数据类型设计

MySQL 8中支持多种数据类型,每种数据类型都有其特定的用途和设计策略。在设计数据库时,需要根据实际需求选择合适的数据类型。

数据类型

对于数据类型而言,其实大同小异,你要知道数据存到数据库,它的上游是程序,所以程序里面会有哪些数据类型呢!当然也别一次性去记每种数据类型的大小,但是必须要知道支持哪几种数据类型。

  • 整数类型:

    • TINYINT:1字节,范围-128到127(有符号)或0到255(无符号)
    • SMALLINT:2字节,范围-32768到32767(有符号)或0到65535(无符号)
    • MEDIUMINT:3字节,范围-8388608到8388607(有符号)或0到16777215(无符号)
    • INT:4字节,范围-2147483648到2147483647(有符号)或0到4294967295(无符号)
    • BIGINT:8字节,范围-9223372036854775808到9223372036854775807(有符号)或0到18446744073709551615(无符号)
  • 浮点数类型:

    • FLOAT:4字节,单精度浮点数,可以指定精度
    • DOUBLE:8字节,双精度浮点数,可以指定精度
  • 定点数类型:

    • DECIMAL:可变长度,高精度小数,可以指定精度和小数位数,适合于货币、金融等场景
  • 日期和时间类型:

    • DATE:日期,格式为’YYYY-MM-DD’
    • TIME:时间,格式为’HH:MM:SS’
    • DATETIME:日期和时间,格式为’YYYY-MM-DD HH:MM:SS’
    • TIMESTAMP:自动记录创建或修改的日期和时间,格式为’YYYY-MM-DD HH:MM:SS’
  • 字符串类型:

    • CHAR:固定长度字符串,最多255个字符
    • VARCHAR:可变长度字符串,最多65535个字符
    • TEXT:可变长度文本字符串,最多65535个字符
  • 二进制类型:

    • BINARY:固定长度二进制数据,最多255个字节
    • VARBINARY:可变长度二进制数据,最多65535个字节
    • BLOB:可变长度二进制大对象,最多65535个字节
  • 枚举类型和集合类型:

    • ENUM:枚举类型,可从预定义的值列表中选择
    • SET:集合类型,可从预定义的值列表中选择多个值

以上只是平时用的比较多的类型,其实还有像 JSON、UUID 这些就不一一列举了。

TIMESTAMP受服务器时区设置影响,会根据时区再次转换后存入

timestamp的允许时间范围只能到2038年

数据类型设计过程

  • 根据存储的数据范围选择合适的整数类型,避免使用过大或过小的整数类型浪费存储空间。

  • UNSIGNED属性:如果数据不需要负数,可以考虑使用无符号整数类型,可以将整数的范围翻倍。

  • 根据精度和存储范围选择合适的浮点数类型。注意浮点数类型会存在精度问题,不适合用于精确计算。

  • 适用于对精度要求较高的金融、货币等场景,能够精确表示指定位数的小数。

  • 根据实际需要选择合适的日期和时间类型。TIMESTAMP在MySQL 8中有特殊的自动更新属性,适合表示记录的创建时间或修改时间,趁它还能用就赶紧用吧。

  • 根据实际存储的数据长度选择定长或不定长的字符串类型。

  • 对于较长的文本字段可以考虑使用TEXT类型,但是尽量少用。

  • 尽量使用占用空间最小的数据类型,减少存储空间的占用,并提高查询效率。

  • 避免过度使用TEXT/BLOB类型:TEXT和BLOB类型属于大对象类型,不适合频繁的查询和索引,尽量避免过度使用。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值