Neo4j CQL基本使用
Neo4j用CQL作为查询语言
CQL
- Neo4j图形数据库的查询语言
- 是一种声明性模式匹配语言
- 遵循SQL语法
- 语法是非常简单且人性化、可读的格式
1.启动服务,打开浏览器
在数据浏览器中的美元提示符下键入命令
2.常用命令
(1)CREATE
-
- 创建没有属性的节点
- 使用属性创建节点
- 在没有属性的节点之间创建关系
- 使用属性创建节点之间的关系
- 为节点或关系创建单个或多个标签
创建节点
CREATE (<node-name>:<label-name>)
eg:
CREATE (emp:Employee)
创建一个标签和一个节点,在数据库中创建一个带有标签名“Employee”的节点“emp”
创建带有属性的节点
CREATE ( <node-name>:<label-name> { <Property1-name>:<Property1-Value> ........ <Propertyn-name>:<Propertyn-Value> } )
eg:
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
创建:
一个标签,即“Dept”;
一个节点,即“dept”;
三个属性,即deptno,dname,location
创建关系
-
- 单向关系
- 双向关系
CREATE (<node1-name>:<label1-name>)- [(<relationship-name>:<relationship-label-name>)] ->(<node2-name>:<label2-name>)
eg:
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
From Node——节点名称 p1,节点标签名称profile1
To Node——节点名称p2,节点标签名称Profile2
r1是关系名称,LIKES是一个关系标签名称
(2)MATCH和
MATCH
-
- 从数据库获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
MATCH ( <node-name>:<label-name> )
RETURN
-
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
RETURN <node-name>.<property1-name>, ........ <node-name>.<propertyn-name>
不能单独使用MATCH或RETURN命令,结合起来从数据库检索数据
MATCH + RETURN命令
-
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
MATCH Command
RETURN Command
eg:
MATCH (dept:Dept) return dept
MATCH (dept: Dept) RETURN dept.deptno,dept.dname
(3)WHERE
过滤MATCH查询的结果
WHERE <condition> <boolean-operator> <condition>
<boolean-operator> AND,OR,NOT,XOR
<condition>
<property-name> <comparison-operator> <value>
<comparison-operator> =,<>,<,>,<=,>=
eg:
CREATE (emp:Employee{id:1001,name:"Lokesh",sal:35000,deptno:10})
CREATE (emp:Employee{id:1002,name:"abc",sal:28000,deptno:20})
CREATE (emp:Employee{id:1003,name:"xyz",sal:35000,deptno:30})
CREATE (emp:Employee{id:1004,name:"Mno",sal:32000,deptno:40})
查询
MATCH (emp:Employee) RETURN emp.id,emp.name,emp.salary,emp.deptno
MATCH (emp:Employee) WHERE emp.name = 'abc' RETURN emp
MATCH (emp:Employee) WHERE emp.name = 'abc' OR emp.name='xyz' RETURN emp.id,emp.name,emp.sal,emp.deptno
使用WHERE创建关系
-
- 创建两个现有节点之间的关系
- 一次创建两个节点和它们之间的关系
- 使用WHERE子句创建两个现有节点之间的关系
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) WHERE <condition> CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name> {<relationship-properties>}]->(<node2-label-name>)
eg:
CREATE (e:Customer{id:"1001",name:"Abc",dob:"01/10/1982"})
CREATE (cc:CreditCard{id:"5001",number:"1234567890",cvv:"888",expiredate:"20/17"})
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
(4)DELETE
-
- 删除节点
- 删除节点及相关节点和关系
删除节点
DELETE <node-name-list>
eg:
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
MATCH (d: Dept) RETURN d
MATCH (d: Dept) DELETE d
删除节点和关系
DELETE <node1-name>,<node2-name>,<relationship-name>
eg:
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
MATCH (p1:Profile1)-[r]-(p2:Profile2)RETURN p1,r,p2
MATCH (p1:Profile1)-[r]-(p2:Profile2) DELETE p1,r,p2
两个节点及其关联都被删除了
MATCH (p1:Profile1)-[r]-(p2:Profile2) RETURN r
还有很多命令,以后再继续学习