写点什么

MatrixOne 从入门到实践 05——数据类型介绍

作者:MatrixOrigin
  • 2022-11-24
    上海
  • 本文字数:2111 字

    阅读完需:约 7 分钟

MatrixOne从入门到实践05——数据类型介绍

MatrixOne 从入门到实践——数据类型介绍

MatrixOne 的数据类型是和 MySQL 数据类型定义一致,可以参考:https://dev.mysql.com/doc/refman/8.0/en/data-types.html


在 MatrixOne 建表时,给字段定义一个恰当的数据类型是十分重要的。比如一下原则:


  • 尽可能使用数字类型来代替字符串类型

  • 尽可能使用更加准确的大小来描述字段类型

  • 如果数据没有 Null 存在,那么可以在定义字段时使用 Not Null

类型介绍

整数类型

该类数据类型代表为严格数值类型


浮点类型

该类数据类型代表近似数值类型


字符串类型

该类数据类型表示字符串类型


日期与时间类型

该类数据类型表示日期或者时间类型


Bool 类型

该类型表示布尔值类型


精确数值类型 Decimal

示例

整数类型

  • tinyint


​ 可以看出,tinyint 的范围为 [-128,127],超过这个范围或者不符合 tinyint 类型的数据 插入都会报错。


  • SMALLINT

  • 可以看出,smallint 的范围为 [-32768,32767],超过这个范围或者不符合 smallyint 类型的数据插入都会报错。

  • INT

  • 可以看出,int 的范围为 [-2147483648,2147483647],超过这个范围或者不符合 int 类型的数据插入都会报错。

  • BIGINT

  • 取值范围如果加了 unsigned,则最小值为 0,最大值翻倍,如 tinyint unsigned 的取值范围为(0~255)。

浮点数类型

浮点型在数据库中存放的是近似值



  • FLOAT32

  • FLOAT64

  • double 默认会保存 17 位数字

字符串类型

  • char

  • 无法手动指定 char 的个数,没有字符个数的限制,目前版本没有限制长度大小,可以导入超过 24 byte 的字符

  • varchar

  • 无法手动指定 char 的个数,没有字符个数的限制,目前版本没有限制长度大小,可以导入超过 24 byte 的字符串

时间与日期类型

  • date

  • datetime

  • timestamp

Bool 类型

除了数值 0 或者字符串 '0' 能被转换为 FALSE,其余任何数值和字符串数值转换均为 TRUE


mysql> select cast('465' as boolean);+----------------------+| cast(465 as boolean) |+----------------------+| true                 |+----------------------+1 row in set (0.00 sec)
mysql> select cast(465 as boolean);+----------------------+| cast(465 as boolean) |+----------------------+| true |+----------------------+1 row in set (0.00 sec)
mysql> select cast(0 as boolean);+--------------------+| cast(0 as boolean) |+--------------------+| false |+--------------------+1 row in set (0.00 sec)
mysql> select cast('0' as boolean);+--------------------+| cast(0 as boolean) |+--------------------+| false |+--------------------+1 row in set (0.00 sec)
复制代码

精确数值类型 Decimal

DECIMAL 列的声明语法是 DECIMAL(M, D). M 是有效数字的位数,取值范围是 1 到 38,D 是小数位数,取值范围是 1 到 38,但是不能大于 M。 如果不指定 D,默认为 0。如果不指定 M,默认为 10。


DECIMAL 列的数值以二进制的形式进行存储,在 MatrixOne 内部,只有 decimal64 和 decimal128 这两种表示形式。在 0-18 位精度内,一个 Decimal 数值占用 8 个字节的存储空间,在 19-38 位精度内,一个 Decimal 数值占用 16 个字节的存储空间。


mysql> select cast('123.456' as Decimal(6,2));+--------------------------------+| cast(123.456 as decimal(6, 2)) |+--------------------------------+|                         123.46 |+--------------------------------+1 row in set (0.00 sec)
mysql> select cast('123.456' as Decimal(5,2));+--------------------------------+| cast(123.456 as decimal(5, 2)) |+--------------------------------+| 123.46 |+--------------------------------+1 row in set (0.00 sec)
mysql> select cast('123.456' as Decimal(4,2));ERROR 20203 (HY000): invalid argument DECIMAL64, bad value 123.456mysql> select cast('123.456' as Decimal(5,3));ERROR 20203 (HY000): invalid argument DECIMAL64, bad value 123.456mysql> select cast('123.456' as Decimal(10,3));+---------------------------------+| cast(123.456 as decimal(10, 3)) |+---------------------------------+| 123.456 |+---------------------------------+1 row in set (0.00 sec)
mysql> select cast('123.456' as Decimal(5,2));+--------------------------------+| cast(123.456 as decimal(5, 2)) |+--------------------------------+| 123.46 |+--------------------------------+1 row in set (0.00 sec)
mysql> select cast('0.0456' as Decimal(5,2));+-------------------------------+| cast(0.0456 as decimal(5, 2)) |+-------------------------------+| 0.05 |+-------------------------------+1 row in set (0.00 sec)
mysql> select cast('0.012456' as Decimal(5,2));+---------------------------------+| cast(0.012456 as decimal(5, 2)) |+---------------------------------+| 0.01 |+---------------------------------+1 row in set (0.00 sec)
复制代码


发布于: 刚刚阅读数: 3
用户头像

MatrixOrigin

关注

还未添加个人签名 2021-12-06 加入

一个以技术创新和用户价值为核心的基础软件技术公司。

评论

发布
暂无评论
MatrixOne从入门到实践05——数据类型介绍_数据库_MatrixOrigin_InfoQ写作社区