Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico fornece uma referência rápida às consultas Entity SQL. As consultas neste tópico são baseadas no modelo de vendas da AdventureWorks.
Literais
Cordão
Existem literais de cadeia de caracteres Unicode e não-Unicode. As cadeias de caracteres Unicode são precedidas de N. Por exemplo, N'hello'.
A seguir está um exemplo de literal de sequência de caracteres não Unicode:
'hello'
--same as
"hello"
Saída:
| Valor |
|---|
| olá |
Data e Hora
Nos literais de 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 01:01:00 |
Número inteiro
Os 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 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 Tipos
LINHA
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:
| ID do Produto | Nome |
|---|---|
| 1 | Corrida ajustável |
| 879 | All-Purpose Suporte para bicicletas |
| 712 | Boné com logotipo AWC |
| ... | ... |
MULTISET
MULTISET constrói coleções, tais 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úmero do Produto | … |
|---|---|---|---|
| 842 | Touring-Panniers, Grandes | PA-T100 | … |
Objeto
Named Type Constructor 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 Rastreio do Transportador | Quantidade de Ordem | 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 propriedade (.) 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 bicicletas |
| Boné com logotipo AWC |
| ... |
DEREF
DEREF desreferencia um valor de referência e produz o resultado dessa desreferência. Por exemplo, a consulta a seguir produz 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 |
|---|
| Corrida ajustável |
| All-Purpose Suporte para bicicletas |
| Boné com logotipo AWC |
| ... |
** CREATEREF E KEY
CREATEREF cria uma referência passando uma chave. KEY extrai a parte 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"). Não é necessário 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 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:
| NomeLen |
|---|
| 6 |
| 6 |
| 5 |
Microsoft Provider-Specific
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:
| Endereço electrónicoLen |
|---|
| 27 |
| 27 |
| 26 |
Espaços para nomes
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 declarando as 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º de Identificação | 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:
| nome |
|---|
| Montagem de Assento LL Mountain |
| Montagem ML Mountain Seat |
| Montagem de assentos de montanha HL |
| ... |
Navegação
O operador de navegação de relacionamento permite que se navegue sobre o relacionamento de uma entidade (da origem) para outra (ao destino). NAVIGATE toma o tipo de relacionamento qualificado como <namespace>.<nome do tipo de relacionamento>. Navigate retorna Ref<T> se a cardinalidade da extremidade for 1. Se a cardinalidade do fim for n, será devolvida a Collection<Ref<T>>.
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:
| ID do endereço |
|---|
| 1 |
| 2 |
| 3 |
| ... |
SELECIONE VALOR E SELECIONE OPÇÃO
SELECIONAR VALOR
O Entity SQL fornece a cláusula SELECT VALUE para ignorar a construção de linha implícita. Apenas um item pode ser especificado em uma cláusula SELECT VALUE. Quando tal cláusula é usada, nenhum wrapper de linha é construído em torno dos itens na cláusula SELECT, e uma coleção da forma desejada pode ser produzida, 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 bicicletas |
| Boné com logotipo AWC |
| ... |
SELECIONAR
Entity SQL também fornece o construtor de linha 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 como p Saída:
| Nome | ID do Produto |
|---|---|
| Corrida ajustável | 1 |
| All-Purpose Suporte para bicicletas | 879 |
| Boné com logotipo AWC | 712 |
| ... | ... |
EXPRESSÃO DE CASO
A expressão de caso avalia um conjunto de expressões booleanas para determinar o resultado.
Exemplo:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Saída:
| Valor |
|---|
| VERDADEIRO |