常用命令
- create
- [match & return](#match & return)
- where子句
- set
- delete
- remove
- [order by](#order by)
- [skip & limt](#skip & limt)
- union
- merge
- [null & in](#null & in)
- 关系
- CQL函数
create
-
创建没有属性的节点
create (nodeName:labelName)
sqlcreate (user:User)
-
创建带属性的节点
create (nodeName:labelName {propName:propValue})
sqlcreate (user:User {name: '张三', age: 20})
-
在没有属性的节点之间创建关系
见关系部分
-
使用属性创建节点之间的关系
见关系部分
-
为节点或关系创建单个或多个标签
create (nodeName:labelName1:labelName2)
sqlcreate (user:User1:User2:User3)
match & return
mathch和return都不能单独使用,return必须搭配match使用,match必须搭配return、update、delete使用
-
检索节点的某些属性
sqlmatch (u:User) return u.name, u.age
-
检索节点的所有属性
sqlmatch (u:User) return u
-
按属性查询
sql# 查询id值为1007的User节点 match (u:User {id:1007}) return u
-
检索节点和关联关系的某些属性
-
检索节点和关联关系的所有属性
-
查询多个节点的关系
-
查询多个节点的数据
sqlmatch (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 return u,a
where子句
语法结构:WHERE <condition> <boolean-operator> <condition>
set
现有节点添加新属性和值
现有节点更新属性值
-
添加属性
sqlmatch (u:User) set u.gender = '男'
-
修改属性
sqlmatch (u:User) set u.age = 19
-
搭配where条件,不指定where条件会更新所有数据
sqlmatch (u:User) where u.id=1001 set u.address = 'wuhan'
delete
-
删除没有关系的节点
sqlmatch(u:User) delete u
-
删除存在关系的节点
detach
sqlmatch(u:User) detach delete u
-
删除所有节点
sqlmatch(u:User) delete u match(u:User) detach delete u
-
搭配where,不指定where条件会删除所有数据
sqlmatch(u:User) where u.id = 1001 detach delete u
remove
-
删除属性
sqlmatch (u:User) remove u.name
-
删除标签
sqlmatch (u:User) remove u:User
-
搭配where
sql# 删除属性 match (u:User) where u.id=1004 remove u:age # 删除标签 match (u:User) where u.id=1004 remove u:User
order by
-
升序(默认)
sqlmatch (u:User) where u.id > 1 return u order by u.age
-
降序
sqlmatch (u:User) where u.id > 1 return u order by u.age desc
skip & limt
-
skip
sqlmatch (u:User) where u.id > 1 return u skip 2
-
limit
sqlmatch (u:User) where u.id > 1 return u limit 1
-
skip和limit可以实现分页
sqlmatch (u:User) where u.id > 1 return u skip 2 limit 1
-
match & where & order by & skip & limit组合
sqlmatch (u:User) where u.id > 1 return u order by u.age skip 1 limit 2
union
限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
-
语法
sql# 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
-
创建数据
sql# 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})
-
检索数据
-
create的区别:
- create可以创建出没有属性的节点,merge不会创建
- create可以创建相同属性的节点,merge不会创建重复节点
null & in
关系
create (startNodeName:startLabelName) - [relationNodeName:relationLabelName {relationPropName:relationPropValue}] -> (endNodeName:endLabelName)
-
在两个现有节点之间创建无属性的关系
-
在两个现有节点之间创建有属性的关系
-
在两个新节点之间创建无属性的关系
-
在两个新节点之间创建有属性的关系
-
在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
sqlmatch (u:User),(a:Account) where u.id = 1001 and a.id = 20241212001 create (u)-[r1:账号余额]->(a)
CQL函数
-
字符串函数
- upper
sqlmatch (user:User) return upper(user.name)
- lower
sqlmatch (user:User) return lower(user.name)
- substring
sqlmatch (user:User) return substring(user.name,1,2)
- replace
sqlmatch (user:User) return replace(user.name,'zha','123')
-
聚合函数
count & max & min & sun & avgsqlmatch (u:User) return count(u.age), max(u.age), min(u.age), sum(u.age), avg(u.age)
-
关系函数
startnode & endnode & id & typesqlmatch (u:User) -[r:r1]->(a:User) return startnode(r),endnode(r),id(r),type(r)