一. Neo4j 图数据库介绍
Neo4j 属于图形数据库,与更广为人知的 MySQL 等关系型数据库不同,其保存的数据格式为节点和节点之间的关系,构建和查询关系数据非常高效便捷。
推荐博客:https://www.cnblogs.com/mojita/p/10480856.html (里面很详细介绍图数据库,以及Neo4j 的重要基础点)
二. Neo4j 安装
Windows环境下安装:
推荐博客:https://www.cnblogs.com/ljhdo/p/5521577.html#4484538 (里面很详细介绍Neo4j 的下载安装及使用)
注:我下载安装后,没有在环境变量中添加NEO4J_HOME变量,直接在cmd中启动,如图:显示启动成功,即可在浏览器中访问
启动后访问浏览器,如图:Password 同 Username 一样,进去后修改密码
遇到的问题:
1. 如果安装了 neo4j版本为 3.5.22 的,谷歌浏览器使用84 可使用,本人之前版本为53 不可访问。
三. 简单命令:
a. CREATE 创建 :
例 :CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
b. MATCH 检索匹配
例:MATCH (dept: Dept) RETURN dept (返回所有属性值)
或 :MATCH (dept: Dept) RETURN dept.deptno,dept.dname,dept.location (返回指定属性值)
注:不能单独使用MATCH 命令从数据库检索数据,要与RETURN子句或更新子句一起用。也不能单独使用return命令,要与match一起用。
c.创建节点之间关系
例:
MATCH (e:Customer),(cc:CreditCard)
CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
查看已创建的关系:
MATCH (e)-[r:DO_SHOPPING_WITH ]->(cc)
RETURN r
同时删除已创建的节点和关系:
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
d. DELETE和REMOVE删除
- DELETE操作用于删除节点和关联关系。
- REMOVE操作用于删除标签和属性。
例:remove删除某属性
MATCH (book { id:122 })
REMOVE book.price
RETURN book
e. set 添加属性
MATCH (book:Book)
SET book.price = 3456
RETURN book
f. ORDER BY 排序
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name DESC
g. union两子句结果合并
例:union子句结果合并 并去重, 两子句必须相同的属性名,必须要加as 起别名,否则会报错
MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number
union all 子句结果合并 不去重,全部显示。
h. limit 和Skip 类似分页使用
例:limit 取前两行
MATCH (emp:Employee)
RETURN emp
LIMIT 2
例:skip 跳过两行,取后面的全部
MATCH (emp:Employee)
RETURN emp
SKIP 2
可合用:跳过两行取一行
MATCH (emp:Customer)
RETURN emp
skip 2 limit 1
I: MERGE 合并
MERGE = CREATE + MATCH
MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。
1.如果使用create添加,不会去匹配是否有存在的相同节点,执行一次,就会添加一条数据。
2.如果使用merge添加,会匹配是否有存在的相同节点,有则不创建,没有则新添加。
例:
MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"}
L:NULL 空值
在使用create,若不指定属性,默认是null,
CREATE (e:Employee)
例:使用not null 去空
MATCH (e:Employee)
WHERE e.id IS NOT NULL
RETURN e.id,e.name,e.sal,e.deptno
K:IN 包含
例:
MATCH (e:Employee)
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno
以上只是简单的入门语法。
最后:
Neo4j 还支持创建索引,UNIQUE约束,处理字符串的函数等等,其功能同Oracle 和mysql 相似,只是语法有点不同,详细的资料参考:https://www.w3cschool.cn/neo4j/