ArangoDB之SQL/AQL-比较

翻译:https://arangodb.com/why-arangodb/sql-aql-comparison/


SQL/AQL-比较

ArangoDB查询语言(AQL)与结构化查询语言(SQL)的目的类似。两者都支持读取和修改收集数据,但是AQL不支持数据定义操作,比如创建和删除数据库、集合和索引。

尽管一些关键字重叠,但AQL语法与SQL不同。例如,SQL WHERE和AQL FILTER子句是等价的,它们都定义了返回结果的条件。但是,SQL使用预定义的序列来确定WHERE子句必须在语句中出现的位置。在AQL中,子句从左到右执行,因此查询中的FILTER子句的位置决定了它的优先级。

术语
下面是两个系统的术语表。
SQLAQL
databasedatabase
tablecollection
rowdocument
columnattribute
table joinscollection joins
primary keyprimary key (automatically present on _key attribute)
indexindex


INSERT

INSERT关键字将新文档添加到一个集合中。它使用以下语法:
INSERT document INTO collection options

插入单行/单文件

SQL:

AQL:




            插入单行/单文件    

SQL:

AQL:






        从表或集合中数据迁移

SQL:

AQL:






  循环导入

SQL:

使用脚本或者存储过程实现

AQL:








UPDATE

2
UPDATE document IN collection options
UPDATE keyExpression WITH document IN collection options

更新单行/文件

SQL:

AQL:

 







添加新字段/属性(默认值)

SQL:

AQL:


2
UPDATE document IN collection options
UPDATE keyExpression WITH document IN collection options






添加新字段/属性(计算值)

SQL:

AQL:













删除字段/属性

SQL:

AQL:








删除具体行的字段/属性

SQL: *

AQL:










REPLACE

1
2
REPLACE document IN collection options
REPLACE keyExpression WITH document IN collection options


替换某行/文件

SQL:

AQL:









替换多行/文件

SQL:

AQL:









DELETE/REMOVE


SQL使用DELETE语句来从表中删除行。在AQL中,REMOVE关键字允许您从集合中删除文档.

删除单行/文件

SQL:

AQL:







删除多行/文件

SQL:

AQL:






QUERY

当您想从SQL中的表中检索行时,您可以使用SELECT语句查询数据库。在AQL中,使用FOR和RETURN关键字查询来自集合的文档。

这里,FOR在集合中对文档进行迭代。RETURN确定查询返回给客户端。

查询所有

SQL:

AQL:







过滤查询

SQL:

AQL:









排序查询

SQL:

AQL:








AGGREGATION

在SQL和AQL中都有一系列函数和子句用于组或进一步细化结果集以获取所需的信息。例如,计算文档,查找最小值或最大值,等等。

分组统计

SQL:

AQL:










分组

SQL:

AQL:












最大/最小计算

SQL:

AQL:









分组汇集

SQL: *

AQL:











JOINS

与关系数据库中的连接类似,ArangoDB也有自己的连接实现

内连接(inner join)

SQL:

AQL:
可以通过嵌套FOR循环和使用filter语句:在AQL中轻松地表达内部连接。

:
在AQL中,首选方法是从各个子属性的不同集合中返回文档部分,以避免属性名称冲突,例如: 

还可以将匹配文档返回到水平列表中:


















外连接(outer join)

SQL:

AQL:
在AQL中没有直接支持外部连接,但是可以使用子查询实现:



  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值