一、创建节点Node
(一) 创建不带属性的节点
CREATE ( nodeName : nodeLabel )
下面是这条语句的详细解释:
-
CREATE:
这是一个用于创建新节点、关系的关键字。 -
( nodeName : nodeLabel )
:-
nodeName
: 这是你为新节点指定的引用变量名(可选),方便在后续的CQL操作中引用这个节点,要注意它并不是节点的名字,请看下面的例子。 -
nodeLabel
: 这是为节点指定的标签,用于对节点进行分类。标签可以帮助你更好地组织和查询数据。
-
例如,我们执行如下语句(
点击蓝色箭头执行)
在Neo4j左侧的导航栏中,Node labels下多了个"大学"标签,但Graph界面中,我们新创建的节点没有显示"石河子大学",而是显示了系统自动为这个节点生成的唯一标识也就是id,原因会在后面的章节中说明。
然后,我们用DELETE
关键字将这个节点删除 (MATCH
关键字根据标签和属性进行查询,将查询到的结果返回给引用变量nodeLabel
(下图中是石河子大学),具体用法将在后面介绍)
(二) 创建带属性的节点
CREATE (
nodeName : nodeLabel
{
propertyKey1 : value1,
propertyKey2 : value2,
...
}
)
让我们逐部分解析:
-
CREATE
: 这个关键字用于创建新的节点或关系。 -
( )
: 括号内的部分定义了你要创建的节点。 -
nodeName
: 这是节点的引用变量名(可选)。它使你能够在同一查询中或后续查询中引用这个节点。 -
nodeLabel
: 这是节点的标签,用于分类和描述节点的类型。 -
{ ... }
: 花括号内是节点的属性定义。你可以为节点设置一个或多个属性,属性以键值对的形式表示。例如,propertyKey1
和propertyKey2
是属性名,value1
和value2
是对应的值(字符串需要用引号包裹)。
类比一下面向对象, 我们发现: nodeLable就像是面向对象中的类, 而nodeName则是这个类的一个实例对象, 花括号中的那些键值对则是这个对象的属性及其属性值
例如,我们执行下面的语句:
CREATE (
石河子大学 : 大学
{
name : '石河子大学',
地址 : '新疆维吾尔自治区石河子市北四路221号'
}
)
可以看到name
属性为绿色,说明它被系统保留为关键字,而它就是节点的名字
二、创建关系Relationship
(一) 创建已存在节点间的关系
为了演示两个已存在节点关系的创建,我们需要再创建一个新的节点,对此我们执行如下语句:
CREATE (
信息科学与技术学院 : 学院
{
name : '信息科学与技术学院',
地址 : '石河子大学北区'
}
)
这样我们的数据库中就有两个节点了
接下来我们创建这两个已存在的节点之间的关系
执行下面的语句
MATCH (u : 大学 {name: '石河子大学'} ) ,
(c : 学院 {name: '信息科学与技术学院'} )
CREATE (c)-[:BELONGS_TO]->(u)
下面是详细解释:
-
(u : 大学 {name: '石河子大学'})
-
u
: 这是一个引用变量,代表我们匹配到的节点。 -
:大学
: 这是节点的标签,表示该节点的类型为“大学”。 -
{name: '石河子大学'}
: 这是一个属性条件,用于找到名称为“石河子大学”的节点。
-
-
(c : 学院 {name: '信息科学与技术学院'})
-
(c)
: 表示“信息科学与技术学院”的节点,之前在MATCH
中找到的节点。 -
-[:BELONGS_TO]->
: 这部分表示要创建一个关系。BELONGS_TO
是关系的类型,箭头表示关系的方向,从c
指向u
。 -
(u)
: 表示“石河子大学”的节点,作为关系的目标。
-
-
(c)-[:BELONGS_TO]->(u)
-
c
: 另一个变量,代表匹配到的节点。 -
:学院
: 表示该节点的类型为“学院”。 -
{name: '信息科学与技术学院'}
: 查找名称为“信息科学与技术学院”的节点。
-
(一) 创建尚未存在的节点及其关系
有了前面创建节点和关系的经验,我们就可以将他们一同创建,而不必先创建节点然后再创建关系,具体语法规则如下:
CREATE
(
nodeName1 : nodeLabel1
{
propertyKey1 : value1,
propertyKey2 : value2,
......
}
)
-[:RELATIONSHIP_LABEL]->
(
nodeName2 : nodeLabel2
{
propertyKey1 : value1,
propertyKey2 : value2,
......
}
)
举个例子,执行如下代码(nodeName是否为空都不影响,但为了美观我都填了)
CREATE
(
软件工程 : 专业
{
name : '软件工程'
}
)
<-[:属于]-
(
小李 : 学生
{
name : '小李',
性别 : '男'
}
)
运行结果如下:
标签:石河子大学,name,CQL,创建,CREATE,---,Neo4j,节点,nodeName From: https://blog.csdn.net/m0_62756968/article/details/143304683