NULL¶
默认情况下,插入点或边时,属性值可以为NULL
,用户也可以设置属性值不允许为NULL
(NOT NULL
),即插入点或边时必须设置该属性的值,除非创建属性时已经设置默认值。
NULL 的逻辑操作¶
AND
、OR
、XOR
和NOT
的真值表如下。
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 兼容性¶
Nebula Graph 中,NULL 的比较和操作与 openCypher 不同,后续也可能会有变化。
NULL 的比较¶
Nebula Graph 中,NULL 的比较操作不兼容 openCypher。
NULL 的操作和返回¶
Nebula Graph 中,对 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"} |
+--------------------------+
最后更新:
March 7, 2023