做贺卡 网站,显示佣金的网站是怎么做的,台州免费建站,中小企业网站建设资讯1命名规范
名称应以字母字符开头#xff0c;不以数字开头#xff0c;名称不应包含符号#xff0c;下划线除外可以很长#xff0c;最多65535( 2^16 - 1) 或65534字符#xff0c;具体取决于 Neo4j 的版本名称区分大小写。:PERSON和:Person是:person三个不同的标签#xff…1命名规范
名称应以字母字符开头不以数字开头名称不应包含符号下划线除外可以很长最多65535( 2^16 - 1) 或65534字符具体取决于 Neo4j 的版本名称区分大小写。:PERSON和:Person是:person三个不同的标签并且n和N是两个不同的变量。前导和尾随空白字符将被自动删除。例如
MATCH ( a ) RETURN a
相当于
MATCH (a) RETURN a以下是推荐的命名约定
类型规范案例节点标签驼峰式以大写字符开头正例 :VehicleOwner 反例 :vehicle_owner关系类型大写使用下划线分隔单词正例 :OWNS_VEHICLE 反例 ::ownsVehicle
2 数据库操作
在关系型数据库mysql中我们可以通过show databases来查看我们有哪些数据库如下图所示 在图数据库neo4j中我们想要查看有哪些数据库他的查看语句于也是show databases这点在语法规则上和mysql一样的。
2.1查询数据库
show databasesneo4j:系统默认的图数据库 system:系统库
2.2切换数据库
语法规则:use 数据库名
//切换到系统库
:use system//切换到neo4j库
:use neo4j下图表示当前在system这个数据库下我们现在要切换到neo4j这个数据库下
2.3创建数据库
//企业版才支持命令创建数据库
create database neo4j_hutao社区版使用命令创建将会报如下错误
3节点操作
3.1创建节点
语法规则CREATE (节点名称)
//(1)创建一个节点n
CREATE (n)//(2)创建两个节点n和m
CREATE (n), (m)//(3)创建一个节点n并且为这个节点设置标签为User
CREATE (n:User)//(4)创建一个节点n设置标签并且为这个节点添加属性
CREATE (n:User{userName:胡涛, userAge:25, userSex:男}),//(5)创建多个节点n设置标签并且为这个节点添加属性
CREATE (n1:User{userName:胡涛1, userAge:25, userSex:男}),(n2:User{userName:胡涛2, userAge:26, userSex:男})如下是我们使用上述的第五个命令创建的两个节点胡涛1和胡涛2 3.2查询节点
当我们创建了节点以后怎么查看我们的节点嗯 语法规则MATCH 节点RETURN 节点
//(1)查找所有的节点
MATCH(n) RETURN n//(2)查找指定标签User的节点同理这里我们可以把User换成其他节点的标签
MATCH(n:User) RETURN n//(3)查找某个指定属性的节点即根据节点的属性进行查询
MATCH(n:User) WHERE n.userName 胡涛1 RETURN n
或者
MATCH(n:User{userName:胡涛1}) RETURN n这两种方式有什么区别嗯 MATCH 节点 WHERE 节点属性 查询使用 WHERE n.userName 胡涛1’子句来指定过滤条件该条件要求节点的“userName”属性等于“胡涛1”。这个查询将遍历所有的“User”节点并将符合条件的节点返回。这个查询可以使用索引来提高查询性能。 MATCH 节点 { 节点属性 } 这个查询使用了节点属性的内联语法“{userName:‘胡涛1’}”来明确指定要匹配的属性和属性值。这个查询将直接在索引中查找名称为“胡涛1”的用户节点并将其返回。这个查询通常比第一个查询更快因为它直接利用了索引。 查询小技巧 如果要查询节点的某个属性等于特定值最好使用内联语法来指定属性和属性值这将利用索引并且可以更快地返回结果。 如果您需要更复杂的过滤条件例如使用大于、小于、不等于等运算符或者需要使用多个属性来过滤节点则可以使用“WHERE”子句来构建查询。
//(4)返回节点的属性
MATCH(n:User) WHERE n.userName 胡涛1 RETURN n.userName,n.userAge当我查询节点的属性时此时返回给我们的就不在是图而是一个列表信息了
某些查询我们可能无法使用节点属性的内敛语法因此可能需要我们构造一些复杂的where子语句或者使用特定的方法此处不在展开只介绍一些入门的示例。
//(5) 通匹符 * 查询 User节点中userName带某个关键字的例如名字中包含《涛》
match (n:User) where n.userName ~.*涛.* return n//(6) starts with查询某个关键字开头的例如名字中是《胡》开头的同理还有其他方法 ends with /contains
match (n:User) where n.userName starts with 胡 return n3.3删除节点
如果你上面已经学会了查询节点那么其实删除节点你也学会了 删除语法和查看语法一样区别查看是RETURN删除是DELETE
将我们上面的查询语句中的 RETURN换成DELETE即可。//1)删除所有的节点
MATCH(n) DELETE n//(2)删除指定标签中某个指定属性的节点
MATCH(n:User{userName:胡涛1}) DELETE n3.4修改节点
语法同样和查询语句类似因为无论查询、删除、修改我们都是用 match来匹配的 查询match ( 节点) return 节点 删除match ( 节点) delete 节点 修改match ( 节点) set 节点的属性
//将胡涛1的年龄修改为18岁并返回修改结果
MATCH (u:User {userName: 胡涛1}) SET u.userAge 18 RETURN u4关系操作
4.1创建关系
准备工作提前创建好两个不同节点这两个节点可以是同标签也可以不同标签
//准备User节点
CREATE (n1:User{userName:小跟班, userAge:28, userSex:男}),
(n2:User{userName:西子, userAge:28, userSex:女}),
(n3:User{userName:念念, userAge:28}),
(n4:User{userName:老司)语法规则CREATE (节点1) - [:关系] 箭头 (节点2) 箭头
–表示从一个节点指向另一个节点的有向关系。例如(a) -- (b) 表示从节点 a 指向节点 b 的有向关系一个横杠一个箭头–表示从一个节点指向另一个节点的相反方向的有向关系。例如(a) -- (b) 表示从节点 b 指向节点 a 的有向关系一个横杠一个箭头–表示表示两个节点之间没有方向性的关系即无向关系。例如(a) – (b) 表示节点 a 和节点 b 之间的无向关系两个横杆
注意Neo4J中关系的创建不能是无向的但是查询和使用可以
CREATE (节点1) - [:关系] - (节点2)
//(1)创建a指向b的关系
MATCH (a:User{userName:西子}), (b:User{userName:小跟班}) CREATE (a)-[:老公]-(b)这里我们直接创建了一个没有任何属性的关系这个关系就叫做老公效果如下所示 CREATE (节点1) - [:关系{属性}] - (节点2)
//(2)创建a指向b的关系并且包含属性
MATCH (a:User{userName:西子}), (b:User{userName:念念}) CREATE (a)-[:RELATION{name:闺蜜}]-(b)这里我们创建一个关系该关系叫做RELATION并且有个属性namename为闺蜜 CREATE (节点1) - [:关系{属性}] - (节点2)
//(4)创建两个关系a-b c-c
MATCH (a:User{userName:西子}), (b:User{userName:老司}), (c:User{userName:念念})
CREATE (a)-[:RELATION{name:哥们}]-(b),(c)-[:RELATION{name:媳妇}]-(b)最后我们得到如下这么一个关系 为了方便查看我们选择RELATION关系呈现时选择name属性同样对于User节点我们也可以选择需要展示的属性最终效果如下所示
4.2查询关系
语法规则MATCH (节点1) - [:关系] - (节点2)
//1)查看所有关系
MATCH ()-[r]-() RETURN DISTINCT r//2)查询指定的关系类型以及指定的关系属性
MATCH ()-[r:RELATION{name:媳妇}]-() RETURN DISTINCT r//3)查询指定类型的关系的节点
MATCH (n1)-[r:RELATION]-(n2) RETURN n1,n2前面两个查询我们都是return关系在这里我们return的节点n1和n2我们不难发现在这里我们返回的节点-关系-节点 当我们只返回关系时只有关系的文本或者表格 当我们只返回节点时是可以把关系一并返回的并且可以构成一个图
//4)查询指定类型的关系的节点的属性和节点
MATCH (n1)-[r:RELATION]-(n2) RETURN n1.userName,n2这里节点1我们返回用户名节点2整个返回依然可以看到还能形成一个图。 查看table我们可以发现节点1确实只返回了用户名而节点2返回了所有的属性但是我们也并没有找到关于n1和n2之间的关系但是n1和n2确实在关系拓扑图中能看到。 这是因为Neo4j 是一个图数据库它的数据模型是基于节点和关系的图形结构其中节点表示实体关系表示实体之间的连接。当执行一个查询并返回节点时Neo4j 将返回所有与查询结果相关的节点并将这些节点按照它们之间的关系组织成一个图形结构。 即使在查询中没有返回关系Neo4j 仍然可以根据节点之间的关系来构建图形结构。这是因为关系在 Neo4j 中是由节点来表示的每个关系都包含指向起始节点和结束节点的引用。因此当返回节点时Neo4j 可以通过这些节点之间的关系引用来构建图形结构。 需要注意的是单纯使用cypher查询的话是不会构成关系图的构成这个关系图拓扑是Neo4j Browser这个工具为我们画的
4.3删除关系
删除语法和查看语法类似区别在查看是RETURN删除是DELETE 语法规则MATCH (节点1) - [r:关系] - (节点2) DELETE r
//1)删除查询出来的关系r
MATCH (f:User{userName:老司})
-[r:RELATION{name:媳妇}]-
(s:User{userName:念念})
DELETE r//2)删除所有关系r
MATCH ()-[r]-() DELETE r删除老司和念念之间的关系后在查看就发现他们两个之间关系没了
4.4修改关系
//1我们把删除掉的关系创建回来
MATCH (a:User{userName:念念}), (b:User{userName:老司})
CREATE (a)-[:RELATION{name:媳妇}]-(b)//2接着我们将关系中的name属性改成小心肝
MATCH (a:User{userName:念念})-[r:RELATION{name:媳妇}]-(b:User{userName:老司}) set r.name小心肝
return a,b至此相信你对neo4j和cypher的基本使用有了一定的认识。接下来我们会详细的学习cypher的语法