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 兼容性¶
NebulaGraph 中,NULL 的比较和操作与 openCypher 不同,后续也可能会有变化。
NULL 的比较¶
NebulaGraph 中,NULL 的比较操作不兼容 openCypher。
NULL 的操作和返回¶
NebulaGraph 中,对 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"} |
+--------------------------+
最后更新:
September 4, 2023