• Neo4j:一、CQL语句


    一、Neo4j环境搭建

    Neo4j高性能图数据库从入门到实战学习视频
    neo4j官方下载连接

    window傻瓜式安装,点击下一步下一步

    首页界面介绍

    在这里插入图片描述

    二、Neo4j构建的元素

    节点

    节点表示一个具体的实体。
    节点可以包含:
    一个或多个属性
    一个或多个标签

    关系

    关系用于连接2个节点
    关系可以包含:
    一个或多个属性
    一个或多个标签
    要注意的是:
    关系是具有方向性的,而且有3种情况:单向向左、单向向右、双向。但是neo4j好像并没有实现双向关系。要在业务中实现双向关系,貌似要通过2个单向关系来实现

    标签

    类似于java的类的概念,定义某类节点或某类关系。
    比如:张三节点的标签是人,李四节点的标签也是人;比如兄弟关系的标签是家庭,兄妹关系的标签也是家庭。
    标签可以被索引,所以建合适的标签可以提高搜索速度

    语法:

    :标签1
    :标签1:标签2
    比如:CREATE (n:西游记:人物 {name:'张三'}) RETURN n
    
    • 1
    • 2
    • 3

    属性

    节点和关系都能拥有一个或多个属性。
    语法:

    {属性key:"属性value", 属性key:"属性value"}
    
    • 1

    三、CQL

    CQL代表Cypher查询语言,用于查询图库的查询语言,类比SQL用于查询关系型数据库。

    CQL命令用法
    CREATE创建节点,关系和属性
    MATCH检索有关节点,关系和属性数据
    RETURN返回查询结果
    WHERE提供条件过滤检索数据
    DELETE删除节点和关系
    REMOVE删除节点和关系的属性
    ORDER BY排序检索数据
    SET添加或更新标签

    理解CQL

    节点(小括号表示节点)

    CQL中,()表示一个节点。比如:(n:person {name:‘如来’})
    ()表示一个节点
    n表示给这个节点起个别名
    person表示给这个节点设置一个标签
    {}里表示给这个节点设置什么属性

    关系(中括号表示关系)

    CQL中,[]表示一个关系。关系两边要有节点,并且要设置方向,比如

     () - [] -> ()
    
    • 1

    但在neo4j中,一条关系只能有一个方向,不能同时指向两个节点。
    但允许一条关系的开始节点和结束节点都是自己。

    CREATE

    创建一个节点

    # 下面两个是等价的
    CREATE ()
    CREATE (n) 
    
    # 只不过CREATE(n) 相当于给这个节点起个别名,可以直接RETURN
    CREATE (n) RETURN n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # 创建一个节点
    CREATE (n:西游记{name: "孙悟空"})
    # 一次性创建多个节点
    CREATE (n:西游记 {name: "猪八戒"}), (m:西游记 {name: "沙僧"})
    
    • 1
    • 2
    • 3
    • 4

    创建关系

    # 创建新的节点,并且同时给新的节点创建关系
    CREATE (n:`西游记`{name:"唐僧"}) - [r:`坐骑`{attr:"属性"}]-> (m:`西游记`{name:"白龙马"})
    return n, m
    
    # 在已经被创建好的节点之间,创建1条关系
    MATCH (n:`西游记`{name:"孙悟空"}), (m:`西游记`{name:"猪八戒"})
    CREATE (n) -[r:师弟{attr:"属性"}]-> (m)
    return n, m
    
    # 在已经被创建好的节点之间,创建多条关系
    MATCH (swk:`西游记`{name:"孙悟空"}), (zbj:`西游记`{name:"猪八戒"}), (ss:`西游记`{name:"沙僧"}), (ts:`西游记`{name:"唐僧"})
    CREATE (swk) -[:师傅{attr:"属性"}]-> (ts), (zbj) -[:师傅{attr:"属性"}]-> (ts), (ss) -[:师傅{attr:"属性"}]-> (ts)
    return swk, zbj, ss
    
    # neo4j,关系可以自己指向自己的
    MATCH (n:`学习` {name:'张三'})
    CREATE (n)-[:自恋]->(n)
    RETURN n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    DELETE

    删除所有节点和关系

    MATCH (n)
    OPTIONAL MATCH (n)-[r]-()
    DELETE n,r
    
    或
    
    MATCH (n) DETACH DELETE n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    根据id去删除单个节点

    MATCH (n) 
    WHERE id(n)=4
    DELETE n
    RETURN n
    
    • 1
    • 2
    • 3
    • 4

    根据id去删除单个关系

    MATCH  ()-[r]-() Where ID(r)=4 Delete r 
    
    • 1

    根据2个节点和关系方向,删除关系

    # 搭建测试数据
    CREATE (:`学习` {name: '张三'}),(:`学习` {name: '李四'}),(:`学习` {name: '王五'});
    MATCH (p1:`学习` {name: '张三'}), (p2:`学习` {name: '李四'}), (p3:`学习` {name: '王五'})
    CREATE (p1)-[:认识]->(p2)-[:认识]->(p1)-[:认识]->(p3)
    RETURN p1,p2,p3
    
    # 删除张三认识李四的关系,保留李四认识张三
    MATCH (n:`学习` {name:'张三'}),(m:`学习` {name:'李四'})
    OPTIONAL MATCH (n)-[r]->(m)
    DELETE r
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    同时删除指定的节点和它的关系

    # 搭建测试数据
    CREATE (:`学习` {name: '张三'}),(:`学习` {name: '李四'}),(:`学习` {name: '王五'});
    MATCH (p1:`学习` {name: '张三'}), (p2:`学习` {name: '李四'}), (p3:`学习` {name: '王五'})
    CREATE (p1)-[:认识]->(p2)-[:认识]->(p1)-[:认识]->(p3)
    RETURN p1,p2,p3
    
    # 删除张三节点,同时删除跟张三有关的关系
    MATCH (n:`学习` {name:'张三'})
    OPTIONAL MATCH (n)-[r]-()
    DELETE n,r
    
    或
    
    MATCH (n学习` {name:'张三'}) DETACH DELETE n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    MATCH

    match关键字相当于sql的select

    # 相当于select *
    MATCH (n)
    RETURN n
    
    • 1
    • 2
    • 3

    导入导出

    • 导出
      在这里插入图片描述
    • 导入
    • 在这里插入图片描述
  • 相关阅读:
    想知道“照片识别文字”的技巧吗?快看这几个方法
    geo 读取单细胞csv表达矩阵 单细胞 改列名 seurat
    linux基础网络设置
    红绿灯思维
    html中图片、音乐、视频标签及选择器、背景
    【限时免费】20天拿下华为OD笔试之 【位运算】2023B-分苹果【欧弟算法】全网注释最详细分类最全的华为OD真题题解
    C++中的string类
    【C++】类和对象(上)
    行业早报6.5
    Lingo基础语法笔记
  • 原文地址:https://blog.csdn.net/Yal_insist/article/details/125899774