iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL和nGQL区别有哪些
  • 810
分享到

SQL和nGQL区别有哪些

2024-04-02 19:04:59 810人浏览 独家记忆
摘要

这篇文章主要讲解了“sql和nGQL区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL和nGQL区别有哪些”吧!SQL (Structured

这篇文章主要讲解了“sql和nGQL区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL和nGQL区别有哪些”吧!

SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言是一种 特定目的编程语言,用于管理 关系数据库管理系统(RDBMS),或在 关系流数据管理系统(RDSMS)中进行流处理。

nGQL 是一种类 SQL 的声明型的文本查询语言,相比于 SQL, nGQL 为可扩展、支持图遍历、模式匹配、分布式事务开发中)的图数据库查询语言。

概念对比

对比项SQLnGQL
\
\
点类型\tag
边类型\edge type
点 ID主键vid
边 ID复合主键起点、终点、rank
点或边的属性
点或边

语法对比

数据定义语言 (DDL)

数据定义语言(DDL)用于创建或修改数据库的结构,也就是 schema。

SQL和nGQL区别有哪些

索引
对比项SQLnGQL
创建索引CREATE INDEXCREATE {TAG | EDGE} INDEX
删除索引DROP INDEXDROP {TAG | EDGE} INDEX
列出索引SHOW INDEX FROMSHOW {TAG | EDGE} INDEXES
重构索引ANALYZE TABLEREBUILD {TAG | EDGE} INDEX <index_name> [OFFLINE]

数据操作语言(DML)

数据操作语言(DML)用于操作数据库中的数据。

SQL和nGQL区别有哪些

数据查询语言(DQL)

数据查询语言(DQL)语句用于执行数据查询。本节说明如何使用 SQL 语句和 nGQL 语句查询数据。

SELECT
 [DISTINCT]
 select_expr [, select_expr] ...
 [FROM table_references]
 [WHERE where_condition]
 [GROUP BY {col_name | expr | position}]
 [HAVING  where_condition]
 [ORDER BY {col_name | expr | position} [ASC | DESC]]
Go [[<M> TO] <N> STEPS ] FROM <node_list>
 OVER <edge_type_list> [REVERSELY] [BIDIRECT]
 [WHERE where_condition]
 [YIELD [DISTINCT] <return_list>]
 [| ORDER BY <expression> [ASC | DESC]]
 [| LIMIT [<offset_value>,] <number_rows>]
 [| GROUP BY {col_name | expr | position} YIELD <col_name>]
<node_list>
   | <vid> [, <vid> ...]
   | $-.id
<edge_type_list>
   edge_type [, edge_type ...]
<return_list>
    <col_name> [AS <col_alias>] [, <col_name> [AS <col_alias>] ...]

数据控制语言(DCL)

数据控制语言(DCL)包含诸如 GRANTREVOKE 之类的命令,这些命令主要用来处理数据库系统的权限、其他控件。

对比项SQLnGQL
创建用户CREATE USERCREATE USER
删除用户DROP USERDROP USER
更改密码SET PASSWordCHANGE PASSWORD
授予权限GRANT <priv_type> ON [object_type] TO <user>GRANT ROLE <role_type> ON <space> TO <user>
删除权限REVOKE <priv_type> ON [object_type] TO <user>REVOKE ROLE <role_type> ON <space> FROM <user>

数据模型

查询语句基于以下数据模型:

RDBMS 关系结构图

SQL和nGQL区别有哪些

Nebula Graph 最小模型图

SQL和nGQL区别有哪些

本文将使用 NBA 数据集。该数据集包含两种类型的点,也就是两个标签,即 playerteam ;两种类型的边,分别是 servefollow

在关系型数据管理系统中(RDBMS)中,我们用表来表示点以及与点相关的边(连接表)。因此,我们创建了以下表格:playerteamservefollow。在 Nebula Graph 中,基本数据单位是顶点和边。两者都可以拥有属性,相当于 RDBMS 中的属性。

Nebula Graph 中,点之间的关系由边表示。每条边都有一种类型,在 NBA 数据集中,我们使用边类型 servefollow 来区分两种类型的边。

示例数据

在 RDBMS 插入数据

首先,让我们看看如何在 RDBMS 中插入数据。我们先创建一些表,然后为这些表插入数据。

CREATE TABLE player (id INT, name VARCHAR(100), age INT);
CREATE TABLE team (id INT, name VARCHAR(100));
CREATE TABLE serve (player_id INT, team_id INT, start_year INT, end_year INT);
CREATE TABLE follow (player_id1 INT, player_id2 INT, degree INT);

然后插入数据。

INSERT INTO player
VALUES
   (100, 'Tim Duncan', 42),
   (101, 'Tony Parker', 36),
   (102, 'LaMarcus Aldridge', 33),
   (103, 'Rudy Gay',32),
   (104, 'Marco Belinelli', 32),
   (105, 'Danny Green', 31),
   (106, 'Kyle Anderson', 25),
   (107, 'Aron Baynes', 32),
   (108, 'Boris Diaw', 36),
   (109, 'Tiago Splitter', 34),
   (110, 'Cory Joseph', 27);
INSERT INTO team
VALUES
   (200, 'Warriors'),
   (201, 'Nuggets'),
   (202, 'Rockets'),
   (203, 'Trail'),
   (204, 'Spurs'),
   (205, 'Thunders'),
   (206, 'Jazz'),
   (207, 'Clippers'),
   (208, 'Kings');
INSERT INTO serve
VALUES
   (100,200,1997,2016),
   (101,200,1999,2010),
   (102,200,2001,2005),
   (106,200,2000,2011),
   (107,200,2001,2009),
   (103,201,1999,2018),
   (104,201,2006,2015),
   (107,201,2007,2010),
   (108,201,2010,2016),
   (109,201,2011,2015),
   (105,202,2015,2019),
   (109,202,2017,2019),
   (110,202,2007,2009);
INSERT INTO follow
VALUES
   (100,101,95),
   (100,102,91),
   (100,106,90),
   (101,100,95),
   (101,102,91),
   (102,101,75),
   (103,102,70),
   (104,103,50),
   (104,105,60),
   (105,104,83),
   (105,110,87),
   (106,100,88),
   (106,107,81),
   (107,106,92),
   (107,108,97),
   (108,109,95),
   (109,110,78),
   (110,109,72),
   (110,105,85);

在 Nebula Graph 插入数据

Nebula Graph 中插入数据与上述类似。首先,我们需要定义好数据结构,也就是创建好 schema。然后可以选择手动或使用 Nebula Graph Studio (Nebula Graph 的可视化工具)导入数据。这里我们手动添加数据。

在下方的 INSERT 插入语句中,我们向图空间 NBA 插入了球员数据(这和在 Mysql 中插入数据类似)。

INSERT VERTEX player(name, age) VALUES
100: ('Tim Duncan', 42),
101: ('Tony Parker', 36),
102: ('LaMarcus Aldridge', 33),
103: ('Rudy Gay', 32),
104: ('Marco Belinelli', 32),
105: ('Danny Green', 31),
106: ('Kyle Anderson', 25),
107: ('Aron Baynes', 32),
108: ('Boris Diaw', 36),
109: ('Tiago Splitter', 34),
110: ('Cory Joseph', 27);

考虑到篇幅限制,此处我们将跳过插入球队和边的重复步骤。你可以点击 此处下载示例数据亲自尝试。

SQL和nGQL区别有哪些

增删改查(CRUD)

本节介绍如何使用 SQL 和 nGQL 语句创建(C)、读取(R)、更新(U)和删除(D)数据。

插入数据

mysql> INSERT INTO player VALUES (100, 'Tim Duncan', 42);
nebula> INSERT VERTEX player(name, age) VALUES 100: ('Tim Duncan', 42);

查询数据

查找 ID 为 100 的球员并返回其 name 属性:

mysql> SELECT player.name FROM player WHERE player.id = 100;
nebula> FETCH PROP ON player 100 YIELD player.name;

更新数据

mysql> UPDATE player SET name = 'Tim';
nebula> UPDATE VERTEX 100 SET player.name = "Tim";

删除数据

mysql> DELETE FROM player WHERE name = 'Tim';
nebula> DELETE VERTEX 121;
nebula> DELETE EDGE follow 100 -> 200;

建立索引

返回年龄超过 36 岁的球员。

SELECT player.name
FROM player
WHERE player.age < 36;

使用 nGQL 查询有些不同,因为您必须在过滤属性之前创建索引。更多信息请参见 索引文档。

CREATE TAG INDEX player_age ON player(age);
REBUILD TAG INDEX player_age OFFLINE;
LOOKUP ON player WHERE player.age < 36;

示例查询

本节提供一些示例查询供您参考。

示例 1

在表 player 中查询 ID 为 100 的球员并返回其 name 属性。

SELECT player.name
FROM player
WHERE player.id = 100;

接下来使用 Nebula Graph 查找 ID 为 100 的球员并返回其 name 属性。

FETCH PROP ON player 100 YIELD player.name;

Nebula Graph 使用 FETCH 关键字获取特定点或边的属性。本例中,属性即为点 100 的名称。nGQL 中的 YIELD 关键字相当于 SQL 中的 SELECT

示例 2

查找球员 Tim Duncan 并返回他效力的所有球队。

SELECT a.id, a.name, c.name
FROM player a
JOIN serve b ON a.id=b.player_id
JOIN team c ON c.id=b.team_id
WHERE a.name = 'Tim Duncan'

使用如下 nGQL 语句完成相同操作:

CREATE TAG INDEX player_name ON player(name);
REBUILD TAG INDEX player_name OFFLINE;
LOOKUP ON player WHERE player.name == 'Tim Duncan' YIELD player.name AS name | GO FROM $-.VertexID OVER serve YIELD $-.name, $$.team.name;

这里需要注意一下,在 nGQL 中的等于操作采用的是 C 语言风格的 ==,而不是SQL风格的 =

示例 3

以下查询略复杂,现在我们来查询球员 Tim Duncan 的队友。

SELECT a.id, a.name, c.name
FROM player a
JOIN serve b ON a.id=b.player_id
JOIN team c ON c.id=b.team_id
WHERE c.name IN (SELECT c.name
FROM player a
JOIN serve b ON a.id=b.player_id
JOIN team c ON c.id=b.team_id
WHERE a.name = 'Tim Duncan')

nGQL 则使用管道将前一个子句的结果作为下一个子句的输入。

GO FROM 100 OVER serve YIELD serve._dst AS Team | GO FROM $-.Team OVER serve REVERSELY YIELD $$.player.name;

感谢各位的阅读,以上就是“SQL和nGQL区别有哪些”的内容了,经过本文的学习后,相信大家对SQL和nGQL区别有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: SQL和nGQL区别有哪些

本文链接: https://www.lsjlt.com/news/65721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL和nGQL区别有哪些
    这篇文章主要讲解了“SQL和nGQL区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL和nGQL区别有哪些”吧!SQL (Structured ...
    99+
    2024-04-02
  • hql和sql有哪些区别
    小编给大家分享一下hql和sql有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据库中hql与sql的区别:1、sql...
    99+
    2024-04-02
  • SQL Server developer和enterprise有哪些区别
    本篇内容介绍了“SQL Server developer和enterprise有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2024-04-02
  • SQL和NoSQL之间有哪些区别
    小编给大家分享一下SQL和NoSQL之间有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 在选择数据库时,最大...
    99+
    2024-04-02
  • Access和SQL Server的SQL语句有哪些区别
    这篇文章主要讲解了“Access和SQL Server的SQL语句有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Access和SQL Server...
    99+
    2024-04-02
  • SQL和NoSQL之间的区别有哪些
    本篇文章为大家展示了SQL和NoSQL之间的区别有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主要差异:1.类型SQL数据库主要称为关系数据库(RDBMS);...
    99+
    2024-04-02
  • R语言和SQL的区别有哪些
    R语言和SQL是用于数据分析和处理的两种不同的编程语言。1. 基本用途:R语言主要用于统计分析和数据可视化,而SQL主要用于数据库管...
    99+
    2023-09-28
    R语言 SQL
  • sql主键和外键有哪些区别
    这篇文章主要介绍了sql主键和外键有哪些区别,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。sql主键和外键的区别:主键只有一个,不能重复也不允许...
    99+
    2024-04-02
  • sql中#与$有哪些区别
    这篇文章给大家分享的是有关sql中#与$有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在这里用到了#{},使用#时:1、用来传入参数,sq...
    99+
    2024-04-02
  • sql和oracle的语法上有哪些区别
    小编给大家分享一下sql和oracle的语法上有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!sql和oracle的语法...
    99+
    2024-04-02
  • mysql与pl/sql有哪些区别
    这篇文章主要介绍“mysql与pl/sql有哪些区别”,在日常操作中,相信很多人在mysql与pl/sql有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql与...
    99+
    2024-04-02
  • SQL Server与MySQL有哪些区别
    SQL Server与MySQL有哪些区别?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! SQL Server与...
    99+
    2024-04-02
  • mysql与sql的区别有哪些
    这篇文章给大家分享的是有关mysql与sql的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql与sql的区别是:1、SQL是一种用...
    99+
    2024-04-02
  • 静态和动态sql之间有哪些区别
    小编给大家分享一下静态和动态sql之间有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!静态或嵌入式 SQL是应用程序中的...
    99+
    2024-04-02
  • SQL命令delete和truncate之间有哪些区别
    这篇文章主要介绍SQL命令delete和truncate之间有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在SQL中delete和truncate命令...
    99+
    2024-04-02
  • sql server各版本有哪些区别
    小编给大家分享一下sql server各版本有哪些区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! SQL SERVER2000版本侧重日志传送,索引视图;2005版本侧重分区,数...
    99+
    2024-04-02
  • PostgreSQL与Oracle的sql区别有哪些
    本篇内容介绍了“PostgreSQL与Oracle的sql区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • mysql与sql server的区别有哪些
    mysql与sql server的区别有:1.本质不同;2.开发成本不同;3.mysql性能比sql server好;4.两者的拥有的安全机制不同;5.sql server的数据恢复性比mysql强。mysql与sql server的区别主...
    99+
    2024-04-02
  • sql的左连接和右连接有哪些区别
    这篇文章主要介绍sql的左连接和右连接有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql的左连接和右连接区别:1、左连接只要左边表中有记录,数据就能检索出来,而右连接是只...
    99+
    2024-04-02
  • Ajax和JavaScript有哪些区别
    本篇内容介绍了“Ajax和JavaScript有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!javascript是一种在浏览器端执...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作