INDEX 索引
CREATE INDEX FOR (p:Person) ON (p.name)
为label为Person的节点增加name属性的索引
CREATE INDEX index_name FOR (p:Person) ON (p.age)
为label是Person的节点增加age属性的索引,并且索引名为index_name
CREATE INDEX FOR (p:Person) ON (p.name, p.age)
为label是Person的节点增加name与age属性的复合索引
MATCH (n:Person) WHERE n.name = $value
匹配筛选时自动使用索引
MATCH (n:Person)
即便筛选条件是在list中,也可以自动使用索引
MATCH (n:Person)
自动使用复合索引,筛选条件必须都在复合索引的属性范围内
MATCH (n:Person)
选择性使用单个或多个索引
DROP INDEX index_name
删除索引
CONSTRAINT 约束
CREATE CONSTRAINT ON (p:Person)
创建属性值与节点类型唯一性约束,同时也会创建响应的索引;如果已经存在具有某个名字的Person,则无法执行新增操作
CREATE CONSTRAINT uniqueness ON (p:Person)
ASSERT p.age IS UNIQUE
创建属性值与节点类型唯一性约束名称为uniqueness,同时也会创建响应的索引
DROP CONSTRAINT uniqueness
删除约束
CALL 调用
CALL db.labels() YIELD label
调用数据库内置的函数db.labels(),用于依次列出获取数据库内所有节点label
CALL db.labels() YIELD label
RETURN count(label) AS count
调用数据库内置的函数db.labels(),用于获取数据库内所有节点label,并将YIELD的结果作为参数后续使用,这里使用count()函数,获取label的数量
CALL java.stored.procedureWithArgs
可以使用call调用外部封装的函数,如果需要传参,可以使用input,比如{input: 'foo'}
CALL {
使用call调用子查询
IMPORT 导入
LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.0/csv/artists.csv' AS line
CREATE (:Artist {name: line[1], year: toInteger(line[2])})
从CSV文件导入数据,并且创建节点,以列的索引对应属性
LOAD CSV WITH HEADERS FROM
从CSV文件导入数据,文件带有列名,用列名对应属性
USING PERIODIC COMMIT 500
当导入大批量数据时,采用分批执行事务,每次按照一定数量导入,避免单次导入数据超内存
LOAD CSV FROM
使用自定义的字段分隔符
LOAD CSV FROM
返回LOAD CSV正在处理文件的绝对路径,如果没有LOAD CSV在处理则返回NULL
LOAD CSV FROM
返回LOAD CSV正在处理文件的行数,如果没有LOAD CSV在处理则返回NULL
DATABASE MANAGEMENT 数据库管理
SHOW DATABASES
列出系统所有数据库及相关信息
SHOW DATABASE myDatabase
列出myDatabase数据库的相关信息
SHOW DEFAULT DATABASE
列出默认数据库的相关信息
USER MANAGEMENT 用户管理
CREATE USER alice SET PASSWORD $password
创建新用户并设密码
ALTER CURRENT USER SET PASSWORD FROM $old TO $new
修改用户密码
DROP USER alice
删除用户
关于Cypher的系列先到此结束,这只是一个速查表,具体使用还需要靠自己慢慢探索与举一反三,这个速查表也并非很完美,关于4.0新功能中提到的有关多数据库,区别用户权限等应该只限企业版,所以在这个速查表并没有涉及。
原创不易,求转发,求点“在看”,喜欢请关注,在这里有最真实的分享!
Python与知识图谱
注意:本文归作者所有,未经作者允许,不得转载