Nullable

简介: Nullable

准确来说, Nullable 并不能算是一种独立的数据类型,它更像是一种辅助的修饰符,需要与基础数据类型一起搭配使用。 Nullable 类型与 Java8Optional 对象有些相似,它表示某个基础数据类型可以是 Null 值。其具体用法如下所示:

$ CREATE TABLE Null_TEST (
  c1 String,
  c2 Nullable(UInt8)
) ENGINE = TinyLog;点击复制复制失败已复制


通过 Nullable 修饰后 c2 字段可以被写入 Null 值:

$ INSERT INTO Null_TEST VALUES ('nauu', null);
$ INSERT INTO Null_TEST VALUES ('bruce', 20);
$ SELECT c1, c2, toTypeName(c2) FROM Null_TEST;
┌─c1────┬───c2─┬─toTypeName(c2)──┐
│ nauu  │ NULL │ Nullable(UInt8) │
│ bruce │   20 │ Nullable(UInt8) │
└───────┴──────┴─────────────────┘点击复制复制失败已复制


在使用 Nullable 类型的时候还有两点值得注意:

  1. 只能和基础类型搭配使用,不能用于数组元组这些复合类型,也不能作为索引字段
  2. 应该慎用Nullable类型,包括Nullable的数据表,不然会使查询和写入性能变慢。


在正常情况下,每个列字段的数据会被存储在对应的 [Column].bin 文件中。如果一个列字段被 Nullable 类型修饰后,会额外生成一个 [Column].null.bin 文件专门保存它的 Null 值。这意味着在读取和写入数据时,需要一倍的额外文件操作。

目录
相关文章
|
4月前
|
机器学习/深度学习 监控 数据可视化
Ultralytics是什么?
【8月更文挑战第3天】Ultralytics是什么?
262 0
|
6月前
|
计算机视觉
detectMultiScale
【6月更文挑战第8天】
316 4
The Sandwich Rule
目标:训练一个可以直接以任意宽度运行的单一网络。其实是在权重共享的条件下,我们可以根据不同的硬件设备挑选不同宽度的网络,不再重训练一个权重。
127 0
The Sandwich Rule
|
Serverless 程序员 云计算
Serverful
Serverful
180 0
|
Web App开发 前端开发 JavaScript
gulp
gulp 1. 安装 npm install --g gulp 2. 初始化 npm init 3.
1093 0
|
JavaScript 前端开发
|
JavaScript 前端开发