入门neo4j数据库
简介
RDBMS 与 GDBMS
RDBMS 是以 表、行、列存储数据的数据库;GDBMS是以图形存储的数据库。
neo4j就是图数据库,GDBMS的一种。它很适用于遍历大量数据。
数据模型
属性图模型规则
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示。
- 关系具有方向:单向和双向。
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
- 每个关系都是定向的,若没有方向则会抛出错误
图形数据库数据模型是由:节点,关系,属性构成的,就像这样
CQL
CQL是Cypher查询语言,Neo4j选用CQL作为查询语言
CQL 数据类型
CREATE\&MERGE
CREATE 用于创建节点,关系,以及为节点或关系添加标签
创建无属性节点:CREATE (<node-name>:<label-name>)
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>) 创建多个标签到节点
node-name : 节点名 lable-name: 标签名,我们一般用标签名来访问某个节点的详细信息
创建有属性节点:
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
: : 键值对,name为属性名,value为属性值
而MERGE和CREATE是差不多的,唯一区别是MERGE在插入新的节点,属性或关系时会先检索数据库,若添加到是重复项则不会添加,不重复才会添加。 具体语法与CREATE一致
MERGE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
SET
SET用于添加新属性
常用:MATCH (test:TestDB) SET test.age=10 return TestDB
MATCH\&RETURN
从数据库获得节点,关系,属性的数据
MATCH
(
<node-name>:<label-name>
) return <node-name>.<propertyn-name>
值得注意的是,MATCH和RETURN函数不能单独使用,常配合使用,如。
MATCH(dept:Dept) return dept //查询Dept下的内容
MATCH(dept:Dept) return dept.location //查询Dept下的所有location属性
# 查询Employee标签下 id=123,name="Lokesh"的节点
MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p
关系
Neo4j的节点间有两种关系:单向关系与双向关系。其被用作来描述节点与节点之间的关系
CREATE (<node1-name>:<label1-name>)-
[<relationship-name>:<relationship-label-name>]
->(<node2-name>:<label2-name>)
创建新节点与新关系
MATCH (a:Chinese),(b:Dog)
where a.name="Yangfan" AND b.name="ergu"
create (a)-[r:Relationship{ref:"Leader"}]->(b)
return r
从现有节点创建关系
WHERE
和MYSQL的where语句很类似,即MATCH查询的限制函数
WHERE <property-name> <comparison-operator> <value> 简单的WHERE子句
它是节点或关系的属性名称。
比较运算符
值
DELETE\&REMOVE
DELETE用于删除节点或关系
常用: MATCH(e:Employee) DELETE e
REMOVE用于删除属性
常用:MATCH (book { id:122 }) REMOVE book.price