edgedb 基本试用
环境准备
使用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 基本试用的更多相关文章
- SharePoint Online 申请试用链接地址
SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...
- 活动助手Beta用户试用报告
用户试用报告 1.面向参与者用户 1.1 日常参加各类学习(水综测)活动中,有没有遇到以下问题: (1) 信息来源混乱,不知道靠不靠谱 (2) 每次报名都要重新填写自己的学号手机号,有时候填错了就没综 ...
- 创建WP8试用应用
参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...
- 达梦7的试用 与SQLSERVER的简单技术对比
达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com ...
- Beta版本——用户试用与调研报告
1 引言 1.1 系统概述 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...
- 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...
- 代码阅读分析工具Understand 2.0试用
Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...
- 如何申请国际版Office365和Azure的试用账号
关键字:国际版.Office365.Azure.试用账号.1美元.信用卡 待续
- Android N preview 试用
一.下载更新包 下载地址:https://developer.android.com/intl/zh-cn/preview/download.html 注意下载适合你手机的安装包哦 二.把你手机的oe ...
随机推荐
- 消息队列kafka集群搭建
linux系统kafka集群搭建(3个节点192.168.204.128.192.168.204.129.192.168.204.130) 本篇文章kafka集群采用外部zookeeper,没采 ...
- (2018 Multi-University Training Contest 3)Problem D. Euler Function
//题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6322 //题目大意:给定 k,求第 k 小的数 n,满足 φ(n) 是合数.显然 φ(1) = 1 ...
- struts2自定义转换器
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...
- selenium的三种等待方式
selenium有三种等待方式 1.time.sleep() 设置等待最简单的方法就是强制等待,但一般不建议使用,可以在调试的时候进行使用 2.隐性等待 driver.implictily_wait( ...
- JavaScript的popup框
JavaScript中可以创建三种消息框:警告框.确认框.提示框. 1.警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法:alert(&q ...
- 运维yum语法
软件管理 目前流行的软件包格式: 可直接执行的RPM与DEB.源代码形式的gzip与bzip2压缩包 RPM软件包管理 rpm rpm [选项] *.rpm -i --install instal ...
- IDEA常用快捷键总结
Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论.每个人都有自己的最爱,想排出个理想的榜单还真是困难.以前也整理过Intellij的快捷键,这次就按 ...
- WEB学习笔记12-高可读性的HTML之如何正确设计表单
网站中的用户登录.注册.用户调查等都是通过页面中的表单提交到网站服务器的.假设要实现让用户设置个人信息的一个表单. 该表格为两栏布局,第一栏中的文本左对齐,第二栏的表单控件右对齐,构成了最容易实现的表 ...
- Python学习第七课
Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...
- LDAP-HA安装与配置(Keepalived方式实现)
LDAP部署 安装LDAP(主节点) 安装LDAP Server yum install db4 db4-utils db4-devel cyrus-sasl* krb5-server-ldap -y ...