古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

Neo4j-CQL

时间: 2023-05-02   |   分类: Neo4j   | 字数: 1905 字 | 阅读约: 4分钟 | 阅读次数:

Neo4j-CQL

1. CQL简介

CQL代表Cypher查询语言。像关系型数据库具有查询语言SQL,Neo4j使用CQL作为查询语言。

Neo4jCQL:

  • 它是Neo4j图形数据库的查询语言。
  • 它是一种声明性模式匹配语言。
  • 它遵循SQL语法。
  • 它的语法是非常简单且人性化、可读的格式。

常用命令如下:

序号命令作用
1CREATE 创建创建节点,关系和属性
2MATCH 匹配检索有关节点,关系和属性
3RETURN 返回返回查询结果
4WHERE 条件提供条件过滤检索match数据
5DELETE 删除删除节点和关系
6REMOVE 移除删除节点和关系的属性
7SET 设置添加或更新标签
8ORDER BY 排序对结果排序
9SKIP LIMIT 分页分页
10DISTINCT 排重排重

2. 语法详解

2.1 CREATE

CREATE ( 
  <node-name>:<label-name> 
  [{ 
   <property1-name>:<property1-Value>
   ........ 
   <propertyn-name>:<propertyn-Value> 
  }] 
)
语法元素描述
<node-name>要创建的节点名称
<label-name>节点标签名称
<property1-name>属性是键值对.定义将分配给创建节点的属性的名称
<property1-Value>属性是键值对。 定义将分配给创建节点的属性的值
CREATE (person:Person {cid:1,name:"刘备",age:24,gender:0,character:"A",money:1000}); 
CREATE (person:Person {cid:2,name:"林婉儿",age:20,gender:1,character:"B",money:800}); 
CREATE (person:Person {cid:3,name:"庆 帝",age:49,gender:0,character:"A",money:8900});

2.2 MATCH RETURN

MATCH ( 
  <node-name>:<label-name> 
)
RETURN <node-name>.<property1-name>, ... <node-name>.<propertyn-name>
MATCH (person:Person) return person
MATCH (person:Person) return person.name,person.age

2.3 关系创建

  • 使用现有节点创建没有属性的关系

    MATCH (<node1-name>:<node1-label-name>),(<node2-name>:<node2-label-name>) 
    CREATE(
      <node1-name>)-[<relationship-name>:<relationship-label-name>]->(<node2- name>) 
    RETURN 相应的内容
    

    -- 创建关系
    match(person:Person {name:"刘备"}) ,(person2:Person {name:"林婉儿"}) 
    create(person)-[r:Couple]->(person2);
    
    -- 查询关系 
    match p = (person:Person {name:"刘备"})-[r:Couple]->(person2:Person) 
    return p
    
    match (p1:Person {name:"刘备"})-[r:Couple]-(p2:Person) return p1,p2
    match (p1:Person {name:"刘备"})-[r:Couple]-(p2:Person) return r
    
  • 使用现有节点创建有属性的关系

    MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
    CREATE(
      <node1-label-name>)-[<relationship-label-name>:<relationship-name> 
      {<define-properties-list>}]->(<node2-label-name>) 
    RETURN <relationship-label-name> 
    
    -- 其中<define-properties-list> 是分配给新创建关系的属性(名称 - 值对)的列表。 
    { 
    	<property1-name>:<property1-value>, 
    	<property2-name>:<property2-value>, .
    	.. 
    	<propertyn-name>:<propertyn-value> 
    }
    
    match(person:Person {name:"庆 帝"}),(person2:Person {name:"林婉儿"}) 
    create(person)-[r:Couple{mary_date:"12/12/2014",price:55000}]->(person2) 
    return r;
    
  • 使用新节点创建没有属性的关系

    CREATE 
    (<node1-label-name>:<node1-name>) 
    -[<relationship-label-name>:<relationship-name>]-> 
    (<node1-label-name>:<node1-name>)
    
    create
    (
      person1:Person {cid:4,name:"长公主",age:49,gender:1,character:"A",money:5000}
    ) -[r:Friend]-> 
    (
      person2:Person {cid:7,name:"九品射手燕小乙",age:48,gender:0,character:"B",money:1000}
    )
    
  • 使用新节点创建有属性的关系

    CREATE (<node1-label-name>:<node1-name>{<define-properties-list>}) 
    	-[<relationship-label-name>:<relationship-name>{<define-properties-list>}] 
    	->(<node1-label-name>:<node1-name>{<define-properties-list>})
    
    create (person1:Person {cid:9,name:"靖王世子",age:23,gender:0,character:"A",money:3000}) 
    			-[r:Friend {date:"11-02-2000"}]
    			-> (person2:Person {cid:8,name:"二皇子",age:24,gender:0,character:"B",money:6000})
    

关系和节点的属性可以使用的类型

2.4 CREATE创建多个标签

CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>) 
如:
CREATE (person:Person:Beauty:Picture {cid:20,name:"小美女"})

2.5 WHERE子句

简单的WHERE子句 
WHERE <condition> 
复杂的WHERE子句
WHERE <condition> <boolean-operator> <condition>

where 中的比较运算符 和 之前mysql的相同 如 = != <> > < and or not 等

MATCH (person:Person) WHERE person.name = '范闲' OR person.name = '靖王世子' RETURN person

2.6 DELETE子句和REMOVE子句

  • DELETE

    删除节点, 删除节点及相关节点和关系

    match p = (:Person {name:"林婉儿"})-[r:Couple]-(:Person) delete r
    
  • REMOVE

    删除节点或关系的标签/属性

    MATCH (person:Person {name:"小美女"}) 
    REMOVE person.cid
    

2.7 SET子句

向现有节点或关系添加新属性/更新属性值

MATCH (person:Person {cid:1}) 
SET person.money = 3456,person.age=25

2.8 ORDER BY 子句

ORDER BY子句,对MATCH查询返回的结果进行排序

我们可以按升序或降序对行进行排序

默认情况下,它按升序对行进行排序。 如果我们要按降序对它们进行排序,我们需要使用DESC子句。

MATCH (person:Person) 
RETURN person.name,person.money 
ORDER BY person.money DESC

2.9 SKIP和LIMIT

Neo4j CQL已提供“SKIP”子句来过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果

Neo4j CQL已提供“LIMIT”子句来过滤或限制查询返回的行数。 它修剪CQL查询结果集底部的结果

MATCH (person:Person) 
RETURN ID(person),person.name,person.money 
ORDER BY person.money DESC skip 4 limit 2

2.10 DISTINCT排重

这个函数的用法就像SQL中的distinct关键字,返回的是所有不同值

MATCH (p:Person) RETURN Distinct(p.character)
#Neo4j# #图#
QQ扫一扫交流

标题:Neo4j-CQL

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Neo4j-CQL高级
图和Neo4j
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • Neo4j-CQL
  • 1. CQL简介
  • 2. 语法详解
    • 2.1 CREATE
    • 2.2 MATCH RETURN
    • 2.3 关系创建
    • 2.4 CREATE创建多个标签
    • 2.5 WHERE子句
    • 2.6 DELETE子句和REMOVE子句
    • 2.7 SET子句
    • 2.8 ORDER BY 子句
    • 2.9 SKIP和LIMIT
    • 2.10 DISTINCT排重
© 2019 - 2024 京ICP备19012088号-1
0%