SELECT (Transact-SQL)

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

[ WITH <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.

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

Sintaxe

<SELECT statement> ::=  
    [WITH <common_table_expression> [,...n]]
    <query_expression> 
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } 
  [ ,...n ] ] 
    [ COMPUTE 
  { { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ] 
  [ BY expression [ ,...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

Por causa da complexidade da instrução SELECT, elementos de sintaxe detalhados e argumentos são mostrados pela cláusula:

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 só serão permitidas em funções definidas pelo usuário 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 origem de tabela onde quer que um nome de tabela possa aparecer em uma instrução SELECT.

Algumas restrições de sintaxe se aplicam a instruções SELECT que envolvem tabelas remotas. Para obter mais informações, consulte Diretrizes para uso de consultas distribuídas.

Ordem de processamento da instrução SELECT

As etapas seguintes mostram a ordem de processamento para uma instrução SELECT.

  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. TOP

Permissões

Requer associação à função de servidor fixa sysadmin, às funções de banco de dados fixas db_owner e db_datareader e à propriedade da tabela. Os membros das funções sysadmin, db_owner e db_securityadmin, e o proprietário da tabela podem transferir permissões para outros usuários.

Consulte também

Referência