一、建模

1、 模型定义-销售数据库(saledb)

顶点 继承自 属性
人(Person)   姓名(name)
性别(sex)
出生日期(birthday)
员工(Employee) V、Person 工号(workerNo)
客户(Customer) V、Person 会员号(memberNo)
商品(Product)   商品名(name)
生产日期(productionDate)
价格(price)
厂商(factory)
食品(Food) V、Product  
服装(Costume) V、Product 尺寸(size)
继承自 属性
销售(SafeOf) E 销售日期(safeDate)
购买(BuyOf) E 购买日期(buyDate)
服务(ServiceOf) E 服务日期(serviceDate)

2、 模型定义SQL

2.1新建数据库

语法:

CREATE DATABASE <database-url> [<user> <password> <storage-type> [<db-type>]] [-restore=<backup-path>]

说明:

  • <database-url>:连接方式,格式为,:。

    • <mode>:模式,为plocal 或者 remote
    • <path>:数据库在磁盘存储位置
  • <user>:数据库登录用户名
  • <password>:数据库登录密码
  • <storage-type>:存储类型,可以是PLOCAL 或者 MEMORY
  • <db-type>:数据库类型,可以是GRAPH 或者 DOCUMENT,默认为GRAPH

举例:

CREATE DATABASE remote:10.250.20.146/saledb root 123456 PLOCAL

特别说明

该命令只能在控制台执行。

新建数据库也可以在orientdb studio登录界面创建,在studio中新建数据库的界面如下图所示。

2.2模型定义

新建Class语法:

CREATE CLASS <class> [EXTENDS <super-class>] [CLUSTER <cluster-id>*] [ABSTRACT]

说明:

  • <class>:类名,以大写字母、下划线、美元符号开头。
  • <super-class>:父类
  • <cluster-id>:你需要在该类使用的存储cluster的id,多个用逗号分隔,cluster可以预先定义然后在这里指定。不指定会自己创建,默认创建的cluster个数为CPU核数。
  • <total-cluster-number>:显示指定创建的cluster个数
  • ABSTRACT:是否抽象类,是否抽象类,抽象类不可被直接使用。

新建属性语法:

CREATE PROPERTY <class>.<property> <type> [<link-type>|<link-class>] ( <property constraint> [, <property-constraint>]* ) [UNSAFE]

说明:

  • <class>:需要添加属性的类。
  • <property>:新添加的属性。
  • <type>:数据类型
  • <link-type>:数据类型为集合类型时,这个通过这个指明集合元素的基本数据类型。
  • <link-class>:数据类型为集合类型时,集合元素类型为对象,通过这个指明具体对象。
  • <property-constraint>:属性约束,限制属性最大、最小、是否空等。
  • UNSAFE:安全检查,是否检查记录已经存在,如果这个属性只会增加,可以设置为UNSAFE,在大数据集下可以减少不必要的检查时间。

建Class-人(Person)

CREATE CLASS Person ABSTRACT;
CREATE PROPERTY Person.name STRING;
CREATE PROPERTY Person.sex STRING;
CREATE PROPERTY Person.birthday DATE;

建Class-实体-员工(Employee)

CREATE CLASS Employee EXTENDS Person,V;
CREATE PROPERTY Employee.workerNo INTEGER;

建Class-实体-客户(Customer)

CREATE CLASS Customer EXTENDS Person,V;
CREATE PROPERTY Customer.memberNo INTEGER;

建Class-商品(Product)

CREATE CLASS Product ABSTRACT;
CREATE PROPERTY Product.name STRING;
CREATE PROPERTY Product.productionDate DATE;
CREATE PROPERTY Product.price FLOAT;

建Class-实体-食品(Food)

CREATE CLASS Food EXTENDS Product,V;

建Class-实体-服装(Costume)

CREATE CLASS Costume EXTENDS Product,V;
CREATE PROPERTY Costume.size STRING;

建Class-关系-销售(SaleOf)

CREATE CLASS SaleOf EXTENDS E;
CREATE PROPERTY SaleOf.saleDate DATE;

建Class-关系-购买(BuyOf)

CREATE CLASS BuyOf EXTENDS E;
CREATE PROPERTY BuyOf.buyDate DATE;

建Class-关系-服务(ServiceOf)

CREATE CLASS ServiceOf EXTENDS E;
CREATE PROPERTY ServiceOf.serviceDate DATE;

二、 增删改查

1、 顶点

1.1 添加-顶点-员工

方式一:创建顶点方式添加

CREATE VERTEX Employee SET name = '张三', sex = '男',birthday='1989-08-05',workerNo='1001';
CREATE VERTEX Employee CONTENT { "name" : "王五",  "sex" : "男","birthday":"1977-10-12","workerNo":"1003" }

方式二:SQL insert添加

insert into Employee(name,sex,birthday,workerNo)values('李四','男','1998-07-01','1002');

1.2 删除-顶点-员工

根据内部ID(@rid)删除

DELETE VERTEX #34:0

更具属性条件删除

DELETE VERTEX Employee WHERE workerNo='1003'

1.3 修改-顶点-员工

UPDATE Employee SET sex = '女' WHERE workerNo='1003'

1.4 查询-顶点-员工

select * from Employee
select * from Employee where sex='男'

2、 边

2.1 添加边

语法:

CREATE EDGE <class> [CLUSTER <cluster>] [UPSERT] FROM <rid>|(<query>)|[<rid>]* TO <rid>|(<query>)|[<rid>]*[SET <field> = <expression>[,]*]|CONTENT {<JSON>}[RETRY <retry> [WAIT <pauseBetweenRetriesInMs]] [BATCH <batch-size>]

说明:

  • <class>:定义的边类,继承制E的类。
  • <cluster>:指定边存储的cluster
  • UPSERT:覆盖更新,2个顶点已经建立了关系则跳过。边建了唯一索引,如果重复添加相同索引会报错。
  • JSON:边记录内容。
  • RETRY:遇到冲突,重试次数。
  • WAIT:再次重试间隔时间,单位毫秒。
  • BATCH:每批次处理数据量,默认100。避免顶点过多,内存爆掉的情况。

通过顶点RID构建关系

CREATE EDGE BuyOf FROM #42:0 TO #54:0 SET buyDate = '2018-09-12'

通过查询找到点然后构建关系

CREATE EDGE BuyOf
FROM (SELECT FROM Customer WHERE name = '李敏')
TO   (SELECT FROM Food WHERE name = '可乐')
SET buyDate = '2018-08-13'

组网完成后的图如下:

2.2 删除边

语法:

DELETE EDGE ( <rid>|[<rid> (, <rid>)*]|( [ FROM (<rid> | <select_statement> ) ] [ TO ( <rid> | <select_statement> ) ] )|[<class>] ([WHERE <conditions>][LIMIT <MaxRecords>] [BATCH <batch-size>]

说明:

  • FROM:需要删除边的起始顶点。
  • TO:需要删除边的结束顶点。
  • WHERE:过滤条件
  • LIMIT:删除的边的最大数量。
  • BATCH:每一小批次处理数据量,默认100.

根据RID删除

DELETE EDGE #65:0

通过RID批量删除

DELETE EDGE [#22:38482,#23:232,#33:2332]

通过过滤条件删除2点间的边

DELETE EDGE FROM #11:101 TO #11:117 WHERE date >= "2012-01-15"

2.3 修改边

语法:

UPDATE EDGE <edge> [SET|INCREMENT|ADD|REMOVE|PUT <field-name> = <field-value>[,]*]|[CONTENT|MERGE <JSON>][RETURN <returning> [<returning-expression>]][WHERE <conditions>][LOCK default|record][LIMIT <max-records>] [TIMEOUT <timeout>]

说明:

  • <edge>:需要修改的边,可以是下面几种类型。

    • Class:根据class更新
    • Cluster:根据cluster更新,使用CLUSTER前缀。
    • Record ID:根据记录ID更新
  • SET:需要更新的属性值。
  • REMOVE:从属性集合中移除的元素。
  • RETURN:更新处理完成后返回的内容,有下面几种选择。
    • COUNT:影响的记录数
    • BEFORE:返回修改前的值
    • AFTER:返回修改后的值
    • DEFAULT:不锁,同步更新。事物冲突的时候会抛出异常。
  • WHERE:过滤条件
  • LOCK:数据加载和更新时使用的锁类型,有下面2中类型。
    • DEFAULT:不锁,同步更新。事物冲突的时候会抛出异常。
    • RECORD:更新的时候锁定记录。
  • LIMIT:更新的最大记录数。

修改边#59:0的出端顶点为#36:0

UPDATE EDGE #59:0 SET out= #36:0

修改边属性

UPDATE EDGE #59:0 SET buyDate= '2012-03-11'

3、 图查询

找到销售员王五2018-08-08这天服务的客户都买了哪些商品。

MATCH {class:Employee,as:employee,where:(name="王五")}.
outE("ServiceOf"){as:se,where:(serviceDate='2018-08-08')}.
inV(){as:cust}.
out("BuyOf"){as:product}
return product

Orientdb基本操作相关推荐

  1. OrientDB 图状数据库示例

    OrientDB 图计算框架 OrientDB Doc传送门 图计算框架学习示例 概念 图(Graph)G=(V,E) V是非空集合的顶点集,E是V中顶点构成的无序二元组的边集合. G的边集合数范围: ...

  2. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  3. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  4. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  5. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  6. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  7. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

  8. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  9. OpenCV-Java版学习(3.对视频的基本操作)

    前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...

最新文章

  1. 张祥雨团队最新工作:用于物体检测的实例条件知识蒸馏 | NeurIPS 2021
  2. .NET重构—单元测试重构
  3. C++ url中文编码处理 编码转为UTF8 CChineseCode下载
  4. delphi指针简单入门
  5. 计算机目标导学方法,计算机教学计划
  6. 精通ASP.NET MVC ——模型验证
  7. 用@resource注解方式完成属性装配
  8. Python学生信息管理系统的开发
  9. linux安装jdk和tomcat7.0
  10. java.util.concurrent.atomic.AtomicBoolean 源码
  11. socket.h中定义的函数
  12. Voleon Group:一家『纯』用机器学习策略的对冲基金
  13. 利用反射给属性赋值,调用方法,调用构造器--getDeclaredField,getDeclaredMethod,getDeclardConstructor
  14. 使用Sqlloader处理数据
  15. ubuntu安装transmission下载BT
  16. 在Vue中使用Echarts绘制带图标的矩形树图
  17. 批量压缩图片大小 – Caesium简体中文
  18. 磁力搜索网站+下载神器放送2019-03-05
  19. HDLBits练习汇总-14-时序逻辑设计测试--状态机(二)
  20. 什么是AES对称加密算法

热门文章

  1. [C#错误]未找到类型或命名空间名称 (是否缺少 using 指令或程序集引用?)
  2. 如何删除微软拼音输入法2007
  3. SPSS中,进行配对样本T检验
  4. 小海燕少年合唱团 我和我的祖国 伴奏 原版立体声伴奏
  5. 1.5万字深度雄文:这才是实际工作中的竞品分析
  6. 为邮件创建完美的HTML正文
  7. Python模拟登录,matplotlib模块,Python模拟太阳-地球-月亮运动模型
  8. 一份PHP面试题,真难~
  9. 日语语法(六):连体词
  10. 无线图传发射模块静电浪涌测试