SELECT (cláusula de Transact-SQL)

Especifica las columnas que la consulta debe devolver.

Icono de vínculo a temasConvenciones 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 ] 

Argumentos

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

  • DISTINCT
    Especifica que el conjunto de resultados sólo 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 sólo devolverá un primer conjunto o porcentaje de filas especificado. expression puede ser un número o un porcentaje de 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 seleccionarán 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 impedir 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 AdventureWorks 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 uno o varios operadores o una subconsulta.

  • $IDENTITY
    Devuelve la columna de identidad. Para obtener más información, vea IDENTITY (propiedad de 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 una columna que se va a devolver y que tiene un tipo CLR (Common Language Runtime) definido por el usuario.

    [!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, una propiedad o un campo de un tipo definido por el usuario CLR, debe disponer de permiso EXECUTE en 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 utiliza uno o varios 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 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 AdventureWorks;

    GO

    SELECT AVG(UnitPrice) AS 'Average Price'

    FROM Sales.SalesOrderDetail;

    column_alias se puede utilizar 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 la consulta forma parte de una instrucción DECLARE CURSOR, en la cláusula FOR UPDATE no se puede utilizar column_alias.

Notas

La longitud de los datos devueltos para 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 SQL Server Database Engine (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.