Compartilhar via


SELECT (Transact-SQL)

 

Recupera linhas do banco de dados e permite a seleção de uma ou várias linhas ou colunas de uma ou várias tabelas no SQL Server.A sintaxe completa da instrução SELECT é complexa, mas as cláusulas principais podem ser assim resumidas:

[ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> ] } ]

SELECT select_list [ INTO new_table ]

[ FROM table_source ] [ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

Os operadores UNION, EXCEPT e INTERSECT podem ser usados entre consultas para combinar ou comparar os resultados em um único conjunto de resultados.

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Azure.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

<SELECT statement> ::=  
    [ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> [,...n] ] } ]
    <query_expression> 
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } 
  [ ,...n ] ] 
    [ <FOR Clause>] 
    [ OPTION ( <query_hint> [ ,...n ] ) ] 
<query_expression> ::= 
    { <query_specification> | ( <query_expression> ) } 
    [  { UNION [ ALL ] | EXCEPT | INTERSECT }
        <query_specification> | ( <query_expression> ) [...n ] ] 
<query_specification> ::= 
SELECT [ ALL | DISTINCT ] 
    [TOP (expression) [PERCENT] [ WITH TIES ] ] 
    < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 
    [ <GROUP BY> ] 
    [ HAVING < search_condition > ] 

Comentários

Devido à complexidade da instrução SELECT, os elementos e argumentos de sintaxe detalhados são mostrados por cláusula:

WITH XMLNAMESPACES

WITH common_table_expression

HAVING

Cláusula SELECT

UNION

Cláusula INTO

EXCEPT e INTERSECT

FROM

ORDER BY

WHERE

Cláusula FOR

GROUP BY

Cláusula OPTION

A ordem das cláusulas na instrução SELECT é significativa.Qualquer uma das cláusulas opcionais pode ser omitida, mas quando elas são usadas devem aparecer na ordem apropriada.

As instruções SELECT serão permitidas em funções definidas pelo usuário apenas se as listas de seleção dessas instruções contiverem expressões que atribuam valores a variáveis que são locais a essas funções.

Um nome de quatro partes construído com a função OPENDATASOURCE como a parte do nome do servidor pode ser usado como uma origem de tabela sempre que um nome de tabela puder aparecer em uma instrução SELECT.Um nome de quatro partes não pode ser especificado para Banco de dados SQL do Azure.

Algumas restrições de sintaxe se aplicam a instruções SELECT que envolvem tabelas remotas.

Ordem de processamento lógico da instrução SELECT

As etapas a seguir mostram a ordem de processamento lógico ou a ordem de associação de uma instrução SELECT.Essa ordem determina quando os objetos definidos em uma etapa são disponibilizados para as cláusulas em etapas subsequentes.Por exemplo, se o processador de consulta puder ser associado (acessar) a tabelas ou exibições definidas na cláusula FROM, esses objetos e suas colunas serão disponibilizados para todas as etapas subsequentes.De modo oposto, como a cláusula SELECT é a etapa 8, qualquer alias de coluna ou coluna derivada definida naquela cláusula não poderá ser referenciada por cláusulas precedentes.Porém, poderão ser referenciadas por cláusulas subsequentes, como a cláusula ORDER BY.Observe que a execução física real da instrução é determinada pelo processador de consulta e a ordem pode variar desta lista.

  1. FROM

  2. ON

  3. JOIN

  4. WHERE

  5. GROUP BY

  6. WITH CUBE ou WITH ROLLUP

  7. HAVING

  8. SELECT

  9. DISTINCT

  10. ORDER BY

  11. INÍCIO

Permissões

A seleção de dados exige a permissão SELECT na tabela ou exibição, que pode ser herdada de um escopo superior, como a permissão SELECT no esquema ou a permissão CONTROL na tabela.Ou exige associação nas funções de banco de dados fixas db_datareader ou db_owner, ou na função de servidor fixa sysadmin.Criar uma nova tabela usando o SELECTINTO também requer a permissão do CREATETABLE e a permissão do ALTERSCHEMA no esquema que possui a nova tabela.

Consulte também

Exemplos de SELECT (Transact-SQL)