Neo4j入门基础:CREATE,DELETE,SET,REMOVE(看不懂我直接吃...)

1. 创建节点

1.1 创建一个节点
cpp 复制代码
create (s:student1)

创建一个标签为student1的节点

1.2 创建多个节点
cpp 复制代码
create (s2:student2),(s3:student3)

同时创建两个节点,标签分别为:student2,student3

1.3 创建节点并附带(多个)标签
cpp 复制代码
create (p:person:student:child),(t:person:teacher:mother)

创建两个节点,第一个节点有人,学生,孩子 三个标签;第二个节点有人,老师,母亲三个标签

1.4 创建节点并附带属性值
cpp 复制代码
create (s:student4{age:22,name:'ekko',tel:123456}),(s1:student5{age:23,name:'bob',tel:654321})

创建两个节点

student4,属性值为:age:22,name:'ekko',tel:123456

student5,属性值为:age:23,name:'bob',tel:654321

2. 创建关系

cpp 复制代码
create (s:student4{age:22,name:'ekko',tel:123456}),(s1:student5{age:23,name:'bob',tel:654321})

执行上面代码创建两个学生节点,其中每个学生都有三个属性

2.1 创建两个节点,并创建一条关系
cpp 复制代码
create(s:student4)-[rel:classmate]->(s1:student5)

创建两个节点:student4,student5。和一条单向关系,由student4指向student5

2.2 创建带属性的两个节点,并创建一条关系
cpp 复制代码
create (s:student6{name:'jack'})-[r:classmate]->(s1:student7{name:'jerry'})

创建两个节点和一条关系:其中student6和student7指明了属性,同时关系由student6指向student7

2.3 创建带属性的两个节点,并创建带属性的一条关系
cpp 复制代码
create (s:student6{name:'jack'})-[r:classmate{classroom:'class_one'}]->(s1:student7{name:'jerry'})

创建了两个节点和一条关系,关系中有属性classroom,值为class_one

3. 查询(MATCH)

cpp 复制代码
create (s:student4{age:22,name:'ekko',tel:123456}),(s1:student5{age:23,name:'bob',tel:654321})

假设我们已经执行了以上代码,创建了两个学生节点以及对应属性

3.1 查询节点
cpp 复制代码
match (s:student4) return s 

查找标签为student4的节点,并返回节点(一定要跟return语句,不然会报错)

cpp 复制代码
match (s:student4) return s.age, s.name, s.tel

查找到对应的节点后,我们可以只返回需要的属性值

3.2 查询两个节点,创建关系并返回结果
cpp 复制代码
match (s:student1),(s1:student2)
create (s)-[r:classmate{classroom:'class_one'}]->(s1)
return r

查找两个节点student1,student2,在两个节点中创建新的关系classmate并返回结果

3.3 根据关系查询节点,并返回节点的值
cpp 复制代码
match (s)-[r:classmate]->(s1)
return s, s1

匹配满足关系为classmate的节点,并返回节点

4. Where语句

cpp 复制代码
Where <属性名称> <比较运算符> <值>
Where   s.age         =       22 

除此之外,还有AND,OR,NOT,XOR布尔运算符等

4.1 利用WHERE创建指定关系节点
cpp 复制代码
match (s1:student4),(s2:student5)
where s1.age=22 and s2.age=23
create (s1)-[r:friends{time:"2020/10/1"}]->(s2)
return r

寻找标签为student4并满足age=22和标签为student5并满足age=23的两个节点,创建一条关系friends,并赋予属性值"2020/10/1",最后返回关系结果

5. DELETE语句

5.1 通过边删除节点
cpp 复制代码
match (s1)-[r:classmate]->(s2) 
delete s1,s2,r

找到满足存在关系为classmate的节点,删除节点和它们之间的关系

5.2 通过节点删除边
cpp 复制代码
match (p:student4)-[rel]->(p1:student5) where p.name='ekko' and p1.name='bob' 
delete p, p1, rel

找到标签为student4且属性age=ekko的节点,标签为student5且属性age=bob的节点,如果他们之间存在关系,

删除节点和它们之间的关系

6. REMOVE和SET语句

使用Neo4j CQL SET子句向现有节点或关系添加新属性。

使用Neo4j CQL REMOVE子句来删除节点或关系的现有属性。

REMOVE和DELETE的区别如下所示:

cpp 复制代码
create (s1:student1{age:12,name:'ekko'})-[r1:classmate{classroom:'class_one'}]->(s2:students{age:13,name:'bob'})
6.1 SET语句

首先创建两个学生节点,并创建一条关系

cpp 复制代码
match (n:student1) set n.tel=123456 return n

为student1节点添加一个tel属性,其值为123456

cpp 复制代码
match (n:student1) set n:child return n

为student1节点添加一个新的标签child

6.2 REMOVE语句
cpp 复制代码
match (n:student1) remove n:child return n

把student1节点的child标签移除掉

cpp 复制代码
match (n:student1) remove n.tel return n

把student1的tel属性移除掉

相关推荐
科技小花2 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化
X56614 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
虹科网络安全5 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717215 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi5 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
dFObBIMmai6 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python
szccyw06 小时前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
czlczl200209256 小时前
利用“延迟关联”优化 MySQL 巨量数据的深分页查询
数据库·mysql
ACP广源盛139246256737 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑