赞
踩
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28196
简单例子:
Tom Hanks
既属于Person
,又属于Actor
。Relationship
连接两个节点,使得组织成列表、树、图等更为复杂的结构。 比如下图表示 Tom Hanks
在电影Forrest Gump
中饰演角色Forrest Gump
,其中 饰演角色 就是Tom Hanks
和Forrest Gump
的关系/Relationship。Person
有 name
和born
属性,Movie
有title
和released
属性,ACTED_IN
有roles
属性。schema
而直接产生数据,以上图例子中,可以不需要为Person
定义一个Schema
必须包含name
和born
两个属性。Schema
可以提高性能,所以如果需要更高性能可以考虑schema
,参见8.schema全称Graph Query Language
,Cypher 是 Neo4j 提出的图查询语言,是一种声明式的图数据库查询语言,它拥有精简的语法和强大的表现力,能够精准且高效地对图数据进行查询和更新。它是一种受 SQL 启发的语言,用于使用 ASCII-Art 语法描述图中的可视模式。它允许声明想要从图数据库中选择、插入、更新或删除什么,而不需要精确地描述如何做到这一点。通过 Cypher,用户可以构建表达性强且高效的查询,处理所需的创建、读取、更新和删除功能。
Cypher 的设计理念是:无论是开发工程师,数据库管理员,还是运维工程师,甚至非技术人员都可以轻松读懂 Cypher。这使得图数据库的使用者可以专注于自身业务需求,而不必花费很多时间去理解图数据库的底层实现原理。
Cypher 在语法设计上十分人性化,它提供了一个直观方式来匹配图中的节点和关系。例如想要查询一个一跳路径, ()代表节点, [] 代表关系,看起来就像两个点一条关系组成的一跳路径。
MATCH (n)-[r]-(m) RETURN *
Cypher 集思广益,借鉴和吸收了已有数据库查询语言的习惯写法。例如 WHERE、ORDER BY、SKIP 和 LIMIT 就来源于关系数据库查询语言 SQL,例如可视化模式匹配的语法设计来源于 RDF 查询语言 SPARQL 等。
类似于 SQL 语言,一条完整的查询可由多个语句(Clause)组合而成,每条语句的执行结果将保存为中间结果,并往下一条语句传递,值得一提的是,Cypher 执行采用火山模型(Vocalno),所以除了聚合(Eager)操作,当前语句完全执行完之前就会把部分已完成的结果往下一条语句传递。
说明:
语法:CREATE (e:Employee{id:222, name:'Bob', salary:6000, deptnp:12}) return e
参数说明:
说明:
节点对应标签是一定要写的.标签是Neo4j图数据库的分类.需要根据这个进行搜索。
CREATE (e:Employee) set e.id=223, e.name='Tom', e.salary=6000, e.deptnp=12 return e
match (e:Employee) return e.id,e.salary,e.name
.
属性名表示要返回的哪个属性值,多个用逗号隔开;MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})
说明:
语法:create (节点变量1:标签)-[关系变量:关系]->(节点变量2:标签)
案例: 给标签Employee中,name=‘Bob’和name=‘json’的两个节点建立Friend关系:
match (e1:Employee),(e2:Employee) where e1.name='Bob' and e2.name='json' create (e1)-[f:Friend]->(e2) return type(f)
match (e1:Employee)-[f:Friend]-(e2:Employee) where e1.name='Bob' and e2.name='json' return e1.name,e2.name,f
->
指定方向,但是系统会自动给上方向;merge(节点变量1:标签)-[关系变量:关系]-(节点变量2:标签)
match (e1:Employee),(e2:Employee) where e1.name='Bob' and e2.name='Lucer' merge (e1)-[l:Love]-(e2) return e1.name,e2.name,type(l)
match (e1:Employee)-[f:Friend]-(e2:Employee) where e1.name='Bob' return e2.name,f
match (e1:Employee)-[f:Friend]-(e2:Employee) where e1.name='Bob' and e2.name='json' delete f
match (e:Employee) where e.name='Teed' delete e
match (e:Employee) where e.name='Teed' remove e.gender return e
match (e:Employee) return e.name,e.salary order by e.salary desc
MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno
MATCH (e:Employee) RETURN e.id, toLower(e.name), e.salary, e.deptno
MATCH (e:Employee) RETURN e.id, substring(e.name,0,2), e.salary, e.deptno
MATCH (e:Employee) RETURN e.id, replace(e.name,e.name,e.name + "_HelloWorld"), e.salary, e.deptno
match (e:Employee) where e.salary=6000 return count(*)
match (e:Employee) return max(e.salary)
match (e:Employee) return min(e.salary)
match (e:Employee) return sum(e.salary)
match (e:Employee) return avg(e.salary)
create index on:Employee(id)
drop index on:Employee(id)
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)
【霍格沃兹测试开发】6 小时轻松上手功能测试/ 软件测试工作流程/ 测试用例设计/Bug 管理
【霍格沃兹测试开发】零基础小白如何使用Postman ,从零到一做接口自动化测试/ 从零基础到进阶到实战
【霍格沃兹测试开发】建议收藏全国CCF 测试开发大赛Python 接口自动化测试赛前辅导 / 项目实战
软件测试职业发展
零基础入门
测试必备编程篇
自动化测试
性能测试
测试管理
工程效能篇
面试求职篇
软件测试的面试宝典,内含一线互联网大厂面试真题、面试技巧、软件测试面试简历指导,免费领取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。