- Categorias:
FROM¶
Especifica as tabelas, exibições ou funções de tabela a serem usadas em uma instrução SELECT.
- Consulte também:
AT | BEFORE , CHANGES , CONNECT BY , JOIN , ASOF JOIN, MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, Como trabalhar com junções, União de dados de série temporal
Sintaxe¶
SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
Onde:
objectReference ::= { [<namespace>.]<object_name> [ AT | BEFORE ( <object_state> ) ] [ CHANGES ( <change_tracking_type> ) ] [ MATCH_RECOGNIZE ] [ PIVOT | UNPIVOT ] [ [ AS ] <alias_name> ] [ SAMPLE ] | <table_function> [ PIVOT | UNPIVOT ] [ [ AS ] <alias_name> ] [ SAMPLE ] | ( VALUES (...) ) [ SAMPLE ] | [ LATERAL ] ( <subquery> ) [ [ AS ] <alias_name> ] | @[<namespace>.]<stage_name>[/<path>] [ ( FILE_FORMAT => <format_name>, PATTERN => '<regex_pattern>' ) ] [ [AS] <alias_name> ] | DIRECTORY( @<stage_name> ) }
JOIN
Subcláusula que especifica a realização de uma junção de duas ou mais tabelas (ou exibições ou funções de tabela). A junção pode ser uma junção interna, uma junção externa ou outro tipo de junção. A junção pode usar a palavra-chave JOIN ou uma sintaxe alternativa de junção suportada. Para obter mais detalhes sobre junções, consulte JOIN e ASOF JOIN.
[ AS ] alias_name
Especifica um nome dado à referência do objeto ao qual está anexado. Pode ser usado com qualquer uma das outras subcláusulas da cláusula FROM.
Os nomes de alias devem seguir as regras de Identificadores de objetos.
VALUES
A cláusula
VALUES
pode especificar valores literais ou expressões a serem usadas na cláusulaFROM
. Esta cláusula pode conter aliases de tabela e coluna (não mostrados no diagrama acima). Para obter mais detalhes sobre a cláusula VALUES, consulte VALUES.
Cláusula de objeto ou função de tabela¶
[namespace.]object_name
Especifica o nome do objeto (tabela ou exibição) a ser consultado.
O nome do objeto pode ser qualificado usando
namespace
(na forma dedb_name.schema_name.object_name
ouschema_name.object_name
). Não é necessário um namespace se o contexto puder ser derivado do banco de dados e esquema atual da sessão.Ao especificar um nome de tabela/exibição para consulta, você também pode especificar a seguinte subcláusula opcional:
AT | BEFORE ( object_state )
Subcláusula opcional que especifica o estado histórico baseado no tempo ou no evento da tabela ou da exibição para o Time Travel. Para obter mais detalhes, consulte AT | BEFORE.
MATCH_RECOGNIZE
Subcláusula opcional para encontrar sequências de linhas que correspondam a um padrão. Para obter mais detalhes, consulte MATCH_RECOGNIZE.
table_function
Especifica uma função de tabela da UDF ou definida pelo sistema para fazer a chamada dentro da cláusula FROM. Para obter mais detalhes, consulte Funções de tabela ou Visão geral das funções definidas pelo usuário.
PIVOT | UNPIVOT
Subcláusula opcional que especifica articular ou não os resultados da cláusula FROM. Para obter mais detalhes, consulte PIVOT e UNPIVOT.
SAMPLE
Subcláusula opcional que especifica as linhas de amostra da tabela/exibição. Para obter mais detalhes, consulte SAMPLE / TABLESAMPLE.
Cláusula de exibição inline¶
[ LATERAL ] ( subquery )
Especifica uma exibição inline dentro da cláusula FROM. Se a palavra-chave opcional
LATERAL
for usada, então asubquery
pode se referir a colunas de outras tabelas (ou exibições ou funções de tabela) que estão na cláusula FROM atual e à esquerda da exibição inline.Para obter mais informações sobre subconsultas em geral, consulte Como trabalhar com subconsultas.
Cláusula de arquivo preparado¶
@[namespace.]stage_name[/path]
Especifica um estágio nomeado a ser consultado (ou
~
para referência ao estágio do usuário atual ou%
seguido por um nome de tabela para referência ao estágio da tabela especificada).Ao consultar um estágio, você também pode, opcionalmente, especificar um formato e um padrão de arquivo nomeado:
( FILE_FORMAT => format_name [ , PATTERN => 'regex_pattern' ] )
Especifica um objeto de formato do arquivo nomeado a ser usado no estágio e um padrão para filtrar o conjunto de arquivos no estágio.
Para obter mais detalhes sobre os estágios da consulta, consulte Consulta de dados em arquivos preparados.
Cláusula de tabela de diretório¶
DIRECTORY( @<stage_name> )
Especifica o nome de um estágio que inclui uma tabela de diretório.
Resultado da consulta hierárquica¶
hierarchical_query_result
Um resultado de consulta hierárquica é o conjunto de resultados a partir do uso de uma cláusula como CONNECT BY para consultar uma tabela de dados hieárquicos. Para obter mais detalhes, consulte CONNECT BY.
Notas de uso¶
Os nomes dos objetos são identificadores SQL. Por padrão, eles diferenciam letras maiúsculas de minúsculas. Para preservar o tipo de letra, coloque-as entre aspas duplas (
" "
).
Exemplos¶
Criar uma tabela e carregar dados nela:
CREATE TABLE ftable1 (retail_price FLOAT, wholesale_cost FLOAT, description VARCHAR); INSERT INTO ftable1 (retail_price, wholesale_cost, description) VALUES (14.00, 6.00, 'bling');
Aqui está um exemplo básico do uso da cláusula FROM:
SELECT description, retail_price, wholesale_cost FROM ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
Este exemplo é idêntico ao exemplo anterior, mas especifica o nome da tabela qualificado pelo esquema para a tabela:
SELECT description, retail_price, wholesale_cost FROM temporary_doc_test.ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
Este exemplo cria uma exibição inline e depois a utiliza na consulta:
SELECT v.profit FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v; +--------+ | PROFIT | |--------| | 8 | +--------+
Este exemplo consulta uma amostra de 10% dos dados da tabela:
SELECT * FROM sales SAMPLE(10);
Este exemplo executa uma UDTF (função de tabela definida pelo usuário):
SELECT * FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));
Estes exemplos usam uma cláusula AT
para retornar dados históricos dos seguintes pontos especificados no passado:
Um dia antes da hora atual (
-86400 = -3600 * 24
).Dia e hora específicos.
SELECT * FROM sales AT(OFFSET => -86400); SELECT * FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);Para obter mais detalhes sobre
AT
, consulte AT | BEFORE.
Este exemplo consulta arquivos localizados em um estágio nomeado:
SELECT v.$1, v.$2, ... FROM @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;
Este exemplo recupera todas as colunas de metadados em uma tabela de diretório para um estágio chamado mystage
:
SELECT * FROM DIRECTORY(@mystage);
Este exemplo recupera os valores da coluna FILE_URL de uma tabela de diretório para arquivos com tamanho superior a 100 K bytes:
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Este exemplo recupera os valores da coluna FILE_URL de uma tabela de diretório para arquivos de valores separados por vírgula:
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';