- DocumentDB SQL 教程
- DocumentDB SQL - 主頁
- DocumentDB SQL - 概述
- DocumentDB SQL - Select 子句
- DocumentDB SQL - From 子句
- DocumentDB SQL - Where 子句
- DocumentDB SQL - 運算子
- DocumentDB - Between 關鍵字
- DocumentDB SQL - In 關鍵字
- DocumentDB SQL - Value 關鍵字
- DocumentDB SQL - Order By 子句
- DocumentDB SQL - 迭代
- DocumentDB SQL - 連線
- DocumentDB SQL - 別名
- DocumentDB SQL - 陣列建立
- DocumentDB - 標量表達式
- DocumentDB SQL - 引數化
- DocumentDB SQL - 內建函式
- Linq to SQL 轉換
- JavaScript 整合
- 使用者定義函式
- 複合 SQL 查詢
- DocumentDB SQL 有用資源
- DocumentDB SQL - 快速指南
- DocumentDB SQL - 有用資源
- DocumentDB SQL - 討論
DocumentDB SQL - 概述
DocumentDB 是微軟最新的 NoSQL 文件資料庫平臺,執行在 Azure 上。在本教程中,我們將學習有關使用 DocumentDB 支援的 SQL 特殊版本查詢文件的所有內容。
NoSQL 文件資料庫
DocumentDB 是微軟最新的 NoSQL 文件資料庫,但是,當我們說 NoSQL 文件資料庫時,我們究竟指的是什麼?NoSQL 和文件資料庫分別是什麼?
SQL 代表結構化查詢語言,它是關係資料庫的傳統查詢語言。SQL 通常與關係資料庫等同。
將 NoSQL 資料庫視為非關係資料庫實際上更有幫助,因此 NoSQL 實際上意味著非關係型。
NoSQL 資料庫有不同型別,包括如下鍵值儲存:
- Azure 表儲存
- 基於列的儲存,如 Cassandra
- 圖資料庫,如 NEO4
- 文件資料庫,如 MongoDB 和 Azure DocumentDB
為什麼使用 SQL 語法?
這起初聽起來可能很奇怪,但在 DocumentDB(一個 NoSQL 資料庫)中,我們使用 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 邏輯
等式和範圍比較
字串連線
查詢語言還支援大量內建函式。