跳转至

NULL

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

NULL 的逻辑操作

ANDORXORNOT的真值表如下。

a b a AND b a OR b a XOR b NOT a
false false false false false true
false null false null null true
false true false true true true
true false false true true false
true null null true null false
true true true true false false
null false false null null null
null null null null null null
null true null true null null

OpenCypher 兼容性

NebulaGraph 中,NULL 的比较和操作与 openCypher 不同,后续也可能会有变化。

NULL 的比较

NebulaGraph 中,NULL 的比较操作不兼容 openCypher。

NULL 的操作和返回

NebulaGraph 中,对 NULL 的操作以及返回结果不兼容 openCypher。

示例

使用 NOT NULL

创建 Tag,名称为player,指定属性nameNOT NULL

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

使用SHOW命令查看创建 Tag 语句,属性nameNOT 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,指定属性ageNOT 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"}  |
+--------------------------+

最后更新: September 4, 2023