概述
DELETE
语句可以删除点或边。使用前,需先使用MATCH
语句获取待删除的点或边。
<delete statement> ::= [ "DETACH" | "NODETACH"] "DELETE" <delete item list>
<delete item list> ::= <delete item> [ { "," <delete item> }... ]
<delete item> ::= <value expression>
删除边的任一端点,这条边也会被删除。默认情况下,GQL不允许删除与边相连的点。
然而,您可使用关键词DETACH
删除点和与点相连的边。例如,删除点B
后,边1
、2
和4
也将被删除。
使用DELETE
或NODETACH DELETE
时,无法成功删除点B
,这是一种避免误删的安全措施。
如果没有指定DETACH
或NODETACH
,则自动应用DEDETACH
。
示例图集
以下示例以该图集为初始图集:
在空图集中运行以下语句创建示例图集:
INSERT (rowlock:User {_id: "U01", name: "rowlock"}),
(brainy:User {_id: "U02", name: "Brainy"}),
(mochaeach:User {_id: "U03", name: "mochaeach"}),
(purplechalk:User {_id: "U04", name: "purplechalk"}),
(c:Club {_id: "C01"}),
(rowlock)-[:Follows]->(brainy),
(mochaeach)-[:Follows]->(brainy),
(brainy)-[:Joins]->(c)
删除孤立点
本条语句删除孤立点purplechalk
:
MATCH (n:User {name: 'purplechalk'})
DELETE n
删除非孤立点
本条查询删除点rowlock
及其相连的边:
MATCH (n:User {name: 'rowlock'})
DETACH DELETE n
This query fails since the node rowlock
has an edge connected to it:
MATCH (n:User {name: 'rowlock'})
DELETE n
删除边
本条查询删除标签Follows
下的所有边:
MATCH ()-[e:Follows]->()
DELETE e