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

还有很多命令,以后再继续学习

 

posted @ 2019-06-11 17:48  慕尘  阅读(1440)  评论(0编辑  收藏  举报