目录
- [0. 简述](#0. 简述)
- [1. 创建节点](#1. 创建节点)
-
-
- 创建单个节点
- 创建多个节点
- 创建带标签的节点
- 创建具有多个标签的节点(用冒号":"分隔)
- [创建具有属性的节点(在"{ }"中指定这些属性,用逗号分隔)](#创建具有属性的节点(在“{ }”中指定这些属性,用逗号分隔))
- 验证:返回数据库中的所有节点
- 返回创建的节点
-
- [2. 创建关系](#2. 创建关系)
-
-
- 使用节点创建关系
- 使用节点和标签创建关系
- 使用标签和属性创建关系
- 创建完整路径
- [3. 合并命令](#3. 合并命令)
- 将节点与标签合并
- 将节点与属性合并
- 合并关系
-
0. 简述
CQL 代表密码查询语言。就像 Oracle 数据库有查询语言 SQL,Neo4j 有 CQL 作为查询语言。
1. 创建节点
创建单个节点
cql
CREATE (node_name);
其中(;)是可选的。
创建多个节点
cql
CREATE (node_name1),(node_name2)
创建带标签的节点
cql
CREATE (node:label)
创建具有多个标签的节点(用冒号":"分隔)
cql
CREATE (node:label1:label2:...labeln)
创建具有属性的节点(在"{ }"中指定这些属性,用逗号分隔)
cql:
CREATE (node:label1{name:"zhangsan", year:1999, country:"China"})
验证:返回数据库中的所有节点
cql
MATCH (n) RETURN n;
返回创建的节点
cql
CREATE (node:label1{name:"zhangsan", year:1999, country:"China"}) RETURN node
2. 创建关系
首先在数据库中创建两个节点Dhawan和Ind,如下:
cql
CREATE (Dhawan:player {name:"Shikar Dhawan", YOB:1985, POB:"Delhi})
CREATE (Ind:Country {name:"India"})
使用节点创建关系
在两节点间建立一个名为 BATSMAN_OF 的关系
cql
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
最后,返回两个节点以查看创建的关系
cql
RETURN Dhawan, Ind
使用节点和标签创建关系
cql
MATCH (a:player), (b:Country) WHERE a.name="Shikar Dhawan" AND b.name = "India" CREATE (a)-[r:BATSMAN_OF]->(b) RETURN a,b
使用标签和属性创建关系
cql
MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India"
CREATE (a)-[r:BATSMAN_OF {Matches:5, Avg:90.75}]->(b) RETURN a,b
创建完整路径
cql
CREATE p = (Node1 {properties})-[:Relationship_Type]-> (Node2 {properties})[:Relationship_Type]->(Node3 {properties}) RETURN p
3. 合并命令
MERGE 命令是 CREATE 命令和 MATCH 命令的组合。
Neo4j CQL MERGE 命令在图中搜索给定模式。如果存在,则返回结果。
如果它在图中不存在,那么它会创建一个新的节点/关系并返回结果。
首先,在数据库中创建两个标签为 Dhawan 和 Ind 的节点。创建从 Dhawan 到 Ind 的类型为"BATSMAN_OF"的关系,如下:
cql
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
将节点与标签合并
Neo4j 会验证是否存在具有给定标签的任何节点。如果没有,将创建当前节点。
cql
MERGE (Jadeja:player) RETURN Jadeja
将节点与属性合并
cql
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) RETURN Jadeja
合并关系
cql
MATCH (a:Country), (b:Tournament)
WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013"
MERGE (a)-[r:WINNERS_OF]->(b)
RETURN a, b
未完待续