按照总监要求看了两天的neo4j 数据库的使用。在网上找了一个基础教程类似于w3c.school的网站(英文中文,中文的翻译的不是很好,如果英文不好可以辅助理解),这个教程基础知识很全全面,从数据库的安装,到spring框架下的使用都有降到,由于spring框架侧重于工程,目前还用不到,所以有关在spring框架下的使用没有看。

neo4j 基础知识点比较少,我这里只整理了21个。

neo4j数据库的基本概述:

neo4j的优点:图数据库的有点是按照的关系深度的遍历。例如:A 的朋友的妻子的妈妈,,类似于这样的推理,图数据库可以推理4层甚至五层,而关系型数据库智能推理三层。

neo4j数据库的容量:节点和关系大约可以存储350亿个,关系可以存储27.5亿。

neo4j图模型规则:数据使用节点 属性和关系表示,节点和关系包含属性;关系连接节点,属性是键值对,节点使用圆,关系使用箭头来表示,关系分为单项和双向;每个关系包含Start Node或者From Node和To Node 或者End Node;

neo4j的cql命令:create match where delete remove return orderby 组(添加或者更新标签),可以允许两个或者多个完全相同的节点存在。

语法和关键字:

1、create: create语句是创建模型语句用创建数据模型

语法格式:create(nodename:label-name { Property1-name:Property1-Value ……. Propertyn-name:Propertyn-Value })

e.g: create (nodename:Nodename{name:”king”, location:”xiamen”})

e.g.: create (A:Person{name:’jim’})-[:Friend]-(B:Person {name:’tim’})-[:Friend]-(C:Person {name:’lucy’}), (A)-[:Know]-(C)

创建一个多标签名称的节点:CREATE (m:Movie:Cinema:Film:Picture);

//* A 是B的朋友,B是C的朋友,A知道C; ()里面表示的是节点,[]里面表示的是关系;{}里面的元素表示的是属性;

2、match: match是查询语句,用于查询数据库中的值。return 语句是返回语句,用于返回查询的结果集

eg. match (a)-[:Friend]-(b) where b.name=’tim’ return b

eg. match (nodename:Nodename) return nodename.name, nodename.location

3、create +return

4、关系基础:每个关系包含两个节点,节点间的关系有单项关系和双向关系。 创建关系包含,为无属性的节点创建关系,为有属性的节点创建关系,创建无属性的新节点的关系,

创建有属性的新节点关系,检索相关节点详细信息。

创建单个标签的关系, create(nodename1:nodelabel,)-(relationshipName:relationship-label_name)]-(nodeName2:nodeLabel2)

eg.CREATE (node1-name:label1-name)-[(relationship-name:relationship-label-name)]-(node2-name:label2-name)

5、where关键字:where语法: where condition 或者 where condition boolean-operation condition

条件(condition)的语法:property-name comparison-operator value

boolean 操作符: and or not xor(异或)

比较运算符:= (不等于) = =

eg: match (nodename:Nodename) where nodename.name=”king” return nodename

eg: match (nodename:Nodename) where nodename.name=”king” or nodename.location=”xiamen” return nodename

使用where语句创建关系: 对两个现存节点创建一个关系,同时创建两个节点及他们之间的关系,使用where语句对两个现存节点创建关系。

使用where语句创建关系案例: match(node1-name:node-label1-name,node2-name:node1-name) where condition create (node1-name:node1-label)

-[relationship:relationship-name]-(node2-label-name)

6、delete关键字: 删除节点列表: delete nodename-list; eg: match (nodename1:nodeName) delete nodename1;

删除节点及关系: delete node1name,node2name,relationship-name eg: match (node1-name)-[relationshipn]-(node2-name)

7、remove关键字:用于移除节点和关键字属性标签。 remove property-name-list MATCH (book { id:122 }) REMOVE book.price RETURN book

8、set 关键字; 用于添加节点和关键字的属性标签 set property-name-list match (book {id:122}) set book.price=26 return book

9、分类:分类使用order by 关键字,按照降序使用desc 语法为 order by property-name-list [desc] eg:MATCH (emp:Employee)

RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDER BY emp.name DESC

order默认为升序的方式

10、union关键字: union关键字是将用两个结果集融合成一个结果集,有两种形式:union和union all. 用于约束的两个结果集必须有相投的结果列和相同结果形式

语法格式:match command1 union match command2 eg:MATCH (cc:CreditCard) RETURN cc.id,cc.number UNION MATCH (dc:DebitCard) RETURN dc.id,dc.number

union all 关键字:两个队列必须有有相同的行和相同的数据类型。 语法格式:match command1 union all match command2.

11、limit 关键字: 用来筛选或者限制检索结果的行数。语法 limit number; eg. match (emp:Employee) return emp limit 3 注:筛选前面的number个结果

skip关键 用来筛选或者限制检索结果的行数 语法 skip number eg. match (emp:Employe ) return emp skip 3 注 筛选后面的number个结果

12、merge 关键字:用于在图中按照给定的模式搜索,如果该模式不存在,将创建一个新的节点或者关系。语法:merge (node-name: node-label-name){

property-name: property-value)

13、null关键字:null 值作为节点或者关系的属性的缺省值或者未定义的值。

14、IN 关键字:给值的集合到定制列表命令。语法:IN[collection-of-values] eg. matche (emp:Employee) where e.id in [] return emp

15、id 属性:id 是库按照节点或者关系创建的顺序自动添加的标识符。

16、直接关系, 在图数据中节点与节点之间的链接是依靠关系链接,这里关系是具有方向的(单项或者双向)

17、String 函数: string函数是为了按照要求处理查询结果。string函数包含 upper lower substring relac关键字。

lower关键字将字符串全部转化为小写字符,substring函数是用来截取子串,replace用来替换字符串的。语法分别为: upper(input-string) lower(input-string) substring(input-string, startIndex,endIndex)

eg. MATCH (e:Employee) RETURN e.id,UPPER(e.name),e.sal,e.deptno MATCH (e:Employee) RETURN e.id,LOWER(e.name),e.sal,e.deptno

MATCH (e:Employee) RETURN e.id,SUBSTRING(e.name,0,2),e.sal,e.deptno

18、aggregation 函数: 在return 关键中提供了Aggregation函数,aggregation 函数主要包含count max min sum avg 关键字。upper关键是,将结果全部转化为大写字符

count 关键字是为了统计有多少个返回值的。count (value) eg. match (e:Employee) RETURN COUNT(*);

max (property-name), 检索返回值中proper-name属性最大值 min(property-name), 检索返回值中proper-name属性最小值

MATCH (e:Employee) RETURN MAX(e.sal),MIN(e.sal)

avg 关键字:AVG(property-name)计算返回值中属性为property-name的平均值, sum 关键字:sum(property-name)计算返回值中属性为property-name的和,

eg. MATCH (e:Employee) RETURN SUM(e.sal),AVG(e.sal)

19、relationship 函数:relationship 函数提供一些处理节点之间的关系的函数。relationship 函数提供了STARTNODE ENDNODE ID TYPE关键字;

startnode (relationship-label-name) relationship-label-name 是节点或者关系的属性名称,返回关系的起始节点。endnode (relationship-label-name) 返回关系的中止节点。

id(relation-name)返回relation-name的id

type(relation-name) 返回关系标签(relation-label-name)

eg. MATCH (a)-[movie:ACTION_MOVIES]-(b) RETURN ENDNODE(movie) startnode(movie)

eg. MATCH (a)-[movie:ACTION_MOVIES]-(b) RETURN ID(movie),TYPE(movie)

20.index: neo4j 支持在节点和关系的属性索引来提高应用程序的性能。主要功能有创建索引和清除索引,

create index: create index on: label-name:property-name eg. CREATE INDEX ON :Customer (name)

drop index:DROP INDEX ON :label_name (property_name) eg. DROP INDEX ON :Customer (name)

21、create unique constraint: 创建约束的目的是为了回避重复的节点 保持数据的完成性规则。

create constraint on(label-name) assert (property-name) is unique eg.CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

DROP CONSTRAINT ON (label_name) ASSERT property_name IS UNIQUE eg. DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

原文地址:https://blog.csdn.net/kingjack1176/article/details/75125700

neo4j 基本语法笔记(全)的更多相关文章

  1. SQL基础语法笔记教程整理

    PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...

  2. SQL 基础语法笔记教程整理

    最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...

  3. Neo4j Cypher语法(三)

    目录 5 函数 5.1 谓词函数 5.2 标量函数 5.3 聚合函数 5.4 列表函数 5.5 数学函数 5.6 字符串函数 5.7 Udf与用户自定义函数 6 模式 6.1 索引 6.2 限制 7 ...

  4. 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序

    简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...

  5. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  6. [python] Pythonic语法笔记

    Pythonic语法笔记 __new__ 在类实例化之前执行的,也就是在init之前执行,可以为这个类写操作.接受的参数不是self而是cls.只有在new方法里返回类才会执行init操作,需要返回父 ...

  7. Neo4j数据和Cypher查询语法笔记

    Cypher数据结构 Cypher的数据结构: 属性类型, 复合类型和结构类型 属性类型 属性类型 Integer Float String: 'Hello', "World" B ...

  8. Neo4j的查询语法笔记(二)

    cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ...

  9. SQL Server 常用高级语法笔记

    自从用了EF后很少写sql和存储过程了,今天需要写个比较复杂的报告,翻出了之前的笔记做参考,感觉这个笔记还是很有用的,因此发出来和园友分享. 1.case...end (具体的值)case后面有值,相 ...

随机推荐

  1. CSS3——制作带动画效果的小图片

    下了一个软件:ScreenToGif用来截取动态图片,终于可以展示我的小动图啦,嘻嘻,敲开心! main.html <!DOCTYPE html> <html lang=" ...

  2. git 的add .

    git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件. git add -u :他仅监控 ...

  3. celery在项目中的使用

    1 关于celery是一个处理异步耗时任务的框架 由 worker 和broker 和store 3部分组成 worker是来处理消息的工人 broker是来存储请求消息的仓库 store是用来存储结 ...

  4. unigui ios微信界面错位和点击失灵问题

    IOS微信下会出现二个严重问题: 1.输入框失去焦点导致控件错位,造成无点正常点击. 此问题是微信自带浏览器,一直遗留问题, 尝试了多种方法始终无解.因此要用来开发公众号的一定要注意. 2.界面下移 ...

  5. 微信小程序自定义底部导航栏组件+跳转

    微信小程序本来封装有底部导航栏,但对于想自定义样式和方法的开发者来说,这并不是很好. 参考链接:https://github.com/ljybill/miniprogram-utils/tree/ma ...

  6. RedHat下使用gcc编译HelloWorld.cpp

    gcc ./HelloWorld.cpp 错误: /tmp/ccZuz3Ca.o:(.eh_frame+0x12): undefined reference to `__gxx_personality ...

  7. Actor Roles 图示

    Udemy上的教程<Unreal Multiplayer Mastery - Online Game Development in C++>中对Actor Roles的总结非常直观到位,一 ...

  8. 进阶4:hive 安装

    安装包: apache-hive-2.1.1-bin.tar.gz 安装步骤: 1.上传   apache-hive-2.1.1-bin.tar.gz 到linux; 2.解压文件: tar zxvf ...

  9. web classpath路径说明

    http://blog.csdn.net/wyswlp/article/details/8886385 http://www.cnblogs.com/Ant-soldier/p/5474085.htm ...

  10. flask的请求上下文request对象

    Flask从客户端收到请求时,要让视图函数能访问请求对象request ,才能处理请求.我们可以将request对象作为参数传到试图函数里,比如: from flask import Flask, r ...