Neo4j常用命令

create

  1. 创建没有属性的节点
    create (nodeName:labelName)

    create (user:User)
    
  2. 创建带属性的节点
    create (nodeName:labelName {propName:propValue})

    create (user:User {name: '张三', age: 20})
    
  3. 在没有属性的节点之间创建关系

    见关系部分

  4. 使用属性创建节点之间的关系

    见关系部分

  5. 为节点或关系创建单个或多个标签
    create (nodeName:labelName1:labelName2)

    create (user:User1:User2:User3)
    

match & return

mathch和return都不能单独使用,return必须搭配match使用,match必须搭配return、update、delete使用
  1. 检索节点的某些属性
    match (u:User) return u.name, u.age
    
  2. 检索节点的所有属性
    match (u:User) return u
    
  3. 按属性查询
    # 查询id值为1007的User节点
    match (u:User {id:1007}) return u
    
  4. 检索节点和关联关系的某些属性
  5. 检索节点和关联关系的所有属性
  6. 查询多个节点的关系
  7. 查询多个节点的数据
    match (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 return u,a
    

where子句

语法结构:WHERE <condition> <boolean-operator> <condition>

set

现有节点添加新属性和值
现有节点更新属性值
  1. 添加属性
    match (u:User) set u.gender = '男'
    
  2. 修改属性
    match (u:User) set u.age = 19
    
  3. 搭配where条件,不指定where条件会更新所有数据
    match (u:User) where u.id=1001 set u.address = 'wuhan'
    

delete

  1. 删除没有关系的节点
    match(u:User) delete u
    
  2. 删除存在关系的节点detach
    match(u:User) detach delete u
    
  3. 删除所有节点
    match(u:User) delete u
    match(u:User) detach delete u
    
  4. 搭配where,不指定where条件会删除所有数据
    match(u:User) where u.id = 1001 detach delete u
    

remove

  1. 删除属性
    match (u:User) remove u.name
    
  2. 删除标签
    match (u:User) remove u:User
    
  3. 搭配where
    # 删除属性
    match (u:User) where u.id=1004 remove u:age
    # 删除标签
    match (u:User) where u.id=1004 remove u:User
    

order by

  1. 升序(默认)
    match (u:User) where u.id > 1 return u order by u.age
    
  2. 降序
    match (u:User) where u.id > 1 return u order by u.age desc
    

skip & limt

  1. skip
    match (u:User) where u.id > 1 return u skip 2
    
  2. limit
    match (u:User) where u.id > 1 return u limit 1
    
  3. skip和limit可以实现分页
    match (u:User) where u.id > 1 return u skip 2 limit 1
    
  4. match & where & order by & skip & limit组合
    match (u:User) where u.id > 1 return u order by u.age skip 1 limit 2
    

union

限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
  1. 语法
    # union
    match (u:User) return u.name as name,u.age as age 
    union
    match (s:Student) return s.name as name, s.age as age
    
    # union all
    match (u:User) return u.name as name,u.age as age 
    union
    match (s:Student) return s.name as name, s.age as age
    

merge

  1. 创建数据
    # create: Added 1 label, created 1 node, completed after 3 ms.
    create (user:User) 
    # merge: no changes, no records
    merge (user:User)
    
    # 执行两次创建两条数据
    create (user:User {name:'xxx', age:18})
    create (user:User {name:'xxx', age:18})
    #执行两次只创建出了一条数据
    merge (user:User {name:'yyy', age:18})
    merge (user:User {name:'yyy', age:18})
    
  2. 检索数据
  3. create的区别:
    • create可以创建出没有属性的节点,merge不会创建
    • create可以创建相同属性的节点,merge不会创建重复节点

null & in

关系

create (startNodeName:startLabelName) - [relationNodeName:relationLabelName {relationPropName:relationPropValue}] -> (endNodeName:endLabelName)
  1. 在两个现有节点之间创建无属性的关系
  2. 在两个现有节点之间创建有属性的关系
  3. 在两个新节点之间创建无属性的关系
  4. 在两个新节点之间创建有属性的关系
  5. 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
    match (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 create (u)-[r1:账号余额]->(a)
    

CQL函数

  1. 字符串函数
    • upper
    match (user:User) return upper(user.name)
    
    • lower
    match (user:User) return lower(user.name)
    
    • substring
    match (user:User) return substring(user.name,1,2)
    
    • replace
    match (user:User) return replace(user.name,'zha','123')
    
  2. 聚合函数
    count & max & min & sun & avg
    match (u:User) return count(u.age), max(u.age), min(u.age), sum(u.age), avg(u.age)
    
  3. 关系函数
    startnode & endnode & id & type
    match (u:User) -[r:r1]->(a:User) return startnode(r),endnode(r),id(r),type(r)
    
Neo4j是一个流行的图数据库管理系统,它提供了一系列的命令和查询语言来操作和查询图数据。以下是一些常用的Neo4j命令和操作: 1. **创建节点**: ```cypher CREATE (n:Person {name: 'Alice', age: 30}) ``` 这条命令创建了一个标签为`Person`的节点,并设置了`name`和`age`属性。 2. **创建关系**: ```cypher MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CREATE (a)-[r:FRIENDS_WITH]->(b) ``` 这条命令在`Alice`和`Bob`之间创建了一条`FRIENDS_WITH`关系。 3. **查询节点**: ```cypher MATCH (n:Person {name: 'Alice'}) RETURN n ``` 这条命令查询标签为`Person`且`name`属性为`Alice`的节点。 4. **更新节点属性**: ```cypher MATCH (n:Person {name: 'Alice'}) SET n.age = 31 RETURN n ``` 这条命令将`Alice`的`age`属性更新为31。 5. **删除节点**: ```cypher MATCH (n:Person {name: 'Alice'}) DELETE n ``` 这条命令删除标签为`Person`且`name`属性为`Alice`的节点。 6. **删除关系**: ```cypher MATCH (a:Person {name: 'Alice'})-[r:FRIENDS_WITH]->(b:Person {name: 'Bob'}) DELETE r ``` 这条命令删除`Alice`和`Bob`之间的`FRIENDS_WITH`关系。 7. **查询路径**: ```cypher MATCH (a:Person {name: 'Alice'})-[:FRIENDS_WITH*1..3]->(b:Person) RETURN b ``` 这条命令查询`Alice`通过`FRIENDS_WITH`关系最多3步到达的所有`Person`节点。 8. **索引**: ```cypher CREATE INDEX ON :Person(name) ``` 这条命令在`Person`节点的`name`属性上创建索引,以提高查询性能。 9. **约束**: ```cypher CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE ``` 这条命令确保`Person`节点的`name`属性是唯一的。 这些命令只是Neo4j众多功能和操作的冰山一角。通过Cypher查询语言,Neo4j提供了丰富的功能来操作和查询复杂的图数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值