Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Ponto de extremidade de análise de SQL no Microsoft Fabric e Warehouse no Microsoft Fabric
No Transact-SQL, uma consulta pode começar com a FROM cláusula e colocá-la SELECT após as fontes da tabela. Essa FROMsintaxe -first estabelece as tabelas e colunas disponíveis antes de definir a projeção.
A cláusula final SELECT é opcional. Se você omitir SELECT, a consulta se comporta como se você especificasse SELECT *.
As seguintes afirmações são equivalentes:
FROM dbo.Employee;
FROM dbo.Employee
SELECT *;
FROM-first não altera resultados de consulta nem comportamento de execução. Ele fornece outra forma de criar uma consulta preservando a semântica de uma instrução equivalente SELECTem -first.
FROM-first usa a gramática de fonte-tabela suportada pelo Fabric Data Warehouse e pelo endpoint de análise SQL.
Convenções de sintaxe do 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 uma tabela, visão, função embutida com valor em tabela, função definida pelo usuário com valor em tabela, tabela derivada, tabela unida, tabela pivotada ou tabela não pivotada, com ou sem alias. Múltiplas fontes de tabela podem ser unidas ou separadas por vírgulas.
A ordem das fontes da tabela após a FROM palavra-chave não afeta o conjunto de resultados. Nomes duplicados na FROM cláusula produzem um erro. Nomes de colunas não qualificados duplicados podem exigir qualificação em tabela ou alias.
Consultas que referenciam muitas fontes de tabelas podem exigir mais tempo de compilação e otimização. O número prático de fontes de tabelas depende dos recursos disponíveis e da complexidade da consulta.
table_or_view_name
O nome de uma tabela ou exibição. Use um nome totalmente qualificado no banco de dados de formulários. Esquema. object_name quando você referencia um objeto em outro banco de dados no mesmo endpoint SQL.
[ COMO ] table_alias
Um pseudônimo para uma fonte de tabela. Use um alias por conveniência ou para distinguir fontes em joins, self-joins e subconsultas. Depois de definir um alias, use o alias em vez do nome original da tabela para qualificar as colunas. Tabelas derivadas, funções com valor em tabela, PIVOT, e UNPIVOT podem requerer um alias.
built_in_table_valued_function
Especifica uma função embutida que retorna um conjunto de linhas. Funções suportadas com valores de tabela incluem, mas não se limitam a:
-
OPENJSON, que converte texto JSON em linhas e colunas. -
OPENROWSET(BULK...), que lê arquivos externos e retorna seu conteúdo como linhas. -
STRING_SPLIT, que divide uma sequência delimitada em linhas. -
GENERATE_SERIES, que gera uma série numérica. -
sys.fn_helpcollations, que retorna as colações suportadas pelo motor SQL.
Funções embutidas com valores de tabela podem definir seu próprio argumento e sintaxe da coluna de saída. Por exemplo, OPENJSON pode incluir uma WITH cláusula que define as colunas retornadas.
user_defined_table_valued_function
Especifica uma função definida pelo usuário com valor em tabela. Para sintaxe e comportamento, vejaCREATE FUNCTION (Microsoft Fabric, Azure Synapse Analytics).
derived_table
Uma subconsulta que retorna linhas e atua como entrada para a consulta externa. Uma tabela derivada requer um pseudônimo de tabela. Um construtor de valor de tabela também pode definir uma tabela derivada.
column_alias
Um alias opcional que substitui o nome de uma coluna no resultado de uma tabela derivada ou função com valor de tabela. Se você especificar uma lista de alias de coluna, forneça um alias para cada coluna de saída.
<joined_table>
Especifica uma fonte de tabela produzida pela união de duas ou mais fontes de tabela. Para sintaxe e comportamento completos de junção, veja cláusula FROM mais JOIN, APPLY, PIVOT (Transact-SQL) e Joins.
Para opções suportadas de otimizadores e movimentação de dados, veja Join hints (Transact-SQL).
<Candidate-se>
Especifica uma CROSS APPLY fonte de tabela ou OUTER APPLY ou uma tabela. Para sua sintaxe e comportamento completos, veja Use APPLY.
<pivoted_table>
Especifica uma fonte de tabela transformada pelo PIVOT operador. Para sua sintaxe e comportamento completos, veja Usando PIVOT e UNPIVOT.
<unpivoted_table>
Especifica uma fonte de tabela transformada pelo UNPIVOT operador. Para sua sintaxe e comportamento completos, veja Usando PIVOT e UNPIVOT.
SELECIONE <select_list>
Com FROMa sintaxe -first, a SELECT cláusula é opcional.
SELECT especifica as colunas e expressões retornadas pela consulta. Para a sintaxe completa da projeção, veja a cláusula SELECT (Transact-SQL).
Quando presente, a SELECT cláusula deve aparecer imediatamente após todas as fontes, joins e APPLY operadores da tabela. Se você omitir a SELECT cláusula, <select_list> o padrão é *.
PARA <JSON>
Especifica a formatação JSON para o resultado da consulta. Para sua sintaxe e comportamento completos, veja a cláusula FOR (Transact-SQL).
Observações
-
SELECT-first eFROM-first são ambas suportadas, mas você não pode combiná-las no mesmo bloco de consulta. - Na
FROMsintaxe -first, coloqueSELECTimediatamente após a expressão completa da fonte-tabela, incluindo quaisquer joins,APPLY,PIVOT, ouUNPIVOToperadores. - Um bloco de consulta pode conter apenas uma
FROMcláusula e uma cláusula finalSELECTopcional. - Omitir
SELECTnão contorna as restrições existentes emSELECT *, incluindo restrições em objetos vinculados ao esquema. -
FROMA sintaxe -first pode ser usada em consultas de nível superior, expressões de tabela comuns (CTEs), subconsultas, views, funções de tabela inline e formulários de consulta suportadosINSERT. -
FROM-primeiro a sintaxe não introduz uma novaSELECT INTOforma. -
FROMconsultas -first e equivalentesSELECTretornam o mesmo resultado e apresentam o mesmo comportamento em tempo de execução.
Suporte da plataforma
Tanto FROMas sintaxes de consulta de primeiro quanto SELECTde primeira são suportadas no Fabric Data Warehouse e no endpoint de análise SQL.
FROM-primeira sintaxe de consulta não é suportada no SQL Server, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure ou SQL Database no Fabric.
Examples
A. Especifique SELECT após FROM
O exemplo a seguir declara a fonte da tabela antes das colunas projetadas:
FROM dbo.Employee AS e
SELECT e.empId, e.name, e.dept;
Essa consulta é equivalente a:
SELECT e.empId, e.name, e.dept
FROM dbo.Employee AS e;
B. Omitir SELECT
A consulta a seguir omite a cláusula final:SELECT
FROM dbo.Employee;
A consulta é equivalente a:
SELECT *
FROM dbo.Employee;
C. Filtre e agrupe uma FROMconsulta -first
O exemplo a seguir declara a fonte, especifica a projeção e então filtra e agrupa as linhas:
FROM dbo.Employee AS e
SELECT e.dept, COUNT(*) AS EmployeeCount
WHERE e.managerId IS NOT NULL
GROUP BY e.dept;
D. Use joins antes do SELECT
A cláusula de SELECT final aparece após todas as fontes de tabela e condições de junção:
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. Use FROMa sintaxe em primeiro lugar em um CTE
O exemplo a seguir define e consome uma CTE com FROMblocos de consulta em primeiro lugar:
WITH managers AS (
FROM dbo.Employee
SELECT empId, name, dept
WHERE managerId IS NOT NULL
)
FROM managers
SELECT empId, name, dept;
F. Use FROMa sintaxe -first em uma subconsulta EXISTS
O exemplo a seguir usa FROMa sintaxe -first tanto na consulta externa quanto na 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
);
O omitido SELECT na EXISTS subconsulta tem por padrão .SELECT * O EXISTS predicado testa apenas se a subconsulta retorna uma linha.
G. Use FROMa sintaxe -first com INSERT
O exemplo a seguir insere linhas retornadas por uma FROMconsulta -first:
INSERT INTO dbo.EmployeeArchive
FROM dbo.Employee
SELECT empId, name, dept
WHERE dept = 'Accounting';