目录
Neo4j学习
CQL学习
1.CREATE命令
Neo4j CQL创建一个没有属性的节点
CREATE命令语法
CREATE (<node-name>:<label-name>)
“CREATE”命令用于创建没有属性的节点。 它只是创建一个没有任何数据的节点。
node-name | 我们要创建的节点名称 |
---|---|
label-name | 它是一个节点标签名称 |
注:应该使用<label-name访问节点详细信息
Neo4j CQL创建具有属性的节点
CREATE命令语法:
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
2.MATCH命令
Neo4j CQL MATCH 命令用于
·从数据库获取有关节点和属性的数据
·从数据库获取有关节点,关系和属性的数据
MATCH 命令语法:
MATCH
(
<node-name>:<label-name>
)
注意-我们不能单独使用 MATCH Command 从数据库检索数据。 如果我们单独使用它,那么我们将 InvalidSyntax 错误。要配合return等命令使用
3.RETURN语句
Neo4j CQL RETURN子句用于 -
·检索节点的某些属性
·检索节点的所有属性
·检索节点和关联关系的某些属性
·检索节点和关联关系的所有属性
RETURN命令语法:
RETURN
<node-name>.<property1-name>,
........
<node-name>.<propertyn-name>
注:return语句也不能单独使用
4.MATCH&RETURN
MATCH RETURN命令语法:
MATCH Command
RETURN Command
返回节点属性
MATCH (dept: Dept)
RETURN dept.deptno,dept.dname
返回节点
MATCH (dept: Dept)
RETURN dept
5.关系基础
基于方向性,Neo4j关系被分为两种主要类型。
·单向关系
·双向关系
没有属性的关系与现有节点
我们使用CQL MATCH命令检索现有的两个节点和CQL CREATE命令,以创建它们之间的新关系
语法:
MATCH (<node1-label-name>:<nodel-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 (xm:ytc),(cc:lzc) create (xm)-[r:Fall_in_love_with]->(cc)
MATCH (e)-[r:DO_SHOPPING_WITH ]->(cc)
RETURN r
待解决问题:不知道为什么没有UI显示
与现有节点的属性的关系
使用现有节点创建有属性的关系
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
使用新节点创建无属性关系
CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)
MATCH (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)
RETURN like
使用新节点创建属性关系
CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})
-[movie:ACTION_MOVIES{rating:1}]->
(video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
MATCH (video1:YoutubeVideo1)-[movie:ACTION_MOVIES]->(video2:YoutubeVideo2)
RETURN movie
检索关系节点的详细信息
语法:
MATCH
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
例:
MATCH (cust)-[r:DO_SHOPPING_WITH]->(cc)
RETURN cust,cc
6.CREATE创建标签
为节点创建多个标签
语法:
CREATE (m:Movie:Cinema:Film:Picture)
单个标签到关系
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
7.WHERE子句
CQL比较运算符
<> 否
MATCH (cust:Customer),(cc:CreditCard)
WHERE cust.id = "1001" AND cc.id= "5001"
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
8.DELETE
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
MATCH (e: Employee) DELETE e
9.REMOVE
Neo4j CQL DELETE和REMOVE命令之间的主要区别 :
·DELETE操作用于删除节点和关联关系。
·REMOVE操作用于删除标签和属性。
CREATE (book:Book {id:122,title:"Neo4j Tutorial",pages:340,price:250})
MATCH (book { id:122 })
REMOVE book.price
RETURN book
类似于SQL中的
ALTER TABLE BOOK REMOVE COLUMN PRICE;
SELECT * FROM BOOK WHERE ID = 122;
10.SET子句
更改属性值
MATCH (book:Book)
SET book.title = 'superstar'
RETURN book
11.ORDER BY
order by 默认升序
order by DESC 降序
12.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不过滤重复行
13.LIMIT和SKIP
MATCH (emp:Employee)
RETURN emp
LIMIT 2
返回Top的两个结果
MATCH (emp:Employee)
RETURN emp
SKIP 2
skip跳过两个节点
14.合并
MERGE命令将新的节点添加到数据库,只有当它不存在
MERGE = CREATE + MATCH
CREATE命令总是向数据库添加新的节点,即使节点属性值是相同的。
MERGE命令向数据库添加新的节点时,当创建具有相同属性的同一个节点时,只保留一个。
15.NULL值
is null
16.IN操作符
MATCH (e:Employee)
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno