📜  DocumentDB SQL-概述

📅  最后修改于: 2020-11-28 13:32:06             🧑  作者: Mango


DocumentDB是Microsoft最新的NoSQL文档数据库平台,可在Azure上运行。在本教程中,我们将学习所有有关使用DocumentDB支持的特殊版本的SQL查询文档的信息。

NoSQL文档数据库

DocumentDB是Microsoft最新的NoSQL文档数据库,但是,当我们说NoSQL文档数据库时,NoSQL和文档数据库到底是什么意思?

  • SQL表示结构化查询语言,它是关系数据库的传统查询语言。 SQL通常等同于关系数据库。

  • 将NoSQL数据库视为非关系数据库确实更有帮助,因此NoSQL确实意味着非关系数据库。

NoSQL数据库有不同类型,其中包括键值存储,例如-

  • Azure表存储
  • 基于列的商店,例如Cassandra
  • 图形数据库,例如NEO4
  • 文档数据库,例如MongoDB和Azure DocumentDB

为什么要使用SQL语法?

起初听起来有些奇怪,但是在作为NoSQL数据库的DocumentDB中,我们使用SQL查询。如上所述,这是一个基于JSON和JavaScript语义的SQL的特殊版本。

  • SQL只是一种语言,但它也是一种非常流行的语言,具有丰富的表现力。因此,使用SQL的方言绝对是个好主意,而不是想出一种表达查询的全新方法,如果您想从数据库中获取文档,我们将需要学习该方法。

  • SQL是为关系数据库设计的,而DocumentDB是非关系文档数据库。 DocumentDB团队实际上已将SQL语法适应了文档数据库的非关系世界,这就是将SQL植根于JSON和JavaScript的意思。

  • 该语言仍然读作熟悉的SQL,但是语义都基于无模式的JSON文档而不是关系表。在DocumentDB中,我们将使用JavaScript数据类型而不是SQL数据类型。我们将熟悉SELECT,FROM,WHERE等,但是使用JavaScript类型(限于数字和字符串),对象,数组,布尔值和null远远少于广泛的SQL数据类型。

  • 同样,表达式被视为JavaScript表达式,而不是某种形式的T-SQL。例如,在一个非规范化数据的世界中,我们不处理行和列,而是处理具有分层结构的无模式文档,这些层次结构包含嵌套的数组和对象。

SQL如何工作?

DocumentDB团队以几种创新方式回答了这个问题。其中很少列出如下-

  • 首先,假设您没有更改默认行为以自动索引文档中的每个属性,则可以在查询中使用点分符号来导航到任何属性的路径,无论该属性在文档中嵌套的深度如何。

  • 您还可以执行文档内连接,其中嵌套数组元素与其在文档内的父元素相连接的方式与在关系世界中两个表之间执行连接的方式非常相似。

  • 您的查询可以直接从数据库返回文档,也可以根据所需的任意文档数据来投影所需的任何自定义JSON形状。

  • DocumentDB中的SQL支持许多常见的运算符,包括-

    • 算术和按位运算

    • AND和OR逻辑

    • 相等和范围比较

    • 字符串串联

  • 查询语言还支持许多内置函数。