前言
(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:这里建立关系都是根据现有数据建立的,如果我再新建一个周杰伦,新的周杰伦并不会建立关系