创建单标签的节点语法
CREATE (<node-name>:<label-name> {<key>:<Value> ... <n-key>:<n-Value>})
node-name | 创建的节点名称 |
---|---|
label-name | 节点标签名称 |
Property1-name:Propertyn-name | 属性是键值对。 定义将分配给创建节点的属性的名称 |
create(abc:shop{id:111,name:"dfsdf"})
create (stu:student{name:"tom"}),(ctiy:china{name:"shanghai"})
创建多个标签到节点
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
create (stu666:student6:xin:guanxi{name:"tom"})
create (st:student{name:"tom"})-[livein:staddress]->(city:Capit{name:"USA"})
match (stu:student{name:"tom"}),(abc:shop{id:111,name:"dfsdf"}) create(stu)-[st:stuent]->(abc)
在创建节点的时候可以只设计好需要的属性,不填入具体值而是置为NULL
create (p:parent) return p.name,p.age,p.height
MATCH (node-name:label-name)
从数据库获取有关节点和属性的数据
从数据库获取有关节点,关系和属性的数据
显示所有节点
MATCH (n) RETURN n
match (stu666:student6) return stu666.name
match (n:Capit) return n
match (n:student) where n.age>1 return n
match (t:china:abc) using scan t.abc where t.name='baihaisheng' return t
根据查询设置值
match (n) where n.name is null set n.name='baihaisheng' return n
MATCH (n:Person{name:"ddsg"}}) RETURN n
匹配出有任意关系的两个节点
MATCH p = (n)-[r]->(m) RETURN p
匹配节点时指定标签、属性和关系类型
MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '张'
根据关系属性过滤
MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f
Detach delete与delete区别:
前者删除节点和关系,后者只是删除节点,Neo4j CQL DELETE和REMOVE命令之间的主要区别 - DELETE操作用于删除节点和关联关系。,REMOVE操作用于删除标签和属性。
创建一个节点,只有一个属性name='baihaisheng'
CREATE (baihaisheng{name:'baihaisheng'})
给创建的baihaisheng节点,添加一个属性age=20,修改name属性值为"bhs"
MATCH (n {name:'baihaisheng'})
SET n.name='bhs'
SET n.age=20
RETURN n
添加一个标签
MATCH (n{name:'张'}) SET n:Person RETURN n
添加多个标签
MATCH (n{name:'张'}) SET n:Person:Student RETURN n
删除节点标签
MATCH (n{name:'张三'}) REMOVE n:Person RETURN n
为已经存在的两个节点添加关系
MATCH (a:Person {name: "张"}),
(b:Person {name: "李"})
MERGE (a)-[r:FRIENDS]->(b)
删除一个节和关系
MATCH (a)-[r:KNOWS]->(b) DELETE r,b
删除delete-关联
创建关系
match (stu1:student1),(stu2:student2) where stu1.age<>stu2.age create (stu1)-[r:classmate]->(stu2)
删除关系
match (stu1)-[r:classmate]->(stu2) delete r
补充一些其他关系
match (stu1:student1),(stu2:student2) create (stu1)-[r:classmate]->(stu2),(stu2)-[[r:classmate]->(stu1)
删除重复的节点
match (n:par{name='dsffddsf'}) with n skip 1 delete n
Neo4j CQL已提供SET子句来执行以下操作。
向现有节点或关系添加新属性
添加或更新属性值
添加一个tagline
match (stu:per{age:18) set stu.tagline='baihaisheng'
添加一个属性
match (stu:per{age:18) set stu.name='baihaisheng'
删除一个属性
match (stu:per) remove stu.name
Union需要前后的两个查询具有相同的列名
match (t:teach) return t.id union match (s.stu) return s.id
限制显示节点数,修剪CQL查询结果集底部的结果
match (n) return n limit 3
跳过几个节点
match (n) return n skip 3
MERGE命令是CREATE命令和MATCH命令的组合
MERGE = CREATE + MATCH
图中搜索给定模式,如果存在,则返回结果,不存在,则创建,对于已经存在的几点,作用只是查找他,并不会新增节点
match (st:stu)where st.name in ['dfsd','dsfdsfe'] return st
为"Person"标签的name属性创建索引
CREATE INDEX ON :Person(name)
删除索引
DROP INDEX ON :Person(name)
创建节点属性唯一约束
CREATE CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
删除节点属性唯一约束
DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
NEO4J中WITH的用法:和Oracle中with的用法相似,把with后面结果集当成一个查询结果、在这个结果基础上再做where条件的筛选
WITH语句是将第一部分匹配的输出作为下一部分匹配的输入
它使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向