Neo4j入门-CQL

前言

(Cypher)-[:LOVES]-(Graph Technology)

Cypher是一种图形查询语言,本文简称为CQL,特性如下:

它是Neo4j图形数据库的查询语言。

它是一种声明性模式匹配语言。

它遵循SQL语法。

它的语法非常简单,是人性化、可读的格式。

创建

CQL可以很方便的创建节点与关系,主要使用create与merge,create可以直接创建,merge则相当于create+match。

create

1.创建结点

create (p:Person{name:'周杰伦',age:22})

对应关系如下:

create (p    :Person   {name      :'周杰伦'  ,age      :22}) 
create (变量p:标签Person{字段名name :值'周杰伦',字段名age:值22}) 

ps:这里的p只是创建节点的一个临时的变量名,哪怕所有属性一样,也会生成新的对象,ID为自增长,不需要特殊处理

其中变量、字段、值皆可省略,最少可以仅有标签,即向该标签插入空白节点(ID自增长)

该CQL执行结果如下:

可以看到我们添加了1个标签,创建了1个节点,设置了2个属性,并在1毫秒内完成。

然后执行查看语句确认我们创建的数据:

这样我们就成功执行了一次创建节点的操作。

2.创建关系

  • 直接建立关系与节点

    create (a:RelatedPerson{name:'周杰伦'})-[r:娶了]->(b:RelatedPerson{name:'昆凌'})
    

    对应关系如下:

    create (a    :RelatedPerson   {name      :'周杰伦' })-[r    :娶了    ]->(b    :RelatedPerson   {name    :'昆凌'})
    create (变量a:标签RelatedPerson{字段名name:值'周杰伦'})-[变量r:标签 娶了]->(变量b:标签RelatedPerson{字段name:值'昆凌'})  
    

    这条语句起了两个作用,向标签RelatedPerson插入了a、b两个节点,同时将其用标签r连接起来

  • 根据已有的数据创建关系

     match (a:RelatedPerson),(b:RelatedPerson) where a.name = '昆凌' and b.name = '周杰伦' create (a)-[c:嫁给了]->(b) return a,b
    

    对应关系如下:

    match (a    :RelatedPerson   ),(b    :RelatedPerson   ) where a   .name     = '昆凌'   and b   .name     = '周杰伦'   create (a   )-[c    :嫁给了        ]->(b   ) return a,b
    match (变量a:标签RelatedPerson),(字段b:标签RelatedPerson) where 变量a.字段name = 值'昆凌' and 变量b.字段name = 值'周杰伦' create (变量a)-[变量c:关系标签 嫁给了]->(变量b) return 变量a,变量b
    

    这里其实可以分为两段看 ,第一段是查询

    match (a:RelatedPerson),(b:RelatedPerson) where a.name = '昆凌' and b.name = '周杰伦'
    

    从标签RelatedPerson中查询出了a,b两个节点,条件是a的name属性是昆凌,b的name属性是周杰伦。

    第二段是把这两个数据新建一个关系连接起来。

    create (a)-[c:嫁给了]->(b) return a,b
    

    ps:这里建立关系都是根据现有数据建立的,如果我再新建一个周杰伦,新的周杰伦并不会建立关系

原文地址:https://www.cnblogs.com/tinging/p/12285083.html