[Neo4j] CQL命令
文章目录
- docker运行neo4j
- CQL
- create创建一个节点
- match获取数据
- RETURN子句
- MATCH & RETURN匹配和返回
- 关系
- where子句
- delete子句
- remove子句
- SET子句
- ORDER BY子句
- UNION子句
- AS子句用于给一些别名
- UNION ALL子句
- LIMIT子句
- SKIP子句
- MERGE命令
- IN操作符
- 字符串函数
- AGGREGATION聚合
- 关系函数
- 索引
- UNIQUE约束
docker运行neo4j
- 拉取最新的neo4j镜像:
docker pull neo4j
- 运行Neo4j 容器:
docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:latest
- 打开Neo4j 浏览器管理界面:
http://10.141.211.163:7474
CQL
create创建一个节点
!!CREATE命令总是向数据库添加新的节点,就算所有属性都相同也会添加进数据库
//没属性
CREATE (<node-name>:<label-name>)eg:
create (m1:Method)//有属性
CREATE (<node-name>:<label-name>{ <Property1-name>:<Property1-Value>........<Propertyn-name>:<Propertyn-Value>}
)eg:
create(m1:Method{modifier: 'public',returnType: 'int',methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert',params: ['java.lang.Object']}
)create(m2:Method{modifier: 'public',returnType: 'int',methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert',params: ['java.lang.Object']}
)create(s1:Sql{databaseName: 'jeesite',sql: 'select * from t1'}
)create(t1:Table{databaseName: 'jeesite',tableName: 'table1'}
)
match获取数据
!!!不可以单独使用,会报错
MATCH
(<node-name>:<label-name>
)eg: match (m1:Method)output:
ERROR
Neo.ClientError.Statement.SyntaxError
Neo.ClientError.Statement.SyntaxError: Query cannot conclude with MATCH (must be RETURN or an update clause) (line 1, column 1 (offset: 0))
"match (m1:Method)"
RETURN子句
!!!不可以单独使用,会报错
RETURN <node-name>.<property1-name>,........<node-name>.<propertyn-name>eg:
return m1.methodNameoutput:ERROR
Neo.ClientError.Statement.SyntaxError
Neo.ClientError.Statement.SyntaxError: Variable `m1` not defined (line 1, column 8 (offset: 7))
"return m1.methodName"
MATCH & RETURN匹配和返回
在Neo4j CQL中,我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据。
match (m1: Method)
return m1.methodName,m1.returnTypematch (m1:Method)
return m1
关系
//节点已存在
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>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>//节点不存在
CREATE (<node1-label-name>:<node1-name>)-[<relationship-label-name>:<relationship-name>]->(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>eg:
match (m2:Method{methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'}),(m1:Method{ methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert'})
create (m2)-[r:MethodCall{traceId:6574973980984213592}]->(m1)
where子句
WHERE <condition> <boolean-operator> <condition>
<condition>
语法:
<property-name> <comparison-operator> <value>
eg:
MATCH (m1:Method)
WHERE m1.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'
AND m1.modifier = 'public'
RETURN m1match (m2:Method),(m1:Method)
where m2.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'
and m1.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert'
create (m2)-[r:MethodCall{traceId:6574973980984213592}]->(m1)
delete子句
- 删除节点。
- 删除节点及相关节点和关系。
//使用逗号(,)运算符来分隔节点名。
DELETE <node-name-list>eg:
match (m2:Method)-[r]-(m1:Method)
delete r
remove子句
- 使用Neo4j CQL SET子句向现有节点或关系添加新属性。
- 使用Neo4j CQL REMOVE子句来删除节点或关系的现有属性
- Neo4j CQL DELETE和REMOVE命令之间的相似性:这两个命令不应单独使用。两个命令都应该与MATCH命令一起使用。
REMOVE <property-name-list>//<property-name-list> <属性名称列表>语法
<node-name>.<property1-name>,
<node-name>.<property2-name>,
....
<node-name>.<propertyn-name> eg:
MATCH (book { id:122 })
REMOVE book.price
RETURN book//REMOVE一个Label子句语法:
REMOVE <label-name-list>
//<label-name-list>语法
<node-name>:<label2-name>,
....
<node-name>:<labeln-name> eg:删除
MATCH (m:Movie)
REMOVE m:Picture
SET子句
- 向现有节点或关系添加新属性
- 添加或更新属性值
MATCH (m1:Method)-[r]-(m2:Method)
SET r.scenarioId = 23333, r.scenarioName = 's1'
RETURN r
ORDER BY子句
ORDER BY <property-name-list> [DESC]eg:
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name DESC
UNION子句
它将两组结果中的公共行组合并返回到一组结果中。它不从两个节点返回重复的行。
限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
<MATCH Command1>UNION
<MATCH Command2>
AS子句用于给一些别名
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子句
它结合并返回两个结果集的所有行成一个单一的结果集。不过滤它们重复行!!
限制: 结果列类型,并从两个结果集的名字必须匹配,这意味着列名称应该是相同的,列的数据类型应该是相同的。
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 ALL
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
LIMIT子句
MATCH (emp:Employee)
RETURN emp
LIMIT 2
SKIP子句
过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果。
(如果我们要从CQL查询结果集底部修整结果,那么我们应该使用CQL LIMIT子句。)
//只返回底部的1个结果,也就是最后一行
match(m:Method)
return m
skip 1
MERGE命令
- 创建节点,关系和属性
-为从数据库检索数据
Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果;如果它不存在于图中,则它创建新的节点/关系并返回结果
!!CREATE命令总是向数据库添加新的节点,就算所有属性都相同也会添加进数据库
MERGE = CREATE + MATCHMERGE (<node-name>:<label-name>
{<Property1-name>:<Pro<rty1-Value>.....<Propertyn-name>:<Propertyn-Value>
})
IN操作符
MATCH (e:Employee)
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno
字符串函数
UPPER (<input-string>)
LOWER (<input-string>)
SUBSTRING(<input-string>,<startIndex> ,<endIndex>)
AGGREGATION聚合
eg:MATCH (e:Employee) RETURN COUNT(*)MATCH (e:Employee)
RETURN MAX(e.sal),MIN(e.sal)MATCH (e:Employee)
RETURN SUM(e.sal),AVG(e.sal)
关系函数
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)
索引
CREATE INDEX ON :<label_name> (<property_name>)eg:
CREATE INDEX ON :Customer (name)DROP INDEX ON :<label_name> (<property_name>)
UNIQUE约束
- 避免重复记录。
- 强制执行数据完整性规则。
CREATE CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUEeg:
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUEDROP CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUEeg:
DROP CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE
[Neo4j] CQL命令相关推荐
- Neo4j - CQL简介
CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. Neo4j CQL - 它是Neo4j图形数据库的查询语言. 它是一种声明性模式匹配语言 ...
- Neo4j CQL简介
CQL CQL 代表 Cypher 查询语言.像 Orcale 数据库具有查询语言 SQL,Neo4j 具有 CQL 作为查询语言. Neo4j CQL Neo4j 图形数据库的查询语言: 一种声明性 ...
- Neo4j CQL(附springboot集成neo4j)
CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. 常用的Neo4j CQL命令/条款如下: S.No. CQL命令/条 用法 1. CREA ...
- Neo4j CQL - (3) -RETURN子句
Neo4j CQL RETURN子句用于 - 检索节点的某些属性 检索节点的所有属性 检索节点和关联关系的某些属性 检索节点和关联关系的所有属性 RETURN命令语法: RETURN <node ...
- neo4j CQL使用
neo4j CQL使用 Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言.像Oracle数据库具有查询 语言SQL,Neo4j具有CQL作为查询语言. 它是Neo4 ...
- Neo4j - CQL使用
3.1 Neo4j - CQL简介 Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言.像Oracle数据库具有查询 语言SQL,Neo4j具有CQL作为查询语言. ...
- Neo4j CQL高级
我们先准备脚本,创建数据,以便后续使用 // 删除所有的节点和关系 MATCH(n) OPTIONAL MATCH (n)-[r]-() DELETE n,r // 创建Person 的节点 CREA ...
- neo4j启动命令的小tips
neo4j启动命令的小tips neo4j是知识图谱领域常用的图数据库.一般来说,我们都是使用的是社区版(community)的,因为这玩意简单且免费. 而对于社区版的neo4j,我们一般都是通过在t ...
- Neo4j CQL(函数、索引、约束)、备份恢复、优化
一.CQL高级 1.CQL函数 字符串函数 MATCH (p:Person) RETURN ID(p),LOWER(p.character) match(p:Person) return p.char ...
最新文章
- sudo及其配置文件sudoers
- htmlparser新建tag类(以iframe标签为例)
- 金融领域下的数据挖掘算法应用:AdaBoost模型摩天
- 2015第29周五AOP
- java5新特性_5分钟了解Java 12 八大新特性
- 全国首家百度大脑创新体验中心启动,中关村创业大街AI产业创新生态再升级...
- Hello~CSND
- HBase二级索引实现方案
- golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏
- ICCV 2019|70 篇论文抢先读,含目标检测/自动驾驶/GCN/等(提供PDF下载)
- 抖音测试软件app,抖音抑郁症测试app
- [前端框架]-VUE(下篇)
- IE浏览器版本切换解决的问题
- Unix 开机时如何自启动oracle
- C64+ cache资料集(更新中)
- 5.1节快乐!AMD-INTEL双显卡切换补丁v0.1beta发布
- 楼层标高怎么引上去_高层建筑施工标高传递的简易方法
- python的学习笔记案例1--汇率兑换4.0
- 170604 逆向-CrackMe之013
- ios wkweb设置图片_iOS WKWebView识别H5中的图片资源