Compartilhar via


Referência rápida de Entity SQL

Este tópico fornece uma referência rápida para consultas Entity SQL. As consultas deste tópico se baseiam no modelo de vendas AdventureWorks.

Literais

String

Há literais de cadeia de caracteres Unicode e não Unicode. As cadeias de caracteres Unicode são pré-demarcadas com N. Por exemplo, N'hello'.

Este é um exemplo de um literal de cadeia de caracteres não Unicode:

'hello'
--same as
"hello"

Saída:

Valor
hello

Datetime

Em literais DateTime, as partes de data e hora são obrigatórias. Não há valores padrão.

Exemplo:

DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'

Saída:

Valor
12/25/2006 1:01:00 AM

Integer

Literais inteiros podem ser do tipo Int32 (123), UInt32 (123U), Int64 (123L) e UInt64 (123UL).

Exemplo:

--a collection of integers
{1, 2, 3}

Saída:

Valor
1
2
3

Outro

Outros literais suportados pelo Entity SQL são Guid, Binary, Float/Double, Decimal e null. Literais nulos no Entity SQL são considerados compatíveis com todos os outros tipos no modelo conceitual.

Construtores de tipo

ROW

ROW constrói um valor anônimo, estruturalmente tipado (registro) como em: ROW(1 AS myNumber, 'Name' AS myName).

Exemplo:

SELECT VALUE row (product.ProductID AS ProductID, product.Name
    AS ProductName) FROM AdventureWorksEntities.Product AS product

Saída:

ProductID Nome
1 Adjustable Race
879 Suporte de bicicleta multifuncional
712 AWC Logo Cap
... ...

MULTISET

MULTISET constrói coleções, como:

MULTISET(1,2,2,3) --same as-{1,2,2,3}.

Exemplo:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)

Saída:

ProductID Nome ProductNumber
842 Touring-Panniers, Large PA-T100

Objeto

Construtor de tipo nomeado constrói objetos definidos pelo usuário (nomeados), como person("abc", 12).

Exemplo:

SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty,
o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount,
o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail
AS o

Saída:

SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID ...
1 4911-403C-98 1 776 ...
2 4911-403C-98 3 777 ...
... ... ... ... ...

Referências

REF

REF cria uma referência a uma instância do tipo de entidade. Por exemplo, a seguinte consulta retorna referências para cada entidade Order no conjunto de entidades Orders:

SELECT REF(o) AS OrderID FROM Orders AS o

Saída:

Valor
1
2
3
...

O exemplo a seguir usa o operador de extração de propriedade (.) para acessar uma propriedade de uma entidade. Quando o operador de extração de propriedade é usado, a referência é cancelada automaticamente.

Exemplo:

SELECT VALUE REF(p).Name FROM
    AdventureWorksEntities.Product AS p

Saída:

Valor
Adjustable Race
Suporte de bicicleta multifuncional
AWC Logo Cap
...

DEREF

DEREF desreferencia um valor de referência e gera o resultado dessa desreferência. Por exemplo, a seguinte consulta gera as entidades Order para cada Order no conjunto de entidades Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2.

Exemplo:

SELECT VALUE DEREF(REF(p)).Name FROM
    AdventureWorksEntities.Product AS p

Saída:

Valor
Adjustable Race
Suporte de bicicleta multifuncional
AWC Logo Cap
...

CREATEREF AND KEY

CREATEREF cria uma referência que passa uma chave. KEY extrai a parte de chave de uma expressão com referência de tipo.

Exemplo:

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
    FROM AdventureWorksEntities.Product AS p

Saída:

ProductID
980
365
771
...

Funções

Canônico

O namespace para funções canônicas é Edm, como em Edm.Length("string"). Você não precisa especificar o namespace, a menos que outro namespace seja importado e contenha uma função com o mesmo nome de uma função canônica. Se dois namespaces têm a mesma função, o usuário deve especificar o nome completo.

Exemplo:

SELECT Length(c. FirstName) AS NameLen FROM
    AdventureWorksEntities.Contact AS c
    WHERE c.ContactID BETWEEN 10 AND 12

Saída:

NameLen
6
6
5

Específico do provedor da Microsoft

Funções específicas do provedor da Microsoft estão no namespace SqlServer.

Exemplo:

SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
    AdventureWorksEntities.Contact AS c WHERE
    c.ContactID BETWEEN 10 AND 12

Saída:

EmailLen
27
27
26

Namespaces

USING especifica namespaces usados em uma expressão de consulta.

Exemplo:

using SqlServer; LOWER('AA');

Saída:

Valor
aa

Paginamento

A paginação pode ser expressa pela declaração de subcláusulas SKIP e LIMIT para a cláusula ORDER BY.

Exemplo:

SELECT c.ContactID as ID, c.LastName AS Name FROM
    AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;

Saída:

ID Nome
10 Adina
11 Agcaoili
12 Aguilar

Agrupamento

GROUPING BY especifica grupos nos quais os objetos retornados por uma expressão de consulta (SELECT) devem ser colocados.

Exemplo:

SELECT VALUE name FROM AdventureWorksEntities.Product AS P
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

Saída:

name
LL Mountain Seat Assembly
ML Mountain Seat Assembly
HL Mountain Seat Assembly
...

O operador de navegação de relação permite que você navegue na relação de uma entidade (from end) para outra (to end). NAVIGATE usa o tipo de relacionamento qualificado como <namespace>.<nome do tipo de relacionamento>. Navigate retorna Ref<T> se a cardinalidade de to end for 1. Se a cardinalidade do final for n, a coleção<Ref<T>> será retornada.

Exemplo:

SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
    NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
    FROM AdventureWorksEntities.Address AS a

Saída:

AddressID
1
2
3
...

SELECT VALUE AND SELECT

SELECT VALUE

Entity SQL fornece a cláusula SELECT VALUE para ignorar a construção de linha implícita. Somente um item pode ser especificado em uma cláusula SELECT VALUE. Quando essa cláusula é usada, nenhum wrapper de linha é construído ao redor dos itens na cláusula SELECT, e uma coleção da forma desejada pode ser gerada, por exemplo: SELECT VALUE a.

Exemplo:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

Saída:

Nome
Adjustable Race
Suporte de bicicleta multifuncional
AWC Logo Cap
...

SELECT

Entity SQL também fornece o construtor de linha para construir linhas arbitrárias. SELECT utiliza um ou mais elementos na projeção e resulta em um registro de dados com campos; por exemplo: SELECT a, b, c.

Exemplo:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output:

Nome ProductID
Adjustable Race 1
Suporte de bicicleta multifuncional 879
AWC Logo Cap 712
... ...

CASE EXPRESSION

A expressão case avalia um conjunto de expressões boolianas para determinar o resultado.

Exemplo:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

Saída:

Valor
TRUE

Confira também