Neo4j学习(2)--简单入门

时间:2024-03-31 17:53:08

1.Neo4j属性图数据模型

  节点:包含多个属性和标签。一个节点就是一条数据

  属性:键值对形式

  关系:单向与双向,连接节点,也可包含多个属性和标签

  标签:表示节点和关系的类型,可以有多个,同时可以通过标签来分组,Neo4j的内置功能,在查询和模式索引更高效

2.Neo4j--Cypher

  官方对Cypher的介绍:

  Neo4j学习(2)--简单入门

  (以下为自己的直译)

  Cypher由于它在查询修改图形上的高展示与高效率,使得它成为图形的操作首选语言。Cypher自己本身语法简单,并且功能强大,再复杂的数据库查询语句也能用Cypher简单的展示,这就让我们不必再去纠结数据库语句的复杂性,更能让我们专注于需要展示的数据上。

  Cypher的语法借鉴的是Haskell和Python等,同时它的好多关键字都是我们熟悉的SQL关键字。Cypher在书写上跟英语的书写一样,这样看起来更简单。

  关于Cypher的介绍,可以看看官方文档,描述的很详细。

  Cypher 语法不区分大小写。

  Cypher简单语法入门:

  1> create命令  create(<nodeName:labelName { propertyName1:propertyValue1, propertyName2:propertyValue2,...})

      nodeName:创建的节点名称 

      labelName:创建的节点标签名称

      propertyName:节点属性名称

      propertyValue:节点属性值

     都是以键值对形式书写。

      例:

      创建无属性的节点:create(a:A)

      创建由属性的节点:create(user:User{name:"zhangsan"})

  2> match & return 命令 match(nodeName:lableName)   return nodeName.propertyName1, nodeName.propertyName2,.....

      注意match必须和return一起使用,否则单独使用会报错。

    Neo4j学习(2)--简单入门

      例:

      查询user节点中的name属性: match(user:User) return user.name

      查询user节点的数据:match(user:User) return user

      Neo4j学习(2)--简单入门

 

  3> 节点之间关系的创建命令  箭头标记(->)

       1️⃣使用现有节点创建无属性的关系

      语法:

      match  (nodeName1:labelName1), (ndeName2:labelName2)

      create (nodeName1)-[relationshipName:relationshipLabel]->(nodeName2)

      return relationshipLabel

      其中:

           nodeName1:从节点名(FORM)   labelName1:从节点标签名

           nodeName2:到节点名(TO)       labelName2:到节点标签名

           relationshipName: 关系名称          relationshipLabel:关系标签名

      例:

      创建客户和信用卡之间的关系(客户和信用卡的节点已经创建)

      match (e:Customer),(cc:CreditCard)

      create (e)-[r:DO_SHOPPING_WITH]->(cc)

      2️⃣使用现有节点创建由属性的关系

      语法: 

      match  (nodeName1:labelName1), (ndeName2:labelName2)

      create (nodeName1)-

                [relationshipName:relationshipLabel{propertyName1:propertyValue1,propertyName2:propertyValue2,....}]

                ->(nodeName2)

      return relationshipLabel

      其中:关系属性也是用键值对表示

            propertyName:关系的属性名     propertyValue:关系的属性值

      例:

      为标签为DO_SHOPPING_WITH的关系增加shopdate和price属性:

      match (e:Customer),(cc:CreditCard)

      create (e)-[r:DO_SHOPPING_WITH{shopdate:"11/30/2018",price:55000}]->(cc)

      return r

      3️⃣使用新节点创建无属性的关系

      语法:

      create (nodeName1:nodeLabel1)-[relationshipName:relationshipLabel]->(nodeName2:nodeLabel2)

      return relationshipName

      其中,return子句可以省略。

      例:

      创建boy与girl两个节点,关系为girl_friend

      create (boy:Boy)-[r:GIRL_FIREND]->(girl:Girl)

      return r

      4️⃣使用新节点创建由属性的关系

      语法:

      create (nodeName1:nodeLabel1{propertyName:propertyVaule,...})-

                 [relationshipName:relationshipLabel{propertyName:propertyVaule,...}]->

                 (nodeName2:nodeLabel2{propertyName:propertyVaule,...})

      return relationshipName

      例:

      根据上面的boy和girl,创建李雷和韩梅梅,关系的属性为date

      create(boy:Boy{name:"李雷"})-[r:GIRL_FRIEND{date:"11/30/2018"}]->(girl:Girl{name:"韩梅梅"})

      5️⃣查询关系节点的详细信息

      语法:

      match (nodeName1)-[relationshipName:relationshipLabel]->(nodeName2)

      return relationshipName

      例:

      查询上面创建的girl_friend关系

      match(boy)-[r:GIRL_FRIEND]->(girl) return r

  4>where子句  用来过滤查询,与sql中的where一样

      语法:

      where nodeName.propertyName OPERATIRON value

      例:

      match(user:User) where user.name = "John Johson" return user

  5> delete命令

      语法:

      删除节点:

      delete nodeName1,nodeName2,....

      删除节点以及关系:

      delete nodeName detach delete nodeName

      例:

      match (a:A) delete a

      删除一个节点以及其所有的关系

      match (e:Customer) detach delete e

  6> remove命令 用来删除属性和标签

      语法:

      remove nodeName.propertyName,....

      如果要同时删除属性和标签的话,需要用.句号来分隔。

      例:

      先创建一个book节点:CREATE (book:Book {id:122,title:"Neo4j Tutorial",pages:340,price:250})

      删除price属性:

      match (book:Book) remove book.price return book

      删除标签:

      match(b:B) remove b:B

  7> set命令

      向节点或者关系添加新属性

      例:

      向book 增加price :

      Neo4j学习(2)--简单入门

  8> order by 命令  同sql ,默认升序展示

     Neo4j学习(2)--简单入门

 

  9> union和 union all 同SQL union 交集  union all  并集

  10> limit 命令 现在查询展示条数

       MATCH (n) RETURN n LIMIT 25

  11> merge 合并  in 操作符

      MATCH (gp1:GoogleProfile1) RETURN gp1.Id,gp1.Name

      MATCH (e:Employee)  WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno      

----------------------------------------------------------------------------------------------------

参考:1.Neo4j官网资料  https://neo4j.com

         2.W3CSchool

         3.http://neo4j.com.cn/