数据库 (图 Neo4j 使用教程)

时间:2022-04-25 15:43:32

 

  图数据库功能:  主要是处理具有深度 相关联的数据,尤其是几何性增长的这种关系,比关系型数据库更具有优势。

  

  一个图是由   节点和 关系构成, 节点和关系都可以包含属性。

  一个关系连接两个节点,必须有一个开始节点和结束节点。

 

  Neo4j 的安装

  下载地址:桌面版(学习使用)https://neo4j.com/artifact.php?name=neo4j-desktop-offline-1.2.1-setup.exe

  windows 下安装社区版 zip

  1.解压文件

  2.  cmd   进入bin 下面,执行   neo4j install-service     

  3. neo4j start  启动服务

  4.http://localhost:7474 

  5. neo4j stop  停止服务

  6. neo4j uninstall-service 卸载  

    7. 默认用户名称和密码  neo4j    neo4j 

 

  Neo4j 的使用

 

 命令
格式 示例

新增 节点名称:标签名称{key:value}   

需要注意的是  key 不能使用双引号包裹

CREATE ( <node-name>:<label-name> { <key>:<Value> ........ <n-key>:<n-Value> } )
create(user:Use {name:"小明",age:12 })
一个节点可以创建多个标签
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
 

MATCH查询

 

match(user:User) return user

match(user:User) return user.name

 建立关联    create(user:User)-[r:Goods]->(book:Book)
 匹配 建立新的关系    match(user:User),(book:Book) create (user)-[r:Goods{price:12,num:1}]->(book) return r
 更新   match(user:User) set user.userName = "xiaomi" return user

 

  

  基本的用法

  我们先以数据库表进行抽象(User 用户表     Goods 商品表    Records 购买记录 )

  对应字段 :User(name,age)   Goods(name,price)    Records(userName,goodName,num)

 

  1. 首先我们创建一个用户 类

  添加两个人小明和小花

  create (user:User{name:"xiaoming",age:12})

  create (user:User{name:"xiaoming",age:13})

  create (user:User{name:"xiaohua",age:15})

  2. 创建两个商品

  create (good:Goods{name:"肯德基",price:40})

  create (good:Goods{name:"java书",price:24.5})

  3. 小明买了两本书

  match(user:User),(good:Goods) where user.name = "xiaoming" and good.name = "java书" create (user)-[r:Records{userName:user.name,goodName:good.name,num:2}]->(good) return r

  4.  查询总共有多少人

  match(user:User) return user

  5. 小明修改了书的数量

  match(user:User{name:"xiaoming"})-[r:Records{userName:user.name,goodName:good.name}]->(good:Goods{name:"java书"}) set r.num = 3  return r

  6. 小明退了买的书

  match(user:User{name:"xiaoming"})-[r:Records{userName:user.name,goodName:good.name}]->(good:Goods{name:"java书"}) delete r 

   7. 移除对象的属性(remove 用于移除属性或者标签)

  match(user:User{name:"xiaoming"})  remove user.name return user    (相当于只移除了小明里面的name 属性)

  

  


  

  创建一个深度比较长的数据(案例1)

  数据库 (图 Neo4j 使用教程)

 

  

   深度进行匹配

  match(n:Num{name:3})-[r:Father]->(b:Num)-[r1:Father]->(c:Num) return n,b,c

  结果:

  数据库 (图 Neo4j 使用教程)

 

  


 

 

  开始(案例2)

数据库 (图 Neo4j 使用教程)

进行匹配

match(n:Num{name:3})-[r:Father | Mother]->(b:Num)-[r1:Father | Mother]->(c:Num) return n,b,c

结果:

数据库 (图 Neo4j 使用教程)