跳到主要内容
版本:3.12.0

NULL

默认情况下,插入点或边时,属性值可以为NULL,用户也可以设置属性值不允许为NULL(NOT NULL),即插入点或边时必须设置该属性的值,除非创建属性时已经设置默认值。

NULL 的逻辑操作​

AND、OR、XOR和NOT的真值表如下。

aba AND ba OR ba XOR bNOT a
falsefalsefalsefalsefalsetrue
falsenullfalsenullnulltrue
falsetruefalsetruetruetrue
truefalsefalsetruetruefalse
truenullnulltruenullfalse
truetruetruetruefalsefalse
nullfalsefalsenullnullnull
nullnullnullnullnullnull
nulltruenulltruenullnull

OpenCypher 兼容性​

悦数图数据库 中,NULL 的比较和操作与 openCypher 不同,后续也可能会有变化。

NULL 的比较​

悦数图数据库 中,NULL 的比较操作不兼容 openCypher。

NULL 的操作和返回​

悦数图数据库 中,对 NULL 的操作以及返回结果不兼容 openCypher。

示例​

使用 NOT NULL​

创建 Tag,名称为player,指定属性name为NOT NULL。

nebula> CREATE TAG IF NOT EXISTS player(name string NOT NULL, age int);

使用SHOW命令查看创建 Tag 语句,属性name为NOT NULL,属性age为默认的NULL。

nebula> SHOW CREATE TAG player;
+-----------+-----------------------------------+
| Tag | Create Tag |
+-----------+-----------------------------------+
| "student" | "CREATE TAG `player` ( |
| | `name` string NOT NULL, |
| | `age` int64 NULL |
| | ) ttl_duration = 0, ttl_col = """ |
+-----------+-----------------------------------+

插入点Kobe,属性age可以为NULL。

nebula> INSERT VERTEX player(name, age) VALUES "Kobe":("Kobe",null);

使用 NOT NULL 并设置默认值​

创建 Tag,名称为player,指定属性age为NOT NULL,并设置默认值18。

nebula> CREATE TAG IF NOT EXISTS player(name string, age int NOT NULL DEFAULT 18);

插入点Kobe,只设置属性name。

nebula> INSERT VERTEX player(name) VALUES "Kobe":("Kobe");

查询点Kobe,属性age为默认值18。

nebula> FETCH PROP ON player "Kobe" YIELD properties(vertex);
+--------------------------+
| properties(VERTEX) |
+--------------------------+
| {age: 18, name: "Kobe"} |
+--------------------------+