Partilhar via


SELECT (SQL de entidade)

Especifica os elementos retornados por uma consulta.

Sintaxe

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
      [{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause

Argumentos

ALL Especifica que duplicatas podem aparecer no conjunto de resultados. ALL é o padrão.

DISTINCT Especifica que apenas resultados exclusivos podem aparecer no conjunto de resultados.

VALOR Permite que apenas um item seja especificado e não adiciona um wrapper de linha.

topSubclause Qualquer expressão válida que indique o número de primeiros resultados a serem retornados da consulta, do formulário top(expr).

O parâmetro LIMIT do operador ORDER BY também permite selecionar os primeiros n itens no conjunto de resultados.

aliasedExpr Uma expressão da forma:

expr como identifier | expr

expr Um literal ou expressão.

Observações

A cláusula SELECT é avaliada após as cláusulas FROM, GROUP BY e HAVING terem sido avaliadas. A cláusula SELECT só pode referir-se a itens atualmente no escopo (da cláusula FROM ou de escopos externos). Se uma cláusula GROUP BY tiver sido especificada, a cláusula SELECT só poderá fazer referência aos aliases das chaves GROUP BY. A referência aos itens da cláusula FROM só é permitida em funções agregadas.

A lista de uma ou mais expressões de consulta após a palavra-chave SELECT é conhecida como a lista de seleção ou, mais formalmente, como a projeção. A forma mais geral de projeção é uma única expressão de consulta. Se você selecionar um membro member1 de uma coleção collection1, produzirá uma nova coleção de todos os member1 valores para cada objeto no collection1, conforme ilustrado no exemplo a seguir.

SELECT collection1.member1 FROM collection1

Por exemplo, se customers for uma coleção de tipo Customer que tenha uma propriedade Name do tipo string, selecionar Name de customers produzirá uma coleção de cadeias de caracteres, conforme ilustrado no exemplo a seguir.

SELECT customers.Name FROM customers AS c

Também é possível usar a sintaxe JOIN (FULL, INNER, LEFT, OUTER, ON e RIGHT). ON é necessário para junções internas e é nto permitido para junções cruzadas.

Cláusulas de seleção de linha e valor

O Entity SQL suporta duas variantes da cláusula SELECT. A primeira variante, row select, é identificada pela palavra-chave SELECT e pode ser usada para especificar um ou mais valores que devem ser projetados. Como um wrapper de linha é adicionado implicitamente em torno dos valores retornados, o resultado da expressão de consulta é sempre um conjunto múltiplo de linhas.

Cada expressão de consulta em uma seleção de linha deve especificar um alias. Se nenhum alias for especificado, o Entity SQL tentará gerar um alias usando as regras de geração de alias.

A outra variante da cláusula SELECT, value select, é identificada pela palavra-chave SELECT VALUE. Ele permite que apenas um valor seja especificado e não adiciona um wrapper de linha.

Uma seleção de linha é sempre expressável em termos de VALUE SELECT, conforme ilustrado no exemplo a seguir.

SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C

Todos e distintos modificadores

Ambas as variantes de SELECT no Entity SQL permitem a especificação de um modificador ALL ou DISTINCT . Se o modificador DISTINCT for especificado, as duplicatas serão eliminadas da coleção produzida pela expressão de consulta (até e incluindo a cláusula SELECT). Se o modificador ALL for especificado, nenhuma eliminação duplicada será executada; ALL é o padrão.

Diferenças do Transact-SQL

Ao contrário do Transact-SQL, o Entity SQL não oferece suporte ao uso do argumento * na cláusula SELECT. Em vez disso, o Entity SQL permite que as consultas projetem registros inteiros fazendo referência aos aliases de coleção da cláusula FROM, conforme ilustrado no exemplo a seguir.

SELECT * FROM T1, T2

A expressão de consulta Transact-SQL anterior é expressa em Entity SQL da seguinte maneira.

SELECT a1, a2 FROM T1 AS a1, T2 AS a2

Exemplo

A consulta Entity SQL a seguir usa o operador SELECT para especificar os elementos a serem retornados por uma consulta. A consulta é baseada no Modelo de Vendas AdventureWorks. Para compilar e executar esta consulta, siga estes passos:

  1. Siga o procedimento em Como: Executar uma consulta que retorna resultados StructuralType.

  2. Passe a seguinte consulta como um argumento para o ExecuteStructuralTypeQuery método:

SELECT VALUE product FROM AdventureWorksEntities.Products 
    AS product WHERE product.ListPrice < @price

Consulte também