Cláusula SELECT (Transact-SQL)SELECT Clause (Transact-SQL)

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) SimBanco de Dados SQL do AzureAzure SQL DatabaseYesBanco de Dados SQL do AzureAzure SQL DatabaseAplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) SimBanco de Dados SQL do AzureAzure SQL DatabaseYesBanco de Dados SQL do AzureAzure SQL Database

Especifica as colunas a serem retornadas pela consulta.Specifies the columns to be returned by the query.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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 ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentosArguments

ALLALL
Especifica que linhas duplicadas podem aparecer no conjunto de resultados.Specifies that duplicate rows can appear in the result set. ALL é o padrão.ALL is the default.

DISTINTODISTINCT
Especifica que só linhas exclusivas podem aparecer no conjunto de resultados.Specifies that only unique rows can appear in the result set. Valores nulos são considerados iguais para os propósitos da palavra-chave DISTINCT.Null values are considered equal for the purposes of the DISTINCT keyword.

TOP (expression ) [ PERCENT ] [ WITH TIES ]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.Indicates that only a specified first set or percent of rows will be returned from the query result set. expression pode ser um número ou uma porcentagem das linhas.expression can be either a number or a percent of the rows.

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.For backward compatibility, using the TOP expression without parentheses in SELECT statements is supported, but we do not recommend it. Para obter mais informações, confira TOP (Transact-SQL).For more information, see TOP (Transact-SQL).

< select_list > As colunas a serem selecionadas para o conjunto de resultados.< select_list > The columns to be selected for the result set. A lista de seleções é uma série de lista de expressões separadas por vírgulas.The select list is a series of expressions separated by commas. O número máximo de expressões que pode ser especificado na lista de seleção é 4096.The maximum number of expressions that can be specified in the select list is 4096.

*
Especifica que todas as colunas de todas as tabelas e exibições na cláusula FROM devem ser retornadas.Specifies that all columns from all tables and views in the FROM clause should be returned. 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.The columns are returned by table or view, as specified in the FROM clause, and in the order in which they exist in the table or view.

table_name | view_name | tablealias.*table_name | view_name | tablealias.*
Limita o escopo de * à tabela ou exibição especificada.Limits the scope of the * to the specified table or view.

column_namecolumn_name
É o nome de uma coluna a ser retornada.Is the name of a column to return. 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.Qualify column_name to prevent an ambiguous reference, such as occurs when two tables in the FROM clause have columns with duplicate names. Por exemplo, as tabelas SalesOrderHeader e SalesOrderDetail no banco de dados AdventureWorks2012AdventureWorks2012 têm uma coluna chamada ModifiedDate.For example, the SalesOrderHeader and SalesOrderDetail tables in the AdventureWorks2012AdventureWorks2012 database both have a column named 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.If the two tables are joined in a query, the modified date of the SalesOrderDetail entries can be specified in the select list as SalesOrderDetail.ModifiedDate.

expressãoexpression
É uma constante, função, qualquer combinação de nomes de coluna, constantes e funções conectadas por um operador ou operadores, ou uma subconsulta.Is a constant, function, any combination of column names, constants, and functions connected by an operator or operators, or a subquery.

$IDENTITY$IDENTITY
Retorna a coluna de identidade.Returns the identity column. Para obter mais informações, consulte IDENTITY (Property) (Transact-SQL), ALTER TABLE (Transact-SQL) e CREATE TABLE (Transact-SQL).For more information, see IDENTITY (Property) (Transact-SQL), ALTER TABLE (Transact-SQL), and 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.If more than one table in the FROM clause has a column with the IDENTITY property, $IDENTITY must be qualified with the specific table name, such as T1.$IDENTITY.

$ROWGUID$ROWGUID
Retorna a coluna do GUID da linha.Returns the row GUID column.

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.If there is more than one table in the FROM clause with the ROWGUIDCOL property, $ROWGUID must be qualified with the specific table name, such as T1.$ROWGUID.

udt_column_nameudt_column_name
É o nome de uma coluna de tipo CLR (common language runtime) definida pelo usuário a ser retornada.Is the name of a common language runtime (CLR) user-defined type column to return.

Observação

O SQL Server Management StudioSQL Server Management Studio retorna valores de tipo definidos pelo usuário em representação binária.SQL Server Management StudioSQL Server Management Studio returns user-defined type values in binary representation. Para retornar valores de tipo definidos pelo usuário em um formato de cadeia de caracteres ou XML, use CAST ou CONVERT.To return user-defined type values in string or XML format, use CAST or CONVERT.

{ .{ . | :: }| :: }
Especifica um método, uma propriedade ou um campo de um tipo de dados CLR definido pelo usuário.Specifies a method, property, or field of a CLR user-defined type. Use .Use . para um método de instância (não estático), propriedade ou campo.for an instance (nonstatic) method, property, or field. Use :: para um método estático, propriedade ou campo.Use :: for a static method, property, or field. 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.To invoke a method, property, or field of a CLR user-defined type, you must have EXECUTE permission on the type.

property_nameproperty_name
É uma propriedade pública de udt_column_name.Is a public property of udt_column_name.

field_namefield_name
É um membro de dados público de udt_column_name.Is a public data member of udt_column_name.

method_namemethod_name
É um método público de udt_column_name que usa um ou mais argumentos.Is a public method of udt_column_name that takes one or more arguments. method_name não pode ser um método modificador.method_name cannot be a mutator method.

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:The following example selects the values for the Location column, defined as type point, from the Cities table, by invoking a method of the type called 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_ aliascolumn_ alias
Um nome alternativo para substituir o nome da coluna no conjunto de resultados da consulta.Is an alternative name to replace the column name in the query result set. Por exemplo, um alias como Quantidade ou Quantidade até a Data ou Qtd pode ser especificado para uma coluna denominada quantidade.For example, an alias such as Quantity, or Quantity to Date, or Qty can be specified for a column named quantity.

Aliases também são usados para especificar nomes para os resultados de expressões, por exemplo:Aliases are used also to specify names for the results of expressions, for example:

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

column_alias pode ser usado em uma cláusula ORDER BY.column_alias can be used in an ORDER BY clause. Porém, não pode ser usado em uma cláusula WHERE, GROUP BY nem HAVING.However, it cannot be used in a WHERE, GROUP BY, or HAVING clause. 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.If the query expression is part of a DECLARE CURSOR statement, column_alias cannot be used in the FOR UPDATE clause.

ComentáriosRemarks

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.The length of data returned for text or ntext columns that are included in the select list is set to the smallest value of the following: the actual size of the text column, the default TEXTSIZE session setting, or the hard-coded application limit. Para alterar o comprimento do texto retornado para a sessão, use a instrução SET.To change the length of returned text for the session, use the SET statement. Por padrão, o limite no comprimento de dados de texto retornados com uma instrução SELECT é 4.000 bytes.By default, the limit on the length of text data returned with a SELECT statement is 4,000 bytes.

O Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine gerará a exceção 511 e reverterá a instrução atualmente em execução, se algum dos seguintes comportamentos ocorrer:The Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine raises exception 511 and rolls back the current running statement if either of the following behavior occurs:

  • A instrução SELECT produz uma linha de resultados ou uma tabela de trabalho intermediária que excede 8.060 bytes.The SELECT statement produces a result row or an intermediate work table row exceeding 8,060 bytes.

  • A instrução DELETE, INSERT ou UPDATE tenta uma ação em uma linha que excede 8.060 bytes.The DELETE, INSERT, or UPDATE statement tries an action on a row exceeding 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.An error occurs if no column name is specified to a column created by a SELECT INTO or CREATE VIEW statement.

Consulte TambémSee Also

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