SELECT (Transact-SQL)

Recupera righe dal database e consente la selezione di una o più righe o colonne da una o più tabelle. La sintassi completa dell'istruzione SELECT è complessa, ma le clausole principali sono le seguenti:

[ 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 ] ]

È possibile utilizzare gli operatori UNION, EXCEPT e INTERSECT per combinare o confrontare i risultati di più query in un unico set di risultati.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

<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 > ] 

Osservazioni

A causa della complessità dell'istruzione SELECT, gli elementi della sintassi e gli argomenti sono stati raggruppati e descritti in base alla clausola:

L'ordine delle clausole nell'istruzione SELECT è significativo. È possibile omettere qualsiasi clausola facoltativa, ma se tali clausole vengono utilizzate, è necessario specificarle nell'ordine corretto.

Le istruzioni SELECT sono consentite in funzioni definite dall'utente solo se gli elenchi di selezione di tali istruzioni includono espressioni per l'assegnazione di valori a variabili che sono locali rispetto alle funzioni.

Un nome composto da quattro parti costruito con la funzione OPENDATASOURCE come parte del nome di server può essere utilizzato come origine di tabella in qualsiasi punto di istruzioni SELECT in cui sono consentiti i nomi di tabella.

Per le istruzioni SELECT che coinvolgono tabelle remote sono previste alcune limitazioni della sintassi. Per ulteriori informazioni, vedere Linee guida per l'utilizzo di query distribuite.

Ordine di elaborazione dell'istruzione SELECT

Nei passaggi seguenti viene mostrato l'ordine di elaborazione per un'istruzione SELECT.

  1. FROM

  2. ON

  3. JOIN

  4. WHERE

  5. GROUP BY

  6. WITH CUBE o WITH ROLLUP

  7. HAVING

  8. SELECT

  9. DISTINCT

  10. ORDER BY

  11. TOP

Autorizzazioni

Sono richieste l'appartenenza al ruolo predefinito del server sysadmin, ai ruoli predefiniti del database db_owner e db_datareader e la proprietà della tabella. I membri dei ruoli sysadmin, db_owner e db_securityadmin e il proprietario della tabella possono trasferire le autorizzazioni ad altri utenti.