Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico fornece uma referência rápida a consultas SQL de entidade. As consultas neste tópico são baseadas no modelo AdventureWorks Sales.
Literais
fio
Há literais de cadeia de caracteres Unicode e não Unicode. As cadeias de caracteres Unicode são precedidas por N. Por exemplo, N'hello'.
Veja a seguir um exemplo de cadeia de caracteres literal não Unicode.
'hello'
--same as
"hello"
Saída:
| Valor |
|---|
| Olá |
Data e Hora
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 |
|---|
| 25/12/2006 1:01:00 AM |
Número Inteiro
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 |
Outros
Outros literais compatíveis com o 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
LINHA
ROW constrói um valor anônimo, de tipo estrutural (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:
| ID do Produto | Nome |
|---|---|
| 1 | Corrida ajustável |
| 879 | All-Purpose Suporte para Bicicleta |
| 712 | Boné com logotipo do AWC |
| ... | ... |
MULTISET
O 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:
| ID do Produto | Nome | NúmeroDoProduto | … |
|---|---|---|---|
| 842 | Touring-Panniers, Grande | PA-T100 | … |
Objeto
Construtor de Tipo Nomeado constrói (nomeado) objetos definidos pelo usuário, 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 | Número de Rastreamento do Transportador | QuantidadeDePedido | ID do Produto | ... |
|---|---|---|---|---|
| 1 | 4911-403C-98 | 1 | 776 | ... |
| 2 | 4911-403C-98 | 3 | 777 | ... |
| ... | ... | ... | ... | ... |
Referências
REF
REF cria uma referência a uma instância de tipo de entidade. Por exemplo, a consulta a seguir retorna referências a 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 propriedades (.) para acessar uma propriedade de uma entidade. Quando o operador de extração de propriedade é usado, a referência é automaticamente desreferenciada.
Exemplo:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Saída:
| Valor |
|---|
| Corrida ajustável |
| All-Purpose Suporte para Bicicleta |
| Boné com logotipo do AWC |
| ... |
DEREF
O DEREF desreferencia um valor de referência e produz o resultado dessa desreferência. Por exemplo, a consulta a seguir produz entidades de Pedido para cada pedido no conjunto de entidades de Pedidos: 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 |
|---|
| Corrida ajustável |
| All-Purpose Suporte para Bicicleta |
| Boné com logotipo do AWC |
| ... |
CREATEREF E KEY
CREATEREF cria uma referência passando 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:
| ID do Produto |
|---|
| 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 que contenha uma função com o mesmo nome de uma função canônica. Se dois namespaces tiverem a mesma função, o usuário deverá 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
As funções específicas do provedor da Microsoft estão no SqlServer namespace.
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 |
Paginação
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:
| Número de Identificação | Nome |
|---|---|
| 10 | Adina |
| 11 | Agcaoili |
| 12 | Aguilar |
Agrupamento
GROUPING BY especifica grupos nos quais os objetos retornados por uma expressão SELECT (consulta) devem ser colocados.
Exemplo:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
Saída:
| nome |
|---|
| LL Mountain Seat Assembly |
| ML Mountain Seat Assembly |
| HL Mountain Seat Assembly |
| ... |
Navegação
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 |
| ... |
SELECIONAR VALOR E SELECIONAR
SELECIONAR VALOR
O Entity SQL fornece a cláusula SELECT VALUE para evitar 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 |
|---|
| Corrida ajustável |
| All-Purpose Suporte para Bicicleta |
| Boné com logotipo do AWC |
| ... |
SELECIONAR
O SQL da entidade também fornece o construtor de linhas para construir linhas arbitrárias. SELECT usa 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 | ID do Produto |
|---|---|
| Corrida ajustável | 1 |
| All-Purpose Suporte para Bicicleta | 879 |
| Boné com logotipo do AWC | 712 |
| ... | ... |
EXPRESSÃO CASE
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 |
|---|
| VERDADEIRO |