Categorias:

Sintaxe de consulta

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 , MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, Como trabalhar com junções

Sintaxe

SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
Copy

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> )
   }
Copy
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 JOINs, consulte 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áusula FROM. 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 de db_name.schema_name.object_name ou schema_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 a subquery 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');
Copy

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 |
+-------------+--------------+----------------+
Copy

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 |
+-------------+--------------+----------------+
Copy

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 |
+--------+
Copy

Este exemplo consulta uma amostra de 10% dos dados da tabela:

SELECT *
    FROM sales SAMPLE(10);
Copy

Este exemplo executa uma UDTF (função de tabela definida pelo usuário):

SELECT *
    FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));
Copy

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);
Copy

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;
Copy

Este exemplo recupera todas as colunas de metadados em uma tabela de diretório para um estágio chamado mystage:

SELECT * FROM DIRECTORY(@mystage);
Copy

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;
Copy

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';
Copy