Aan de slag met SQL-query'sGetting started with SQL queries

Azure Cosmos DB SQL-API-accounts ondersteunen het opvragen van items met behulp van Structured Query Language (SQL) als een JSON-query taal.Azure Cosmos DB SQL API accounts support querying items using Structured Query Language (SQL) as a JSON query language. De ontwerp doelen van de Azure Cosmos DB query taal zijn:The design goals of the Azure Cosmos DB query language are to:

  • Ondersteuning voor SQL, een van de meest bekende en populaire query talen, in plaats van een nieuwe query taal.Support SQL, one of the most familiar and popular query languages, instead of inventing a new query language. SQL biedt een formeel programmeer model voor uitgebreide query's over JSON-items.SQL provides a formal programming model for rich queries over JSON items.

  • Gebruik het programmeer model java script als basis voor de query taal.Use JavaScript's programming model as the foundation for the query language. Java script-type systeem, expressie-evaluatie en functie aanroep zijn de hoofd mappen van de SQL-API.JavaScript's type system, expression evaluation, and function invocation are the roots of the SQL API. Deze roots bieden een natuurlijk programmeer model voor functies zoals relationele projecties, hiërarchische navigatie in JSON-items, Self-join's, ruimtelijke query's en het aanroepen van door de gebruiker gedefinieerde functies (Udf's), die volledig zijn geschreven in Java script.These roots provide a natural programming model for features like relational projections, hierarchical navigation across JSON items, self-joins, spatial queries, and invocation of user-defined functions (UDFs) written entirely in JavaScript.

Voorbeeld gegevens uploadenUpload sample data

Maak in uw SQL API-Cosmos DB account een container met Familiesde naam.In your SQL API Cosmos DB account, create a container called Families. Maak twee eenvoudige JSON-items in de container.Create two simple JSON items in the container. U kunt de meeste voorbeeld query's uitvoeren in de Azure Cosmos DB query-documenten met behulp van deze gegevensset.You can run most of the sample queries in the Azure Cosmos DB query docs using this data set.

JSON-items makenCreate JSON items

Met de volgende code worden twee eenvoudige JSON-onderdelen gemaakt over families.The following code creates two simple JSON items about families. De eenvoudige JSON-items voor de families Splinter en Wakefield bevatten ouders, kinderen en hun huis dieren, adres en registratie gegevens.The simple JSON items for the Andersen and Wakefield families include parents, children and their pets, address, and registration information. Het eerste item heeft teken reeksen, getallen, Booleaanse waarden, matrices en geneste eigenschappen.The first item has strings, numbers, Booleans, arrays, and nested properties.

{
  "id": "AndersenFamily",
  "lastName": "Andersen",
  "parents": [
     { "firstName": "Thomas" },
     { "firstName": "Mary Kay"}
  ],
  "children": [
     {
         "firstName": "Henriette Thaulow",
         "gender": "female",
         "grade": 5,
         "pets": [{ "givenName": "Fluffy" }]
     }
  ],
  "address": { "state": "WA", "county": "King", "city": "Seattle" },
  "creationDate": 1431620472,
  "isRegistered": true
}

Het tweede item maakt givenName gebruik familyName van en firstName in lastNameplaats van en.The second item uses givenName and familyName instead of firstName and lastName.

{
  "id": "WakefieldFamily",
  "parents": [
      { "familyName": "Wakefield", "givenName": "Robin" },
      { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
            { "givenName": "Goofy" },
            { "givenName": "Shadow" }
        ]
      },
      { 
        "familyName": "Miller",
         "givenName": "Lisa",
         "gender": "female",
         "grade": 8 }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

De JSON-items opvragenQuery the JSON items

Probeer enkele query's uit op de JSON-gegevens om inzicht te krijgen in de belangrijkste aspecten van de SQL-query taal van Azure Cosmos DB.Try a few queries against the JSON data to understand some of the key aspects of Azure Cosmos DB's SQL query language.

De volgende query retourneert de items waarbij het id veld overeenkomt AndersenFamily.The following query returns the items where the id field matches AndersenFamily. Omdat het een SELECT * query is, is de uitvoer van de query het volledige JSON-item.Since it's a SELECT * query, the output of the query is the complete JSON item. Zie instructie SELECTvoor meer informatie over de syntaxis SELECT.For more information about SELECT syntax, see SELECT statement.

    SELECT *
    FROM Families f
    WHERE f.id = "AndersenFamily"

De query resultaten zijn:The query results are:

    [{
        "id": "AndersenFamily",
        "lastName": "Andersen",
        "parents": [
           { "firstName": "Thomas" },
           { "firstName": "Mary Kay"}
        ],
        "children": [
           {
               "firstName": "Henriette Thaulow", "gender": "female", "grade": 5,
               "pets": [{ "givenName": "Fluffy" }]
           }
        ],
        "address": { "state": "WA", "county": "King", "city": "Seattle" },
        "creationDate": 1431620472,
        "isRegistered": true
    }]

Met de volgende query wordt de JSON-uitvoer in een andere vorm opgemaakt.The following query reformats the JSON output into a different shape. De query projecteert een nieuw Family JSON- Name object met twee geselecteerde velden Cityen, wanneer de adres plaats hetzelfde is als de status.The query projects a new JSON Family object with two selected fields, Name and City, when the address city is the same as the state. "NY, NY" komt overeen met dit geval."NY, NY" matches this case.

    SELECT {"Name":f.id, "City":f.address.city} AS Family
    FROM Families f
    WHERE f.address.city = f.address.state

De query resultaten zijn:The query results are:

    [{
        "Family": {
            "Name": "WakefieldFamily",
            "City": "NY"
        }
    }]

Met de volgende query worden alle opgegeven namen van onderliggende items geretourneerd in de id familie WakefieldFamilywaarvan de treffers zijn geordend op basis van de plaats.The following query returns all the given names of children in the family whose id matches WakefieldFamily, ordered by city.

    SELECT c.givenName
    FROM Families f
    JOIN c IN f.children
    WHERE f.id = 'WakefieldFamily'
    ORDER BY f.address.city ASC

U ziet deze uitvoer:The results are:

    [
      { "givenName": "Jesse" },
      { "givenName": "Lisa"}
    ]

OpmerkingenRemarks

In de voor gaande voor beelden worden verschillende aspecten van de Cosmos DB query taal weer gegeven:The preceding examples show several aspects of the Cosmos DB query language:

  • Aangezien de SQL-API werkt op JSON-waarden, worden er in plaats van rijen en kolommen getreede entiteiten behandeld.Since SQL API works on JSON values, it deals with tree-shaped entities instead of rows and columns. U kunt naar de structuur knooppunten op elke wille keurige diepte Node1.Node2.Node3…..Nodemverwijzen, net als bij de tweedelige <table>.<column> verwijzing van in ANSI SQL.You can refer to the tree nodes at any arbitrary depth, like Node1.Node2.Node3…..Nodem, similar to the two-part reference of <table>.<column> in ANSI SQL.

  • Omdat de query taal werkt met schemaloze gegevens, moet het type systeem dynamisch worden gebonden.Because the query language works with schemaless data, the type system must be bound dynamically. Een expressie kan verschillende typen voor verschillende elementen opleveren.The same expression could yield different types on different items. Het resultaat van een query is een geldige JSON-waarde, maar is niet gegarandeerd een vast schema.The result of a query is a valid JSON value, but isn't guaranteed to be of a fixed schema.

  • Azure Cosmos DB biedt alleen ondersteuning voor JSON-items.Azure Cosmos DB supports strict JSON items only. Het type systeem en expressies zijn beperkt tot het verwerken van JSON-typen.The type system and expressions are restricted to deal only with JSON types. Zie voor meer informatie de JSON-specificatie.For more information, see the JSON specification.

  • Een Cosmos-container is een schema-gratis verzameling van JSON-items.A Cosmos container is a schema-free collection of JSON items. De relaties binnen en in container items worden impliciet vastgelegd door containment, niet op basis van primaire sleutel en refererende-sleutel relaties.The relations within and across container items are implicitly captured by containment, not by primary key and foreign key relations. Deze functie is belang rijk voor de objecten die verderop in dit artikel worden besproken.This feature is important for the intra-item joins discussed later in this article.

Volgende stappenNext steps