zoukankan      html  css  js  c++  java
  • neo4j 的cql 语句,增、删、改、查(条件查询)(持续更新)

    前言

    因为做一个比赛的项目 ,需要用到 neo4j 数据库,所以要学习其语言cql,特来整理一下他的基本语言。
    整片的语句是按照 了 Neo4j 数据库自带的示例 Movie Graph 来写的。
    直接看这个博客也是没有问题的。都是很基础的语句。

    neo4j图数据库中基本基础元素与概念

    1 元素基本

    节点(Node)
    表示一个实体记录、就像关系数据库当中一条记录。一个节点包含多个属性和标签。
    关系(Relationship)
    关系用于将及诶单关联起来构成图,关系也称为图论的边(Edge)。
    属性(Property)
    节点和关系都可以有多个属性,属性是由键值对组成的,就像java当中哈希
    标签(Label)
    标签指示一组拥有相同属性的节点,但不强制要求相同,一个节点可以有多个标签。
    路径(path)
    图中任意两个节点都存在由关系组成的路径,路径有长短之分。

    2 逻辑

    1. mysql :
      数据库实例= =》数据库(database)= =》表(table)= =》列==》记录
    2. Neo4j:
      neo4j实例= =》数据库(graph)= =》节点= =》关系= =》属性==》标签(Label)

    一、查询语句

    1、根据节点属性值 返回 具体单个节点

    MATCH  (n: User{name:  "56" }) 
    return  n;
    

    参数解释:
    match :查询关键字
    n : 定义的变量,将要返回的值 赋值于他。
    User :节点对象。== 一个对象包含很多节点。==
    name : “56” 节点属性 :节点属性的值

    2、根据对象返回对象中的所有属性

    MATCH (n:Person) 
    RETURN n.name 
    LIMIT 10
    

    参数解释
    n : Person : Person类 赋值于 n,
    n.name : 取出Person类中的name属性值。
    LIMIT : 限制,设置输出到界面上的记录条数。

    3、根据属性的条件区间 返回 所在区间的对象属性

    MATCH (n: Movie) 
    WHERE n.released >= 1990 AND n.released < 2000 
    RETURN n.title
    

    参数解释:
    WHERE : 条件设置关键字。
    AND : 连接两个条件的关键字
    解释:查询 电影中 属性released在1990-2000的title属性值。

    4、查询 节点对象 、其关系 以及 关系的节点

    MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) 
    RETURN tom,tomHanksMovies
    

    参数解释:
    [] :表示为关系。
    :ACTED_IN : 这是例子,为主演。
    tomHanksMovies : 这是例子,为演过的电影。
    翻译:名字为Tom Hanks 主演过的 电影,并返回 Tom Hanks节点和联系 以及子节点(演过的电影)

    二、创建语句

    1、创建一个节点

    CREATE  (k : Person{ name:'鲁班',born:1997}) RETURN k
    

    参数解释:
    CREATE : 创建 节点的关键字。
    翻译:创建一个Person类的 节点标签(名为鲁班)。并且设置其属性。并返回这个节点(返回之后就可以看到)
    查看其节点
    查询这个刚创建的节点

    MATCH  (k : Person{ name:'鲁班',born:1997}) RETURN k
    

    查询这个鲁班节点与别人之间的关系

    MATCH  (k : Person{ name:'鲁班',born:1997}) -[]-() RETURN k
    

    然尔 并没有任何关系

    2、一次创建多个节点

    CREATE (:pig{name:"猪爷爷",age:6}),
    (:pig{name:"猪奶奶",age:4}),
    (:pig{name:"猪爸爸",age:3}),
    (:pig{name:"猪妈妈",age:1})
    

    参数解释:
    可以去掉冒号右边的变量。多个节点之间用逗号隔开

    2、基于现有节点 创建一个关系

    MATCH (gf:pig{name:"猪爷爷"}) 
    MATCH (gm:pig{name:"猪奶奶"})
    CREATE (gf)-[r:夫妻]->(gm) 
    RETURN gf,r,gm
    

    参数解释:
    这里没有逗号连接,先查询出来,放到变量里面,在进行创建连接
    (变量名)-[变量名:联系名{这里是联系的属性}]->(变量名)

    3、创建 节点 + 关系

    CREATE (:pig{name:"猪爸爸",age:12})-[:夫妻]->(:pig{name:"猪妈妈",age:9})
    

    解释:
    直接创建 节点 关系 节点。

    三、修改语句

    1、修改属性

    MATCH (a:pig{name:"猪爸爸",age:12}) 
    SET a.age=5 
    return a
    

    参数解释:
    SET :修改关键字。
    变量.对象属性 = 更变的值。

    四、删除语句 先删关系在删节点。

    MATCH (n:pig{name:"佩奇"})-[r]-() 
    WHERE n.age=0.6
    DELETE r,n
    

    参数解释:
    [] : 任意节点
    () : 任意节点
    r : 对应关系

    原文地址:https://blog.csdn.net/qq_40036754/article/details/88605030
  • 相关阅读:
    WEB安全 php+mysql5注入防御(一)
    Spring 整合 Quartz 实现动态定时任务(附demo)
    dubbo工作原理(3)
    dubbo服务降级(2)
    dubbo服务降级(1)
    程序员决对不能缺少产品思维
    GNUPG
    idea远程debug:tomcat
    基于JavaMail的Java邮件发送:复杂邮件发送
    使用javaMail发送简单邮件
  • 原文地址:https://www.cnblogs.com/jpfss/p/11557045.html
Copyright © 2011-2022 走看看