图数据库neo4j学习笔记(1)


Neo4j图数据库学习笔记

简单数据结构介绍:

Neo4j主要有节点和边构成,属性key:value组成。

节点会有所属标签,以及含有属性,边关系也会有所属标签和含有属性。

关系具有方向分为单向和双向。

每个关系包含“开始节点”或“从节点”和“结束节点”或“结束节点”

简单Cql操作:

1.Create命令


create (emp:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})

解释:创建一个节点以及所属标签和属性

emp:创建的节点名称

Employee:创建的节点所属的标签

id,name,sal,deptno:节点的属性

123,”lokesh”,35000,10:属性的值


create (emp:Employee{id:124,name:"cala",sal:350000,deptno:100}) return emp

解释:创建一个节点以及所属标签和属性并返回这个节点


create (emp:Employee:People{id:124,name:"cala",sal:350000,deptno:100}) return emp

解释:也可以创建多个标签Employee,People是emp的多个标签名称


create(depa:Department{id:10,name:"学习部门"}) return depa

解释:创建一个部门

2. match和return命令

Match (emp:Employee) return emp.deptno

解释:查询Employee标签下的emp节点,并返回emp.deptno属性值


3. 关系命令

create(depa)-[r:DEPA_TO_EMP{id:1}]->(emp)

解释:创建一个depa到emp的关系

r:关系名称

DAPA_TO_EMP:关系标签

Id:关系下的属性

1:属性的值

4. Where子句

Match(emp:Employee) where emp.id=123 return emp

解释:where做条件过滤

5. Delete删除节点和关系

match(depe: Dept) delete depe

解释:删除节点depe,如果节点上有关系需要先删除关系


Match(depe:Dept)-[r]-(depa:Department) delete r

解释:删除关系r

6. Set添加属性和Remove删除标签和属性

Match(depa:Department) set depa.depa_info = "好好学习的部门" return depa

解释:给depa节点添加一个depa_info属性和值


Match(depa:department) remove depa.depa_info return depa

解释:删除depa节点上的depa_info属性和值

7. Sorting排序

match(emp:Employee)return emp.empid,emp.name,emp.salary,emp.deptnoorder by emp.name

解释:获取emp并且按照name升序排序。Tip:后面加desc变为逆序

8. Limit和skip子句

match (emp:Employee) return emp limit 1

解释:获取emp节点的结果第一条


match (emp:Employee) return emp skip 1

解释:获取emp节点的结果最后一条

9. Null值处理和in语句

match (emp:Employee) where emp.id is null return emp

解释:返回id为null的结果。Tip:is not null返回不为null的结果


Match(emp:Employee) where id in [123] return emp

解释:返回结果id在in里面的结果集

10. 索引

Create index on : Employee(name)

解释:在Employee标签下的节点属性name创建一个索引


Drop index on : Employee(name)

解释:删除在Employee标签下的节点属性name的索引

11. Unique

Create constraint on (emp:Employee) assert emp.id is unique

解释:在emp节点下emp.id属性创建一个唯一索引。Tip:添加前需保证属性里面不存在重复

drop constraint on (emp:Employee) assert emp.id is unique

解释:删除在emp节点下的id属性的唯一索引


12. Merge

Merge命令相当于match和create的结合命令,先执行match查询是否有结果。如果没有直接创建,如果有则返回查询的结果。

这个操作应该是个原子操作,在高并发情况下不会出现先查询后插入导致的并发问题。还可以防止插入重复的数据

例子: merge(dubbo:Person{name:”dubbo”}

13. String函数

Lower upper substring

例子:

MATCH (e:Employee) RETURN e.id,UPPER(e.name),e.sal,e.deptno

解释:查询Employee下的e节点的数据,并且把name属性返回的结果全部大写

MATCH (e:Employee) RETURN e.id,lower(e.name),e.sal,e.deptno

解释:查询Employee下的e节点的数据,并且把name属性返回的结果全部小写

MATCH (e:Employee) RETURN e.id,SUBSTRING(e.name,0,2),e.sal,e.deptno

解释:查询Employee下的e节点的数据,并且只取name属性返回结果的前两个字符

14. 聚合函数和关系函数

聚集功能

描述

COUNT

它返回由MATCH命令返回的行数。

MAX

它从MATCH命令返回的一组行返回最大值。

MIN

它返回由MATCH命令返回的一组行的最小值。

SUM

它返回由MATCH命令返回的所有行的求和值。

AVG

它返回由MATCH命令返回的所有行的平均值。

示例:

match (e:Employee) return count(*)

Match (e:Employee) return max(e.sal),min(e.sal)

Match(e:Employee) return sum(e.sal),avg(e.sal)

15.关系函数列表

功能

描述

STARTNODE

它用于知道关系的开始节点。

ENDNODE

它用于知道关系的结束节点。

ID

它用于知道关系的ID。

TYPE

它用于知道字符串表示中的一个关系的TYPE。


示例:

Match (dapa)-[r:DAPA_TO_EMP]->(emp) return startnode(r),endnode(r),id(r),type(r)


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务