环境准备

使用docker-compose 运行

  • docker-compose 文件
version: "3"
services:
db:
image: edgedb/edgedb
ports:
- "5656:5656"
- "8888:8888"

基本数据库schema 操作

  • 修改密码

    进入容器

按照提下提示操作
edgedb --admin alter role edgedb --password
  • 创建数据库
CREATE DATABASE tutorial; 
  • 连接创建的数据库
\c tutorial
  • 创建sdl

    数据库schema 定义语言

START TRANSACTION;

CREATE MIGRATION movies TO {
type Movie {
required property title -> str;
# the year of release
property year -> int64;
required link director -> Person;
multi link cast -> Person;
}
type Person {
required property first_name -> str;
required property last_name -> str;
}
}; COMMIT MIGRATION movies; COMMIT;

效果

START TRANSACTION;
START TRANSACTION
edgedb> CREATE MIGRATION movies TO {
....... type Movie {
....... required property title -> str;
....... # the year of release
....... property year -> int64;
....... required link director -> Person;
....... multi link cast -> Person;
....... }
....... type Person {
....... required property first_name -> str;
....... required property last_name -> str;
....... }
....... };
CREATE MIGRATION
edgedb> COMMIT MIGRATION movies;
.......
COMMIT MIGRATION
edgedb> COMMIT;
COMMIT TRANSACTION
  • ddl

    可选的sdl 方式

CREATE TYPE Person {
CREATE REQUIRED PROPERTY first_name -> str;
CREATE REQUIRED PROPERTY last_name -> str;
};
CREATE TYPE Movie {
CREATE REQUIRED PROPERTY title -> str;
# the year of release
CREATE PROPERTY year -> int64;
CREATE REQUIRED LINK director -> Person;
CREATE MULTI LINK cast -> Person;
};

EdgeQL查询语言

  • 插入数据
INSERT Movie {
title := 'Blade Runner 2049',
year := 2017,
director := (
INSERT Person {
first_name := 'Denis',
last_name := 'Villeneuve',
}
),
cast := {
(INSERT Person {
first_name := 'Harrison',
last_name := 'Ford',
}),
(INSERT Person {
first_name := 'Ryan',
last_name := 'Gosling',
}),
(INSERT Person {
first_name := 'Ana',
last_name := 'de Armas',
}),
}
};

效果

{Object { id: <uuid>'66807bcc-5e05-11e9-a37c-2fb9bd2b9a50' }}
  • insert select 操作
INSERT Movie {
title := 'Dune',
director := (
SELECT Person
FILTER
# the last name is sufficient
# to identify the right person
.last_name = 'Villeneuve'
)
};
  • select 操作
select Movie;

效果

select Movie;
.......
{
Object { id: <uuid>'66807bcc-5e05-11e9-a37c-2fb9bd2b9a50' },
Object { id: <uuid>'ae442d8c-5e05-11e9-a37c-cfe0a3967be9' }
}
  • 查询指定字段数据
SELECT Movie {
title,
year
};

效果

SELECT Movie {
....... title,
....... year
....... };
{Object { title: 'Blade Runner 2049', year: 2017 }, Object { title: 'Dune', year: {} }}
  • filter 操作
SELECT Movie {
title,
year
}
FILTER .title ILIKE 'blade runner%';

效果

SELECT Movie {
....... title,
....... year
....... }
....... FILTER .title ILIKE 'blade runner%';
{Object { title: 'Blade Runner 2049', year: 2017 }}
  • 数据类型修改
ALTER TYPE Person {
ALTER PROPERTY first_name {
DROP REQUIRED;
}
};

graphql 查询

  • 启动graphql

    注意需要在数据库中操作,先连接数据库 \c tutorial

CONFIGURE SYSTEM INSERT Port {
protocol := "graphql+http",
database := "tutorial",
address := "0.0.0.0",
port := 8888,
user := "http",
concurrency := 4,
};

效果

tutorial> CONFIGURE SYSTEM INSERT Port {
......... protocol := "graphql+http",
......... database := "tutorial",
......... address := "0.0.0.0",
......... port := 8888,
......... user := "http",
......... concurrency := 4,
......... };
CONFIGURE SYSTEM
  • 访问地址
http://localhost:8888/explore
  • 操作

  • graphql 查询
query {
Movie {
director {
id
last_name
first_name
}
id
cast {
id
last_name
first_name
}
title
year
}
}

说明

edgedb schema 定义的地方以及查询上有好多地方和graphql 规范很相近,同时保留了sql 强大的能力,还是很不错的,但是目前的 
client sdk 还是有点少

参考资料

https://edgedb.com/docs/intro 
https://hub.docker.com/r/edgedb/edgedb 
https://github.com/edgedb/edgedb

edgedb 基本试用的更多相关文章

  1. SharePoint Online 申请试用链接地址

    SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...

  2. 活动助手Beta用户试用报告

    用户试用报告 1.面向参与者用户 1.1 日常参加各类学习(水综测)活动中,有没有遇到以下问题: (1) 信息来源混乱,不知道靠不靠谱 (2) 每次报名都要重新填写自己的学号手机号,有时候填错了就没综 ...

  3. 创建WP8试用应用

    参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...

  4. 达梦7的试用 与SQLSERVER的简单技术对比

    达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com ...

  5. Beta版本——用户试用与调研报告

    1 引言 1.1 系统概述 ​ 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...

  6. 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

    [背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...

  7. 代码阅读分析工具Understand 2.0试用

    Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...

  8. 如何申请国际版Office365和Azure的试用账号

    关键字:国际版.Office365.Azure.试用账号.1美元.信用卡 待续

  9. Android N preview 试用

    一.下载更新包 下载地址:https://developer.android.com/intl/zh-cn/preview/download.html 注意下载适合你手机的安装包哦 二.把你手机的oe ...

随机推荐

  1. C/C++中的预编译指令(转)

    reference:https://blog.csdn.net/sunshinewave/article/details/51020421 程序的编译过程可以分为预处理.编译.汇编三部分,其中预处理是 ...

  2. 记一次msyql导入导致的问题

    公司有个项目要导入150M大小的sql文件,但是导入时报错,去网上找答案,很多人说是因为保留字什么什么的,所以就按照sql文件里面的mysql版本又去下载了一份mysql5.6安装好,但是登陆不了,又 ...

  3. windows2012的服务器远程桌面提示内部错误的问题解决方法

    一.问题表象 我们在OpenStack安装了windows server2012r2版本的虚拟机,在本地通过远程桌面连接时,输入账号密码后,提示连接断开或者内部错误的问题 二.解决办法 1)windo ...

  4. NPOI处理Word文本中上下角标

    读取Word文档,并将文本转成html标签,后面发现,经常有带上下角标的内容,于是一并处理了. 核心在于对XWPFRun对象中Subscript属性的处理. /// <summary> / ...

  5. mongo中的游标与数据一致性的取舍

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

  6. golang中的mutex锁

    mutex锁中一种互斥锁,如果有多个goroutine需要对同一变量进行修改则需要对该变量施加mutex锁以实现安全读写.

  7. WEB 设计规范

    WEB端设计规范 一.网页尺寸       一般网站宽为996px:国内网站大部分还是以1000个像素为界限,因超过1000像素适合在大屏幕上浏览,小屏幕会显得拥挤.国内尺寸设置比较保守,这样可以保证 ...

  8. QT自定义控件系列(二) --- Loading加载动画控件

    本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于 ...

  9. 深度学习(PYTORCH)-2.python调用dlib提取人脸68个特征点

    在看官方教程时,无意中发现别人写的一个脚本,非常简洁. 官方教程地址:http://pytorch.org/tutorials/beginner/data_loading_tutorial.html# ...

  10. 使用LSTM-RNN建立股票预测模型

    硕士毕业之前曾经对基于LSTM循环神经网络的股价预测方法进行过小小的研究,趁着最近工作不忙,把其中的一部分内容写下来做以记录. 此次股票价格预测模型仅根据股票的历史数据来建立,不考虑消息面对个股的影响 ...