neo4j CQL W3Cschool https://www.w3cschool.cn/neo4j/neo4j_need_for_graph_databses.html
节点
属性
关系
标签
数据浏览器
在数据浏览器中使用语句及查看输入输出
一些命令语句
CREATE
创建一个没有属性的节点
CREATE (dept:Dept)
创建一个有属性的节点
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
MATCH(不能单独使用 要跟RETURN一起)
# 查询Dept下的内容 MATCH (dept:Dept) return dept
# 查询Employee标签下 id=123,name="Lokesh"的节点
MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p
## 查询Employee标签下name="Lokesh"的节点,使用(where命令)
MATCH (p:Employee) WHERE p.name = "Lokesh" RETURN p
MATCH&RETURN
MATCH (dept: Dept) RETURN dept.deptno,dept.dname
关系基础
现有节点 无属性关系
MATCH (e:Customer),(cc:CreditCard) CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
现有节点 有属性关系
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)
新建节点 有属性关系
CREATE (video1:YoutubeVideo1{title:"ActionMovie1",updated_by:"Abc",uploaded_date:"10/10/2010"})-[movie:ACTION_MOVIES{rating:1}]->(video2:YoutubeVideo2{title:"ActionMovie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
检索关键节点的详细信息
MATCH (cust)-[r:DO_SHOPPING_WITH]->(cc) RETURN cust,cc
CREATE创建标签
创建单个标签
CREATE (google1:GooglePlusProfile)
创建多个标签
CREATE (m:Movie:Cinema:Film:Picture)
WHERE
MATCH (emp:Employee) WHERE emp.name = 'Abc' RETURN emp
MATCH (emp:Employee) WHERE emp.name = 'Abc' OR emp.name = 'Xyz' RETURN emp
用where创建新关系
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
DELETE(删除节点及相关节点和关系)
MATCH (e: Employee) DELETE e
MATCH (cc: CreditCard)-[rel]-(c:Customer) DELETE cc,c,rel
REMOVE(删除节点或关系的现有属性)
- 删除节点或关系的标签
- 删除节点或关系的属性
Neo4j CQL DELETE和REMOVE命令之间的主要区别 -
- DELETE操作用于删除节点和关联关系。
- REMOVE操作用于删除标签和属性。
Neo4j CQL DELETE和REMOVE命令之间的相似性 -
- 这两个命令不应单独使用。
- 两个命令都应该与MATCH命令一起使用。
MATCH (book { id:122 }) REMOVE book.price RETURN book
MATCH (m:Movie) REMOVE m:Picture
SET
- 向现有节点或关系添加新属性
- 添加或更新属性值
MATCH (book:Book)
SET book.title = 'superstar'
RETURN book
OREDR BY
升序排列
MATCH (emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDER BY emp.name
降序排列
MATCH (emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDER BY emp.name DESC
UNION
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命令会显示错误消息。为了避免这种错误,Neo4j的CQL提供“AS”子句
像CQL,CQL Neo4j的“AS”子句用于给一些别名。
union all 不过滤重复行
LIMIT和SKIP(过滤或限制查询返回的行数)
limit修剪CQL查询结果集底部的结果
MATCH (emp:Employee) RETURN emp LIMIT 2
skip修剪CQL查询结果集顶部的结果
MATCH (emp:Employee) RETURN emp SKIP 2
MERGE
MERGE命令是CREATE命令和MATCH命令的组合
Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果,如果它不存在于图中,则它创建新的节点/关系并返回结果
CQL MERGE命令检查该节点在数据库中是否可用, 如果它不存在,它创建新节点,否则,它不创建新的
IN
MATCH (e:Employee) WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno
此查询仅返回在IN运算符中指定的id匹配的两行