Neo4j图数据库基本的操作

创建节点

创建单标签的节点语法

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

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
添加或删除属性(set、remove)

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

Union需要前后的两个查询具有相同的列名

match (t:teach) return t.id union match (s.stu) return s.id
Limit

限制显示节点数,修剪CQL查询结果集底部的结果

match (n) return n limit 3
Skip

跳过几个节点

match (n) return n skip 3
Merge操作

MERGE命令是CREATE命令和MATCH命令的组合
MERGE = CREATE + MATCH
图中搜索给定模式,如果存在,则返回结果,不存在,则创建,对于已经存在的几点,作用只是查找他,并不会新增节点

In操作
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
with

NEO4J中WITH的用法:和Oracle中with的用法相似,把with后面结果集当成一个查询结果、在这个结果基础上再做where条件的筛选
WITH语句是将第一部分匹配的输出作为下一部分匹配的输入

关系

它使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值