正常使用结构化的查询语言 SQL(Structured Query Language)较多一些,但是像 Neo4j 这种非结构化的图形数据库来说,就不得不学习下 CQL(Cypher Query Language)语言了。如果你之前学过 《离散数学》或《图论》,对语法理解起来应该要容易一些。
Neo4j 安装
jdk安装
我用的 Neo4j 是 neo4j-community-3.5.5-windows.zip ,所以下载个 jdk11 安装就可以了。官网的下载比较卡,网盘没失效的话可以用这个链接。
jdk-11.0.6_windows-x64_bin.exe
链接:https://pan.baidu.com/s/1uwkT0SDdKlzN8C2kNRBKhA?pwd=xq4w
然后就是点击安装就可以了,安装好以后记得设置环境变量(根据你自己的安装路径设置)。
neo4j安装
链接:https://pan.baidu.com/s/11aLfX2FlD7Accra5FyUmOw?pwd=dt8q
neo4j 的安装也很简单,解压后,放到某个目录(目录不要有特殊字符),然后设置环境变量就可以,我自己是直接放到 C 盘下的,然后设置环境变量就可以了。
命令行脚本启动以后,打开访问下面标记处远程链接就可以了
默认账号和密码都是 neo4j ,初次登录要修改密码,这个就不多说了。
CQL基本命令
常用命令关键词不多,主要是下面这些。
节点操作
创建节点
创建节点的基本语法如下:
CREATE (node_name:label_type {property:value});
CREATE
: 创建新节点。node_name
: 节点的名称。label_type
: 节点所属的标签类型。property:value
: 节点属性和值。
我们来个例子试试,比如创建一个人员节点。当然, RETURN 语句不是必须的,如果你不需要查看创建的结果,就不需要执行 RETURN 语句返回。
CREATE (person:Person {name: "John", age: 30 })
RETURN person;
对于语句中的 person,如果你后续没有针对它的引用,其实也是可以不用写的,当然写上之后要更清晰一些。像下面的语句,同样可以成功创建节点。
CREATE (:Person {name: "Looking", age: 30 })
批量创建多个节点
CREATE (person1:Person {name: "John", age: 30 }), (person2:Person { name:"Sandra", age: 25 });
查询节点
查询节点的基本语法如下:
MATCH (node_name:label_type) WHERE node_name.property = value RETURN node_name;
比如查询所有 Person 的节点:
MATCH (person: Person) return person;
也可以指定属性查询
MATCH (person: Person{name:"John"}) return person;
或者使用 WHERE 语句指定查询条件
MATCH (person: Person) WHERE person.name="John" return person;
修改节点
修改节点主要用到 SET 关键字,这块和 SQL 的用法差不多,语法如下:
MATCH (node_name:label_type {property:value}) SET node_name.new_property = new_value;
比如修改 Person 节点中名为 John 的 age 为 100 。
MATCH (person: Person{name:"John"}) SET person.age=100;
也可以同时修改多个属性,中间用逗号隔开即可。
注意:即使我新建 John 节点的时候没有给他指定 phone 属性,但是丝毫不影响我修改节点时给他加上一个 phone 属性。
MATCH (person: Person{name:"John"}) SET person.age=100, person.phone='12345';
删除节点
删除节点也很简单,显示用 MATCH 查询节点,然后对查询结果的句柄使用 DELETE 删除即可。
MATCH (person: Person{name:"John"}) DELETE person;
当然还可以使用带 WHERE 语句的复杂查询 。
MATCH (person: Person) WHERE person.age>25 RETURN person;
关系操作
在图当中,除了针对节点的操作,各个节点之间还有相应的关系。
To be continued