Table of Contents generated with DocToc
- 创建没有属性的节点
- 使用属性创建节点
- 在没有属性的节点之间创建关系
- 使用属性创建节点之间的关系
- 为节点或关系创建单个或多个标签
创建没有属性的节点:
#格式:
CREATE(<node_name>:<label_name>)
#例子:
CREATE(stu:Student)
创建有属性的节点:(注:属性值得用‘’或“”标注)
#格式:
CREATE(
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>,(每个属性之间用逗号分开)
.......
<Propertyn-name>:<Propertyn-Value>
}
)
#例子:
CREATE(stu:Student{name:'danny',age:26})
- 从数据库获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
#格式:
MATCH(
<node-name>:<label-name>
)
#例子:
MATCH(stu:Student)
Note: 如果我们单独使用它,那么我们将InvalidSyntax错误。 如果你观察到错误消息,它告诉我们,我们可以使用MATCH命令与RETURN子句或更新子句
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
- 在两个现有的节点之间创建无属性的关系
- 在两个现有的节点之间创建有属性的关系
- 在两个新节点之间创建无属性的关系
- 在两个新节点之间创建有属性的关系
- 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
基本语法
- – 表示一个无指向的关系
- –> 表示一个有指向的关系
CREATE(:)-[]->(:)
[<relationship_name>:<relationship_label>
{
<Property1-name>:<Property1-Value>
}
] """"
eg:
[role]#只有名字
[role:ACTION_IN]#标签名字都有
[:ACTION_IN]#省略了名字,只有标签
[role:ACTION_IN{roles:'Advanced'}]#有名字,有标签,有属性等
note: 由于关系不能单独创建,所以这里需要与MATCH,CREATE等一起使用,即引出了模式这一说法
- ()表示头节点和尾节点
- [ ]表示关系
完整写法
CREATE(
node_name:node_lable
{Property-name:Property-Value})-
[relationship_name:relationship_label]->
(node_name:node_label
{Property-name:Property-Value}
)
eg:
CREATE(
tea:Teacher:Actor{name: "素人"} )
-[teach:ACTED_IN{roles: ["star"] } ]->
(stu:Student{name: "Kurry"}
)
MATCH (e:Customer),(cc:CreditCard)
CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
这里关系名称为“r”,关系标签为“DO_SHOPPING_WITH”,e和Customer分别是客户节点的节点名称和节点标签名称。cc和CreditCard分别是CreditCard节点的节点名和节点标签名。
MATCH (cust:Customer),(cc:CreditCard)
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)
CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})
-[movie:ACTION_MOVIES{rating:1}]->
(video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
WHERE <condition>
WHERE <condition> <boolean-operator> <condition>
note:
- CQL中的布尔运算符:or,and,not,xor
- 比较运算符:==,<,>,= condition语法
<property-name> <comparison-operator> <value>
prepared:
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
CREATE (emp1:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})
CREATE (emp2:Employee{id:124,name:"sqwe",sal:36000,deptno:20})
CREATE (emp3:Employee{id:125,name:"qwer",sal:37000,deptno:30})
CREATE (emp4:Employee{id:126,name:"asdf",sal:38000,deptno:40})
eg:
MATCH (emp:Employee)
WHERE emp.name = 'asdf' OR emp.name = 'sqwe'
RETURN emp
REMOVE子句主要用于删除节点或关系的属性,这点跟DELETE有些差别。 DELETE是删除节点或关系,但不删除属性。
DELETE和REMOVE命令之间的主要区别
- DELETE操作用于删除节点和关联关系。
- REMOVE操作用于删除标签和属性。
// CREATE (book:Book {id:122,title:"Neo4j Tutorial",pages:340,price:250})
// match (b:Book) return b;
match (b:Book{id:122}) remove b.price return b;
// 删除很多个属性,用逗号(,)分隔开
MATCH (book { id:122 })
REMOVE book.price,book.id,book.pages
RETURN book
MATCH (m:Movie)
REMOVE m:Picture
- 向现有节点或关系添加新属性
- 添加或更新属性值
MATCH (dc:DebitCard)
SET dc.atm_pin = 3456
RETURN dc