Cláusula SELECT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric

Especifica as colunas a serem retornadas pela consulta.

Convenções de sintaxe de Transact-SQL

Sintaxe

SELECT [ ALL | DISTINCT ]  
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ]   
<select_list>   
<select_list> ::=   
    {   
      *   
      | { table_name | view_name | table_alias }.*   
      | {  
          [ { table_name | view_name | table_alias }. ]  
               { column_name | $IDENTITY | $ROWGUID }   
          | udt_column_name [ { . | :: } { { property_name | field_name }   
            | method_name ( argument [ ,...n] ) } ]  
          | expression  
         }  
        [ [ AS ] column_alias ]   
      | column_alias = expression   
    } [ ,...n ]   

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

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

DISTINTO
Especifica que só linhas exclusivas podem aparecer no conjunto de resultados. Valores nulos são considerados iguais para os propósitos da palavra-chave DISTINCT.

TOP (expression ) [ PERCENT ] [ WITH TIES ]
Indica que apenas um primeiro conjunto ou porcentagem de linhas especificado será retornado de um conjunto de resultados de consulta. expression pode ser um número ou uma porcentagem das linhas.

Para compatibilidade com versões anteriores, há suporte para o uso de TOP expression sem parênteses em instruções SELECT, mas isso não é recomendável. Para saber mais, confira TOP (Transact-SQL).

<select_list> As colunas a serem selecionadas para o conjunto de resultados. A lista de seleções é uma série de lista de expressões separadas por vírgulas. O número máximo de expressões que pode ser especificado na lista de seleção é 4096.

*
Especifica que todas as colunas de todas as tabelas e exibições na cláusula FROM devem ser retornadas. As colunas são retornadas por tabela ou exibição, conforme especificado na cláusula FROM, e na ordem em que existem na tabela ou exibição.

table_name | view_name | table_alias.*
Limita o escopo de * para a tabela ou exibição especificada.

column_name
É o nome de uma coluna a ser retornada. Qualifica column_name para impedir uma referência ambígua, como ocorre quando duas tabelas na cláusula FROM têm colunas com nomes duplicados. Por exemplo, as tabelas SalesOrderHeader e SalesOrderDetail no banco de dados AdventureWorks2022 têm uma coluna chamada ModifiedDate. Se as duas tabelas estão unidas em uma consulta, a data modificada das entradas de SalesOrderDetail pode ser especificada na lista de seleção como SalesOrderDetail.ModifiedDate.

expressão
É uma constante, função, qualquer combinação de nomes de coluna, constantes e funções conectadas por um operador ou operadores, ou uma subconsulta.

$IDENTITY
Retorna a coluna de identidade. Para obter mais informações, confira IDENTITY (Propriedade) (Transact-SQL), ALTER TABLE (Transact-SQL) e CREATE TABLE (Transact-SQL).

Se mais de uma tabela na cláusula FROM tiver uma coluna com a propriedade IDENTITY, $IDENTITY deverá ser qualificada com o nome específico da tabela, como T1.$IDENTITY.

$ROWGUID
Retorna a coluna do GUID da linha.

Se houver mais de uma tabela na cláusula FROM com a propriedade ROWGUIDCOL, $ROWGUID deverá ser qualificado com o nome específico da tabela, como T1.$ROWGUID.

udt_column_name
É o nome de uma coluna de tipo CLR (common language runtime) definida pelo usuário a ser retornada.

Observação

O SQL Server Management Studio retorna valores de tipo definidos pelo usuário em representação binária. Para retornar valores de tipo definidos pelo usuário em um formato de cadeia de caracteres ou XML, use CAST ou CONVERT.

{ . | :: }
Especifica um método, uma propriedade ou um campo de um tipo de dados CLR definido pelo usuário. Use . para um método de instância (não estático), propriedade ou campo. Use :: para um método estático, propriedade ou campo. Para invocar um método, uma propriedade ou um campo de um tipo de dados CLR definido pelo usuário, você deve ter a permissão EXECUTE no tipo.

property_name
É uma propriedade pública de udt_column_name.

field_name
É um membro de dados público de udt_column_name.

method_name
É um método público de udt_column_name que usa um ou mais argumentos. method_name não pode ser um método modificador.

O exemplo a seguir seleciona os valores para a coluna Location, definida como tipo point, da tabela Cities, invocando um método de tipo denominado Distance:

CREATE TABLE dbo.Cities (  
     Name VARCHAR(20),  
     State VARCHAR(20),  
     Location POINT);  
GO  
DECLARE @p POINT (32, 23), @distance FLOAT;  
GO  
SELECT Location.Distance (@p)  
FROM Cities;  

column_alias
Um nome alternativo para substituir o nome da coluna no conjunto de resultados da consulta. Por exemplo, um alias como Quantidade ou Quantidade até a Data ou Qtd pode ser especificado para uma coluna denominada quantidade.

Aliases também são usados para especificar nomes para os resultados de expressões, por exemplo:

USE AdventureWorks2022;  
GO  
SELECT AVG(UnitPrice) AS [Average Price]  
FROM Sales.SalesOrderDetail;

column_alias pode ser usado em uma cláusula ORDER BY. Porém, não pode ser usado em uma cláusula WHERE, GROUP BY nem HAVING. Se a expressão de consulta fizer parte de uma instrução DECLARE CURSOR, column_alias não poderá ser usado na cláusula FOR UPDATE.

Comentários

O tamanho dos dados retornados para as colunas text ou ntext, incluídas na lista de seleção é definido com o menor valor dos seguintes: o tamanho real da coluna text, a configuração padrão de sessão de TEXTSIZE ou o limite do aplicativo embutido em código. Para alterar o comprimento do texto retornado para a sessão, use a instrução SET. Por padrão, o limite no comprimento de dados de texto retornados com uma instrução SELECT é 4.000 bytes.

O Mecanismo de Banco de Dados do SQL Server gerará a exceção 511 e reverterá a instrução atualmente em execução, se algum dos seguintes comportamentos ocorrer:

  • A instrução SELECT produz uma linha de resultados ou uma tabela de trabalho intermediária que excede 8.060 bytes.

  • A instrução DELETE, INSERT ou UPDATE tenta uma ação em uma linha que excede 8.060 bytes.

Ocorrerá um erro se nenhum nome de coluna for especificado para uma coluna criada por uma instrução SELECT INTO ou CREATE VIEW.

Consulte Também

Exemplos de SELECT (Transact-SQL)
Expressões (Transact-SQL)
SELECT (Transact-SQL)