NULL

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

NULL的逻辑操作

ANDORXORNOT的真值表如下。

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

OpenCypher兼容性

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

NULL的比较

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

NULL的操作和返回

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

示例

使用NOT NULL

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

  1. nebula> CREATE TAG player(name string NOT NULL, age int);

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

  1. nebula> SHOW CREATE TAG player;
  2. +-----------+-----------------------------------+
  3. | Tag | Create Tag |
  4. +-----------+-----------------------------------+
  5. | "student" | "CREATE TAG `player` ( |
  6. | | `name` string NOT NULL, |
  7. | | `age` int64 NULL |
  8. | | ) ttl_duration = 0, ttl_col = """ |
  9. +-----------+-----------------------------------+

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

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

使用NOT NULL并设置默认值

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

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

插入点Kobe,只设置属性name

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

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

  1. nebula> FETCH PROP ON player "Kobe"
  2. +-----------------------------------------+
  3. | vertices_ |
  4. +-----------------------------------------+
  5. | ("Kobe" :player{age: 18, name: "Kobe"}) |
  6. +-----------------------------------------+