Cláusula SELECT (Transact-SQL)

Especifica as colunas a serem retornadas pela consulta.

Ícone de vínculo de tópicoConvenções de sintaxe 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 ] 

Argumentos

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

  • DISTINCT
    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 somente 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 de linhas.

    Para compatibilidade com versões anteriores, há suporte para o uso de TOP expression sem parênteses em instruções SELECT, mas não é recomendável. Para obter mais informações, consulte 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 especificada ou exibição.

  • 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 AdventureWorks2008R2 têm uma coluna denominada 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.

  • expression
    É 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, consulte 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 GUID de 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) definido pelo usuário a ser retornada.

    ObservaçãoObservaçã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 cadeia de caracteres ou formato 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 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 especificar nomes para os resultados de expressões, por exemplo:

    USE AdventureWorks2008R2;

    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 for parte de uma instrução DECLARE CURSOR, column_alias não poderá ser usado na cláusula FOR UPDATE.

Comentários

O comprimento dos dados retornados para as colunas text ou ntext incluídas na lista de seleção é definido como o menor valor entre: o tamanho real da coluna text, a configuração padrão da sessão 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.