Neo4j 数据库 基本操作语法

本文详细介绍了图数据库中节点、关系的命名规范,包括变量名、属性名、标签名及关系的大写规则。同时,提供了创建、查询、更新、删除节点及关系的Cypher语言示例,帮助读者快速掌握图数据库的基本操作。

命名规范

  1. 节点变量名—小写,属性名—小写
  2. 节点标签名—-首字母大写
  3. 关系—大写
  4. 是支持中文命名的

创建节点:标签

CREATE(节点名称:节点标签{属性名:属性值,属性名:属性值...}) 

create(:Student:Player{id:1,name:'罗书全'});

节点名称在创建时是可以省略的如:

create(:Student:Player{id:1,name:'罗书全'})

用已经存在的节点创建关系

MATCH (A节点:标签),(B节点:标签)  CREATE (A节点)  - [关系名称 : 关系标签{属性名:属性值,属性名:属性值...}]-> (B节点)

match (s:Student),(t:Teacher) create (t)-[r:TEACH{startTime:'2018-06-01'} ]->(s)

同理这里的关系名称也是可以省略的。这里的A节点和B节点 都是代指 你写什么都是无所谓的只是一个代指变量名 我理解是和方程式中的X,Y一样。

使用新节点创建关系

create (t:Teacher{name:'罗书全'})-[r:TEACH{startTime:'2018-06-01'} ]->(s:Student{name:'张三'})

删除节点/关系

match(t:Teacher) delete t

match(s:Student)-[r]-(t:Teacher) delete r,s,t

delete节点时,如果节点之间还有关系会报错,这时可以使用下面的语句,直接将节点和关系一起删除

match(t:Teacher) detach delete t

查询的基本语法

通过节点查询

--查所有的节点  这里的n也是代指同上。

MATCH (n)  WHERE  n.name ='罗书全' RETURN n; 

通过关系查询

无指向关系

match(n)--(m:Teacher) return n;

有指向关系

MATCH (:Person { name: '罗书全' })-->(m)
RETURN m;

 

### Neo4j 数据库操作指南 #### 1. 清空数据库 为了快速清空整个 Neo4j 数据库,可以使用以下 Cypher 命令来删除所有节点及其关联的关系: ```cypher MATCH (n) DETACH DELETE n ``` 这条命令会遍历所有的节点 `n` 并通过 `DETACH DELETE` 删除它们以及其连接的所有关系[^3]。 --- #### 2. 创建节点和关系 以下是创建节点和关系的基本语法: - **创建单个节点** ```cypher CREATE (a:Label {propertyKey: "PropertyValue"}) RETURN a ``` - **创建带有属性的节点并建立关系** ```cypher CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}), (a)-[:KNOWS]->(b) RETURN a, b ``` 此命令创建两个具有标签 `Person` 的节点,并定义了一个名为 `KNOWS` 的关系[^2]。 --- #### 3. 查询数据 查询是 Neo4j 中最常用的操作之一。下面是一些常见的查询示例: - **基本匹配查询** ```cypher MATCH (n:LabelName) RETURN n.propertyKey ``` - **带条件的查询** ```cypher MATCH (p:Person) WHERE p.age > 30 RETURN p.name, p.age ``` - **按 ID 排序的结果集** ```cypher MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id ASC ``` 如果需要降序排序,则可改为 `ORDER BY e.id DESC`。 --- #### 4. 更新数据 更新现有节点或关系的属性可以通过 `SET` 关键字实现: - **修改节点属性** ```cypher MATCH (p:Person {name: 'Alice'}) SET p += {age: 25} RETURN p ``` - **增加新属性** ```cypher MATCH (p:Person {name: 'Alice'}) SET p.newProperty = "New Value" RETURN p ``` --- #### 5. 删除数据 除了前面提到的清除全部数据外,还可以针对具体目标进行删除操作: - **删除指定节点** ```cypher MATCH (p:Person {name: 'Alice'}) DELETE p ``` - **仅删除某些属性而不影响其他部分** ```cypher MATCH (p:Person {name: 'Alice'}) REMOVE p.age RETURN p ``` --- #### 6. 导入外部文件 Neo4j 支持从 CSV 文件批量导入数据到图结构中。假设有一个员工列表存储于 `employees.csv` 文件里,那么可以用如下方式加载这些记录: - **准备CSV文件内容** ```csv id,name,salary,deptno 1,Alice,50000,HR 2,Bob,60000,RD ``` - **编写Cypher脚本完成映射转换** ```cypher LOAD CSV WITH HEADERS FROM 'file:///employees.csv' AS row CREATE (:Employee { id: toInteger(row.id), name: row.name, salary: toFloat(row.salary), deptno: row.deptno }) ``` 上述代码片段展示了如何利用内置函数处理不同类型字段值的同时构建新的顶点实例。 --- #### 7. 高级功能——模式匹配与复杂查询 当面对更复杂的场景时,比如查找朋友的朋友或者分析社交网络中的影响力传播路径等问题,就需要运用到更为精细的设计思路和技术手段了。例如寻找两个人之间是否存在间接联系可通过递归方法达成目的;而计算某个用户的推荐好友名单则可能涉及多层嵌套逻辑运算等等[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值