Neo4j(CQL)学习记录-01(Cypher Query Language)

Neo4j版本适配 JDK jdk8=>v4版本以下;jdk11=> 4.x版本;jdk17=>5.x版本

将 Neo4j 中的概念与 SQL 中的概念进行对比时,可能会更容易理解。
CQLSQL
节点(Node) 表(Table)*我觉得更像数据库中的一行数据*
  • 在 Neo4j 中,节点类似于 SQL 中的表,它们都是存储数据的集合。
  • 但是,节点可以更灵活,可以表示任何事物,而不仅仅是表中的行。
  • 一个节点可以包含多个属性,就像表中的行可以包含多个列。一个节点可以看作一个实体
属性(Property) 列(Column)
  • 节点的属性类似于 SQL 表的列,它们描述了节点的特征或属性。
  • 例如,在一个用户节点中,你可以有属性如姓名、年龄、性别等,就像 SQL 表中的列一样。
标签(Label)表名(Table Name)
  • 标签是对节点进行分类或分组的方式,类似于 SQL 表名。
关系(Relationship)外键(Foreign Key)
  • 关系表示节点之间的连接或关联,类似于 SQL 中的外键关系。
  • 但是,Neo4j 中的关系更加灵活,可以有自己的属性,而不仅仅是连接两个节点。

在linux系统安装需要修改配置文件,默认HTTP端口7474,HTTPS端口7473,一下是需要修改端口时的代码片段

#With default configuration Neo4j only accepts local connections.

#To accept non-local connections, uncomment this line:

#可以远程通过ip访问neo4j数据库 dbms.default_listen_address=0.0.0.0

#HTTP Connector. There can be zero or one HTTP connectors. dbms.connector.http.enabled=true dbms.connector.http.listen_address=:7474

#HTTPS Connector. There can be zero or one HTTPS connectors. dbms.connector.https.enabled=false dbms.connector.https.listen_address=:7473

#设置neo4j可读可写 dbms.databases.default_to_read_only=false

下面记录一些CQL的基础语法,和SQL一样也有增删改查操作;

新增CREATE创建操作

Person`是**标签**,代表节点的类型。花括号{}代表节点的**属性**,
属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点,
该节点具有一个name属性,属性值是XYD。 可以创建sex,age等其他字段(属性)

CREATE (n:Person {name:'XYD'}) RETURN n

创建关系`MERGE`, 方括号`[ ]`即为关系,`FRIENDS`为关系的类型。
注意这里的箭头`-->`是有方向的,表示是从a到b的关系。 

MATCH (a:Person {name:'Li'}), 
      (b:Person {name:'Mi'}) 
MERGE (a)-[:FRIENDS]->(b)

 关系也可以增加属性 , 在关系中,同样的使用花括号{}来增加关系的属性,也是类似Python的字典,这里给FRIENDS关系增加了since属性,属性值为2001,表示他们建立朋友关系的时间。这里可以将FRIENDS理解为中间关系表,可以添加其他中间关联信息

MATCH (a:Person {name:'Sh'}), 
      (b:Person {name:'Sa'}) 
MERGE (a)-[:FRIENDS {since:2001}]->(b)

查询,这里也叫匹配; MATCH匹配操作

  1. 查询所有节点,将返回所有节点及其属性。
    MATCH (n) RETURN n;
  2. 查询指定类型的节点
    MATCH (n:Label) RETURN n; --查询label表下的所有属性
    --这里不同节点下的相同属性都会被查询出来,所以给节点属性取名需要谨慎
    --在以下情况下可以取名相同属性名,一些具有共享属性的比如创建时间
    --例如:用户节点和帖子节点都可能有"创建时间"(created_at)属性
    --例如:论文节点和作者节点都可能有"姓名"(name)属性,用于记录论文作者名和作者的姓名。
    MATCH (n) RETURN n.property; --查询会所有具有"property"属性的节点及其对应的属性信息。
  3. 查询关系
    MATCH (n)-[r]->(m) RETURN r;
    --查询图数据库中的关系,可以使用关系操作符 -[]->,return的是r就是返回r这个关系的属性
  4. 查询指定类型的关系
    MATCH (n)-[r:REL_TYPE]->(m) RETURN r;
    --返回类型为 REL_TYPE 的所有关系及其属性。
  5. 查询节点和关系
    MATCH (n)-[r]->(m) RETURN n, r, m;
  6. 还可以使用where条件过滤
    MATCH (n) WHERE n.property = 'value' RETURN n;
  7. 还可以使用聚合函数
    MATCH (n) RETURN count(n);

修改,更新现有节点的属性,可以使用 SET 关键字

MATCH (n:Label)
WHERE n.property = 'old_value'
SET n.property = 'new_value';
--将具有属性 property 值为 'old_value' 的节点的属性值更新为 'new_value'。

删除,使用delete关键字

MATCH (p:Person {name: 'John'}) DELETE p;--删除person节点中,name属性为John的节点

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值