Neo4j
一. Neo4j 启动
(1)cmd中输入 :neo4j.bat console(适合第一次或者用管理员身份输入指令)
(2)cmd中输入:D:\neo4j-community-3.5.11\bin/neo4j start(路径+/neo4j start)
二. Neo4j CQL
1. CREATE
(一)创建一个节点
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
列如:create (emp:Employee{empage:10,empname:"Accounting",location:"Hyderabad"})
返回结果
(二)给一个节点多个标签
CREATE (m:Movie:Cinema:Film:Picture)
2.MATCH & RETURN
MATCH
(
<node-name>:<label-name>
)
RETURN
<node-name>.<property1-name>,
........
<node-name>.<propertyn-name>
MATCH与RETURN不能单独使用,需要配合使用才行
match(emp:Employee) return emp.name,emp.age
match(emp:Employee)return emp
3.关系基础
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>
{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
MATCH (cust:Customer),(cc:CreditCard)
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
4.WHERE
WHERE <condition>
<condition>语法:<property-name> <comparison-operator> <value>
MATCH(cust:Customer) where cust.name='Abc' return cust
5.DELETE
(一) 删除节点
DELETE <node-name-list>
MATCH (e:Employee) delete e
(二) 删除节点及关系
DELETE <node1-name>,<node2-name>,<relationship-name>
在这里插入代码片MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
6.REMOVE
(一)删除节点的属性
REMOVE <property-name-list>
MATCH (book { id:122 })
REMOVE book.price
RETURN book
(二)删除节点的标签
REMOVE <label-name-list>
MATCH (m:Movie)
REMOVE m:Picture
7.SET语句
SET <property-name-list>
MATCH (dc:DebitCard)
SET dc.atm_pin = 3456
RETURN dc
8.Sorting排序
ORDER BY子句
ORDER BY <property-name-list> [DESC]
MATCH (emp:Employee)
RETURN emp.empid,emp.empname,emp.empage
ORDER BY emp.empid DESC
9.UNION子句
<MATCH Command1>
UNION
<MATCH Command2>
MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,
cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,
dc.valid_from as valid_from,dc.valid_to as valid_to
UNION ALL子句
UNION ALL与UNION区别在于前者不会过滤重复行
10.LIMIT和SKIP子句
(一)LIMIT
LIMIT <number>
返回emp的前两行
MATCH (emp:Employee)
RETURN emp
LIMIT 2
(二)SKIP
SKIP <number>
返回emp的后两行
MATCH (emp:Employee)
RETURN emp
SKIP 2
11.MERGE
MERGE = CREATE + MATCH
在这里插入代码片MERGE (<node-name>:<label-name>
{
<Property1-name>:<Pro<rty1-Value>
.....
<Propertyn-name>:<Propertyn-Value>
})
MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})
用MERGE命令创建相同属性的同一个节点,MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。
12.IN
IN[<Collection-of-values>]
此查询仅返回在IN运算符中指定的id匹配的两行
在这里插入代码片MATCH (e:Employee)
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno
13.字符串函数
UPPER (<input-string>)
例:MATCH (e:Employee)
RETURN e.id,UPPER(e.name),e.sal,e.deptno
LOWER (<input-string>)
例:MATCH (e:Employee)
RETURN e.id,LOWER(e.name),e.sal,e.deptno
SUBSTRING(<input-string>,<startIndex> ,<endIndex>)
MATCH (e:Employee)
RETURN e.id,SUBSTRING(e.name,0,2),e.sal,e.deptno
返回name的前两个字符
14.AGGREGATION聚合
COUNT(<value>)
例:MATCH (e:Employee) RETURN COUNT(*)
MAX(<property-name> )
MIN(<property-name> )
例:MATCH (e:Employee)
RETURN MAX(e.sal),MIN(e.sal)
AVG(<property-name> )
SUM(<property-name> )
例:MATCH (e:Employee)
RETURN SUM(e.sal),AVG(e.sal)
15.关系函数
MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN STARTNODE(movie)
MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN ENDNODE(movie)
MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN ID(movie),TYPE(movie)
16.索引
创建索引
CREATE INDEX ON :<label_name> (<property_name>)
CREATE INDEX ON :Customer (name)
删除索引
DROP INDEX ON :<label_name> (<property_name>)
DROP INDEX ON :Customer (name)
17.UNIQUE约束
避免重复记录
强制执行数据完整性规则
(一)创建约束
CREATE CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUE
设置让number这个字段不可重复
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE
(二)删除约束
DROP CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUE
DROP CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE