SELECT (cláusula de Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Especifica las columnas que va a devolver la consulta.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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 ]   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

ALL
Especifica que el conjunto de resultados puede incluir filas duplicadas. ALL es el valor predeterminado.

DISTINCT
Especifica que el conjunto de resultados solo puede incluir filas únicas. Los valores NULL se consideran iguales desde el punto de vista de la palabra clave DISTINCT.

TOP (expression ) [ PERCENT ] [ WITH TIES ]
Indica que el conjunto de resultados de la consulta solamente devolverá un primer conjunto o porcentaje de filas especificado. expression puede ser un número o un porcentaje de las filas.

Por compatibilidad con versiones anteriores, se permite el uso de TOP expression sin paréntesis en las instrucciones SELECT, aunque no se recomienda. Para obtener más información, vea TOP (Transact-SQL).

<select_list> Columnas que se van a seleccionar para el conjunto de resultados. La lista de selección es una serie de expresiones separadas por comas. El número máximo de expresiones que se puede especificar en la lista de selección es 4.096.

*
Especifica que se deben devolver todas las columnas de todas las tablas y vistas de la cláusula FROM. Las columnas se devuelven por tabla o vista, tal como se especifique en la cláusula FROM, en el orden en que se encuentran en la tabla o vista.

table_name | view_name | table_alias.*
Limita el ámbito de * a la tabla o vista especificada.

column_name
Es el nombre de una columna que se va a devolver. Para evitar referencias ambiguas, como sucedería si dos tablas de la cláusula FROM tuvieran columnas con nombres duplicados, se debe calificar column_name. Por ejemplo, las tablas SalesOrderHeader y SalesOrderDetail de la base de datos AdventureWorks2019 tienen una columna denominada ModifiedDate. Si se combinan ambas tablas en una consulta, se puede especificar la fecha de modificación de las entradas SalesOrderDetail en la lista de selección como SalesOrderDetail.ModifiedDate.

expression
Es una constante, una función o una combinación de nombres de columna, constantes y funciones conectados mediante un operador, varios operadores o una subconsulta.

$IDENTITY
Devuelve la columna de identidad. Para obtener más información, vea IDENTITY (propiedad) (Transact-SQL),ALTER TABLE (Transact-SQL) y CREATE TABLE (Transact-SQL).

Si más de una tabla de la cláusula FROM contiene una columna con la propiedad IDENTITY, se debe calificar $IDENTITY con el nombre de tabla específico; por ejemplo, T1.$IDENTITY.

$ROWGUID
Devuelve la columna GUID de fila.

Si más de una tabla de la cláusula FROM tiene la propiedad ROWGUIDCOL, se debe calificar $ROWGUID con el nombre de tabla específico; por ejemplo, T1.$ROWGUID.

udt_column_name
Es el nombre de la columna que tiene un tipo CLR (Common Language Runtime) definido por el usuario que se va a devolver.

Nota

SQL Server Management Studio devuelve los valores de los tipos definidos por el usuario en representación binaria. Para devolver los valores de los tipos definidos por el usuario en formato XML o de cadena, use CAST o CONVERT.

{ . | :: }
Especifica un método, una propiedad o un campo de un tipo definido por el usuario CLR. Use . para métodos, propiedades o campos de instancia (no estáticos). Use :: para métodos, propiedades o campos estáticos. Para invocar un método, propiedad o campo de un tipo definido por el usuario CLR, debe tener el permiso EXECUTE para el tipo.

property_name
Es una propiedad pública de udt_column_name.

field_name
Es un miembro de datos público de udt_column_name.

method_name
Es un método público de udt_column_name que toma uno o más argumentos. method_name no puede ser un método mutador.

En el ejemplo siguiente se seleccionan los valores de la columna Location, definida como de tipo point, de la tabla Cities, mediante la invocación de un método del 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
Es un nombre alternativo que se utiliza para reemplazar el nombre de la columna en el conjunto de resultados de la consulta. Por ejemplo, se puede especificar un alias como Quantity, Quantity to Date o Qty para una columna denominada quantity.

Los alias se emplean también para especificar nombres para los resultados de expresiones; por ejemplo:

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

column_alias se puede usar en una cláusula ORDER BY. Sin embargo, no puede utilizarse en una cláusula WHERE, GROUP BY o HAVING. Si la expresión de consulta forma parte de una instrucción DECLARE CURSOR, column_alias no se puede usar en la cláusula FOR UPDATE.

Observaciones

La longitud de los datos devueltos de las columnas text o ntext incluidas en la lista de selección se establece en el valor menor de los siguientes: el tamaño real de la columna text, la configuración predeterminada de TEXTSIZE para la sesión o el límite de la aplicación codificado de forma rígida. Para cambiar la longitud del texto devuelto de la sesión, utilice la instrucción SET. De forma predeterminada, la longitud máxima de los datos de texto que se devuelven con una instrucción SELECT es de 4.000 bytes.

El Motor de base de datos de SQL Server provoca la excepción 511 y revierte la instrucción que se está ejecutando en ese momento si se produce alguno de estos comportamientos:

  • La instrucción SELECT produce una fila de resultados o una fila de la tabla de trabajo intermedia que supera los 8.060 bytes.

  • La instrucción DELETE, INSERT o UPDATE intenta realizar una acción en una fila que supera los 8.060 bytes.

Se produce un error si no se proporciona un nombre a una columna creada con una instrucción SELECT INTO o CREATE VIEW.

Consulte también

Ejemplos de SELECT (Transact-SQL)
Expresiones (Transact-SQL)
SELECT (Transact-SQL)