DE - SELECT (Transact-SQL)

Se aplica a:Punto de conexión de SQL Analytics en Microsoft Fabric y Warehouse en Microsoft Fabric

En Transact-SQL, una consulta puede comenzar con la FROM cláusula y colocarla SELECT después de las fuentes de la tabla. Esta FROMsintaxis -first establece las tablas y columnas disponibles antes de definir la proyección.

La cláusula final SELECT es opcional. Si omites SELECT, la consulta se comporta como si especificaras SELECT *.

Las siguientes afirmaciones son equivalentes:

FROM dbo.Employee;
FROM dbo.Employee
SELECT *;

FROM-First no cambia los resultados de la consulta ni el comportamiento de ejecución. Proporciona otra forma de crear una consulta preservando la semántica de una sentencia equivalente SELECT-first.

FROM-first utiliza la gramática de la fuente de tabla soportada por Fabric Data Warehouse y el endpoint de analítica SQL.

Convenciones de sintaxis de Transact-SQL

Syntax

FROM { <table_source> [ ,...n ] }
[ SELECT <select_list> ]
[ WHERE <search_condition> ]
[ GROUP BY <group_by_expression> [ ,...n ] ]
[ HAVING <search_condition> ]
[ WINDOW <window_definition> [ ,...n ] ]
[ QUALIFY <search_condition> ]
[ ORDER BY <order_by_expression> [ ASC | DESC ] [ ,...n ] ]
[ FOR <JSON> ]

<table_source> ::=
{
    [ database_name . [ schema_name ] . | schema_name . ]
        table_or_view_name [ [ AS ] table_alias ]
    | built_in_table_valued_function [ [ AS ] table_alias ]
        [ ( column_alias [ ,...n ] ) ]
    | user_defined_table_valued_function [ [ AS ] table_alias ]
        [ ( column_alias [ ,...n ] ) ]
    | derived_table [ [ AS ] table_alias ] [ ( column_alias [ ,...n ] ) ]
    | <joined_table>
    | <apply>
    | <pivoted_table>
    | <unpivoted_table>
}

Argumentos

<table_source>

Especifica una tabla, vista, función incorporada con valor en tabla, función definida por el usuario con valor en tabla, tabla derivada, tabla unida, tabla pivotante o tabla no pivotante, con o sin alias. Múltiples fuentes de tabla pueden unirse o separarse por comas.

El orden de las fuentes de la tabla después de la FROM palabra clave no afecta al conjunto de resultados. Los nombres duplicados en la FROM cláusula producen un error. Los nombres de columnas duplicados no calificados pueden requerir calificación en tablas o alias.

Las consultas que hacen referencia a muchas fuentes de tablas pueden requerir más tiempo de compilación y optimización. El número práctico de fuentes de tablas depende de los recursos disponibles y de la complejidad de la consulta.

table_or_view_name

Nombre de una tabla o una vista. Usa un nombre completamente cualificado en la base de datos de formularios. Esquema. object_name cuando referencias un objeto en otra base de datos en el mismo punto final SQL.

[ COMO ] table_alias

Un alias para una fuente de tabla. Utiliza un alias por comodidad o para distinguir fuentes en uniones, auto-uniones y subconsultas. Después de definir un alias, usa el alias en lugar del nombre original de la tabla para calificar las columnas. Tablas derivadas, funciones con valores en tabla, PIVOT, y UNPIVOT pueden requerir un alias.

built_in_table_valued_function

Especifica una función incorporada que devuelve un conjunto de filas. Las funciones con valores de tabla soportadas incluyen, pero no se limitan a:

  • OPENJSON, que convierte el texto JSON en filas y columnas.
  • OPENROWSET(BULK...), que lee archivos externos y devuelve su contenido como filas.
  • STRING_SPLIT, que divide una cadena delimitada en filas.
  • GENERATE_SERIES, que genera una serie numérica.
  • sys.fn_helpcollations, que devuelve las colaciones soportadas por el motor SQL.

Las funciones con valores de tabla incorporadas pueden definir su propio argumento y sintaxis de columna de salida. Por ejemplo, OPENJSON puede incluir una WITH cláusula que defina las columnas devueltas.

user_defined_table_valued_function

Especifica una función de tabla definida por el usuario. Para sintaxis y comportamiento, véaseCREATE FUNCTION (Microsoft Fabric, Azure Synapse Analytics).

derived_table

Una subconsulta que devuelve filas y actúa como entrada a la consulta externa. Una tabla derivada requiere un alias de tabla. Un constructor de valor de tabla también puede definir una tabla derivada.

column_alias

Un alias opcional que sustituye el nombre de una columna en el resultado de una función derivada con valores en tabla o en tabla. Si especificas una lista de alias de columna, proporciona un alias para cada columna de salida.

<joined_table>

Especifica una fuente de tabla producida al unir dos o más fuentes de tabla. Para la sintaxis y el comportamiento completos de join, véase la cláusula FROM más JOIN, APPLY, PIVOT (Transact-SQL) y Joins.

Para opciones de optimizadores y movimientos de datos compatibles, véase Join hints (Transact-SQL).

<Aplica>

Especifica una CROSS APPLY fuente de tabla o OUTER APPLY . Para su sintaxis y comportamiento completos, véase Usar APLICAR.

<pivoted_table>

Especifica una fuente de tabla transformada por el PIVOT operador. Para su sintaxis y comportamiento completos, véase Uso de PIVOT y UNPIVOT.

<unpivoted_table>

Especifica una fuente de tabla transformada por el UNPIVOT operador. Para su sintaxis y comportamiento completos, véase Uso de PIVOT y UNPIVOT.

SELECCIONAR <select_list>

Con FROMla sintaxis -first, la SELECT cláusula es opcional.

SELECT especifica las columnas y expresiones devueltas por la consulta. Para la sintaxis completa de la proyección, véase la cláusula SELECT (Transact-SQL).

Cuando está presente, la SELECT cláusula debe aparecer inmediatamente después de todas las fuentes, joins y APPLY operadores. Si omites la SELECT cláusula, <select_list> por defecto se aplica a *.

PARA <JSON>

Especifica el formato JSON para el resultado de la consulta. Para su sintaxis y comportamiento completos, véase la cláusula FOR (Transact-SQL).

Remarks

  • SELECT-first y FROM-first son soportadas, pero no puedes combinarlas en el mismo bloque de consulta.
  • En FROMla sintaxis de -first, coloca SELECT inmediatamente después de la expresión completa de la fuente de la tabla, incluyendo cualquier union, APPLY, PIVOT, u UNPIVOT operadores.
  • Un bloque de consulta puede contener solo una FROM cláusula y una cláusula final SELECT opcional.
  • Omitir SELECT no evita las restricciones existentes en SELECT *, incluidas las restricciones en objetos vinculados al esquema.
  • FROMLa sintaxis -first puede usarse en consultas de primer nivel, expresiones de tabla comunes (CTEs), subconsultas, vistas, funciones de valores en tabla en línea y formularios de consulta soportados INSERT .
  • FROM-primero, la sintaxis no introduce una nueva SELECT INTO forma.
  • FROMlas consultas -first y equivalentes SELECT-first devolven el mismo resultado y tienen el mismo comportamiento en tiempo de ejecución.

Compatibilidad con la plataforma

Tanto FROMlas sintaxis de consulta -first como SELECT-first están soportadas en Fabric Data Warehouse y en el endpoint de analítica SQL.

FROMLa sintaxis de la primera consulta no está soportada en SQL Server, Azure SQL Database, Azure SQL Managed Instance ni SQL database en Fabric.

Examples

R. Especifica SELECT después de FROM

El siguiente ejemplo declara la fuente de la tabla antes de las columnas proyectadas:

FROM dbo.Employee AS e
SELECT e.empId, e.name, e.dept;

Esta consulta es equivalente a:

SELECT e.empId, e.name, e.dept
FROM dbo.Employee AS e;

B. Omitir SELECT

La siguiente consulta omite la cláusula de seguimiento SELECT :

FROM dbo.Employee;

La consulta es equivalente a:

SELECT *
FROM dbo.Employee;

C. Filtrar y agrupar una FROMconsulta -first

El siguiente ejemplo declara la fuente, especifica la proyección y luego filtra y agrupa las filas:

FROM dbo.Employee AS e
SELECT e.dept, COUNT(*) AS EmployeeCount
WHERE e.managerId IS NOT NULL
GROUP BY e.dept;

D. Usa los joins antes de SELECT

La cláusula de SELECT seguimiento aparece después de todas las fuentes de la tabla y condiciones de unión:

FROM Sales.SalesOrderHeader AS soh
INNER JOIN Sales.SalesOrderDetail AS sod
    ON soh.SalesOrderID = sod.SalesOrderID
SELECT
    soh.SalesOrderID,
    soh.OrderDate,
    sod.ProductID,
    sod.LineTotal;

E. Uso FROMde la sintaxis en primer lugar en una CTE

El siguiente ejemplo define y consume una CTE con FROMbloques de consulta en -first:

WITH managers AS (
    FROM dbo.Employee
    SELECT empId, name, dept
    WHERE managerId IS NOT NULL
)
FROM managers
SELECT empId, name, dept;

F. Usar FROMla sintaxis -first en una subconsulta EXISTS

El siguiente ejemplo utiliza FROMla sintaxis -first tanto en la consulta externa como en la subconsulta correlacionada:

FROM dbo.Employee AS e
SELECT e.empId, e.name, e.dept
WHERE EXISTS (
    FROM dbo.Employee AS e2
    WHERE e2.dept = e.dept
      AND e2.empId <> e.empId
);

El omitido SELECT en la EXISTS subconsulta se convierte por defecto en SELECT *. El EXISTS predicado solo prueba si la subconsulta devuelve una fila.

G. Usar FROMla sintaxis -first con INSERT

El siguiente ejemplo inserta filas devueltas por una FROMconsulta -first:

INSERT INTO dbo.EmployeeArchive
FROM dbo.Employee
SELECT empId, name, dept
WHERE dept = 'Accounting';