网站LOGO
逐暗者的麦田
页面加载中
4月20日
网站LOGO 逐暗者的麦田
一个java软件攻城狮
菜单
  • 逐暗者的麦田
    一个java软件攻城狮
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Neo4j语法
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    Neo4j语法

    shellingford · 原创 ·
    程序人生 · Neo4j语法
    共 5500 字 · 约 3 分钟 · 373
    本文最后更新于2023年08月05日,已经过了259天没有更新,若内容或图片失效,请留言反馈

    环境

    介绍

    neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。
    Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。

    安装

    1. 既然是基于java语言编写的,那就需要安装JRE/JDK ,目前最新版需要java 12,否则会报jvm版本不支持高版本编译的class
    2. 官网下载最新版 Neo4j 社区版(Community)
    3. 解压就可以了

    使用

    启动:找到bin目录,使用./neo4j start 命令启动。

    停止:./neo4j stop

    首次登陆用户名和密码都是neo4j,会提示修改密码。

    修改好密码之后就可以进行操作了

    语法

    基础语法

    命令列表

    命令说明
    create创建节点、关系或者属性
    match匹配有关节点、关系或者属性的数据
    return返回查询结果
    where提供条件过滤
    delete删除节点或者关系
    remove删除节点属性或者关系属性
    order by排序
    set添加或者更新标签

    函数

    函数说明
    String用于字符串
    Aggregation用于一些聚合操作
    Relationship用于获取关系的细节

    数据类型

    类型说明
    boolean布尔类型:true,false
    byte8位整数
    short16位整数
    int32位整数
    long64位整数
    float32位浮点数
    double64位浮点数
    char16位字符
    String字符串

    create语句

    sql 代码:
    CREATE (
       <node-name>:<label-name>
       {     
          <Property1-name>:<Property1-Value>
          ........
          <Propertyn-name>:<Propertyn-Value>
       }
    )

    label-name 表示标签名称,node-name表示节点名称。节点名称其实只在这个语句中有效。创建语句不一定需要属性和节点名称,只要有标签名称就可以创建了。

    例如:创建一个姓名叫张三,年龄40岁的教师。

    sql 代码:
    create(:teacher{name:"张三",age:40})

    这样就能看到一个张三的教师节点了。

    同样可以再创建一个叫李四的45岁教师。

    match和return语句

    sql 代码:
    MATCH 
    (
       <node-name>:<label-name>
    )
    RETURN 
       <node-name>.<property1-name>,
       ........
       <node-name>.<propertyn-name>

    match语句一般和return语句一起使用。
    例如:查询一下教师

    sql 代码:
    match(t:teacher) return t

    或者查询具体的属性

    sql 代码:
    match(t:teacher) return t.name,t.age

    创建多标签节点

    例如创建一个名叫王五的55岁教师,同时他也是校长。

    sql 代码:
    create(t:teacher:principal{name:"王五",age:55})

    创建节点和关系

    sql 代码:
    CREATE (<node1-name>:<label1-name>)-
        [<relationship-name>:<relationship-label-name>]
        ->(<node2-name>:<label2-name>)

    例如:创建一个名叫赵六的42岁教师,他教一个名叫钱七的12岁学生。
    注意关系是有方向的。

    sql 代码:
    create(t:teacher{name:"赵六",age:42})-[r:teach]->(s:student{name:"钱七",age:12})

    创建已有节点的关系

    例如:张三也开始教钱七了

    sql 代码:
    match(a:teacher{name:"张三"}),(b:student{name:"钱七"}) create (a)-[r:teach]->(b)

    创建新节点和已有节点的关系

    例如:李四开始教一个名叫周八的14岁学生

    sql 代码:
    match(a:teacher{name:"李四"}) create (a)-[r:teach]->(b:student{name:"周八",age:14})

    where语句

    用以过滤内容,例如查询教师张三

    sql 代码:
    match (a:teacher) where a.name="张三" return a

    where可以设置多个条件,例如查询教师张三和李四

    sql 代码:
    match (a:teacher) where a.name="张三" or a.name="李四" return a

    像这样查询不同节点标签也是可以的

    sql 代码:
    MATCH (t:teacher),(s:student) 
    WHERE t.name = "张三" AND s.name= "钱七"
    return t,s

    delete语句

    删除李四与周八的关系

    sql 代码:
    match (t:teacher{name:"李四"})-[r:teach]->(s:student{name:"周八"}) delete r

    删除节点也是一样的,可以删除李四和周八

    sql 代码:
    match (t:teacher{name:"李四"}),(s:student{name:"周八"}) delete t,s

    set语句

    set语句用于新增/更新属性或者标签

    新增属性

    sql 代码:
    match(t:teacher{name:"王五"}) set t.level = "A"

    新增标签

    sql 代码:
    match(t:teacher{name:"王五"}) set t:father

    remove语句

    remove语句用于删除属性或者标签
    删除属性

    sql 代码:
    match(t:teacher{name:"王五"}) remove t.level

    删除标签

    sql 代码:
    match(t:teacher{name:"王五"}) remove t:father

    order by

    查询教师的年龄,按照年龄排序

    sql 代码:
    match(t:teacher) return t.name  order by t.age 

    skip 和limit

    跳过记录条数和查询记录条数

    sql 代码:
    match(t:teacher) return t.name  order by t.age skip 1 limit 2

    UNION

    合并结果

    sql 代码:
    match(t:teacher) return t.name as name UNION match(s:student) return s.name as name

    UNION的前提是必须列名完全一样,所以这里要用as来取别名

    MERGE

    MERGE = CREATE + MATCH
    Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果
    如果它不存在于图中,则它创建新的节点/关系并返回结果。

    null值

    null的操作和sql类似,where name is null 或者 where name is not null

    函数

    字符串函数

    函数描述
    UPPER它用于将所有字母更改为大写字母。
    LOWER它用于将所有字母改为小写字母。
    SUBSTRING它用于获取给定String的子字符串。
    REPLACE它用于替换一个字符串的子字符串。

    聚合函数

    函数描述
    COUNT它返回由MATCH命令返回的行数。
    MAX它从MATCH命令返回的一组行返回最大值。
    MIN它返回由MATCH命令返回的一组行的最小值。
    SUM它返回由MATCH命令返回的所有行的求和值。
    AVG它返回由MATCH命令返回的所有行的平均值。

    例如查询教师的平均年龄

    sql 代码:
    match(t:teacher) return avg(t.age)
    函数描述
    STARTNODE它用于知道关系的开始节点。
    ENDNODE它用于知道关系的结束节点。
    ID它用于知道关系的ID。
    TYPE它用于知道字符串表示中的一个关系的TYPE。

    查找所有教学关系中开始节点

    sql 代码:
    match (a)-[r:teach]->(b) return STARTNODE(r)

    索引

    在属性上创建索引能提高查询效率

    sql 代码:
    CREATE INDEX ON :<label_name> (<property_name>)
    sql 代码:
    DROP INDEX ON :<label_name> (<property_name>)

    创建唯一约束

    sql 代码:
    CREATE CONSTRAINT ON (<label_name>)
    ASSERT <property_name> IS UNIQUE
    sql 代码:
    DROP CONSTRAINT ON (<label_name>)
    ASSERT <property_name> IS UNIQUE
    声明:本文由 shellingford(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    发一条! 发一条!
    博客logo 逐暗者的麦田 一个java软件攻城狮
    MOEICP 萌ICP备20237379号 ICP 沪ICP备13037081号-2,沪ICP备13037081号-1,沪ICP备13037081号-3 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 2 年 238 天 4 小时 11 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    逐暗者的麦田. © 2021 ~ 2024.
    网站logo

    逐暗者的麦田 一个java软件攻城狮
     
     
     
     
    壁纸