Catégories :

Syntaxe de requête

FROM

Spécifie les tables, vues ou fonctions de table à utiliser dans une instruction SELECT.

Voir aussi :

AT | BEFORE , CHANGES , CONNECT BY , JOIN , MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, Utilisation des jointures (ou jonctions)

Syntaxe

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

Où :

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

Sous-clause qui spécifie d’effectuer une jointure entre deux ou plusieurs tables (ou vues ou fonctions de table). La jointure peut être une jointure interne, une jointure externe ou un autre type de jointure. La jointure peut utiliser le mot clé JOIN ou une autre syntaxe de jointure prise en charge. Pour plus d’informations sur JOINs, voir JOIN.

[ AS ] alias_name

Spécifie un nom donné à la référence de l’objet auquel il est attaché. Peut être utilisé avec n’importe lequel des autres sous-clauses de la clause FROM.

Les noms d’alias doivent suivre les règles de Identificateurs d’objet.

VALUES

La clause VALUES peut spécifier des valeurs ou expressions littérales à utiliser dans la clause FROM. Cette clause peut contenir des alias de table et de colonne (non montrés dans le diagramme ci-dessus). Pour plus d’informations sur la clause VALUES, voir VALUES.

Clause de fonction d’objet ou de table

[namespace.]object_name

Spécifie le nom de l’objet (table ou vue) interrogé.

Le nom d’objet peut être qualifié en utilisant namespace (sous la forme db_name.schema_name.object_name ou schema_name.object_name). Un espace de noms n’est pas nécessaire si le contexte peut être dérivé de la base de données actuelle et du schéma de la session.

Lorsque vous spécifiez un nom de table/vue à interroger, vous pouvez également spécifier la sous-clause facultative suivante :

AT | BEFORE ( object_state )

Sous-clause facultative qui spécifie l’état historique de la table ou de la vue basé sur le temps ou sur l’événement pour Time Travel. Pour plus de détails, voir AT | BEFORE.

MATCH_RECOGNIZE

Sous-clause facultative permettant de trouver des séquences de lignes qui correspondent à un modèle. Pour plus de détails, voir MATCH_RECOGNIZE.

table_function

Spécifie soit une fonction définie par le système, soit une fonction de table UDF à appeler dans la clause FROM. Pour plus de détails, voir Fonctions de table ou Vue d’ensemble des fonctions définies par l’utilisateur.

PIVOT | UNPIVOT

Sous-clause facultative qui spécifie de faire pivoter ou non les résultats de la clause FROM. Pour plus de détails, voir PIVOT et UNPIVOT.

SAMPLE

Sous-clause facultative qui spécifie d’échantillonner les lignes de la table/vue. Pour plus de détails, voir SAMPLE / TABLESAMPLE.

Clause de vue en ligne

[ LATERAL ] ( subquery )

Spécifie une vue en ligne dans la clause FROM. Si le mot-clé LATERAL facultatif est utilisé, la subquery peut se référer à des colonnes d’autres tables (ou vues ou fonctions de table) qui sont dans la clause FROM actuelle et à gauche de la vue en ligne.

Pour plus d’informations sur les sous-requêtes en général, voir : Utilisation des sous-requêtes.

Clause de fichier mis en zone de préparation

@[namespace.]stage_name[/path]

Le nom d’une zone de préparation nommée (ou ~ faisant référence à la zone de préparation de l’utilisateur actuel ou % suivi d’un nom de table faisant référence à la zone de préparation de la table spécifiée).

Lorsque vous interrogez une zone de préparation, vous pouvez également spécifier un format de fichier nommé et un modèle :

( FILE_FORMAT => format_name [ , PATTERN => 'regex_pattern' ] )

Spécifie un objet de format de fichier nommé à utiliser pour la zone de préparation et un modèle pour filtrer l’ensemble des fichiers de la zone de préparation.

Pour plus d’informations sur les requêtes au niveau des zones de préparation, voir Interrogation des données dans des fichiers mis en zone de préparation.

Clause de tables de répertoire

DIRECTORY( @<stage_name> )

Spécifie le nom d’une zone de préparation qui comprend une table de répertoire.

Résultat de la requête hiérarchique

hierarchical_query_result

Un résultat de requête hiérarchique est le résultat obtenu en utilisant une clause telle que CONNECT BY pour interroger une table de données hiérarchiques. Pour plus de détails, voir CONNECT BY.

Notes sur l’utilisation

  • Les noms d’objets sont des identificateurs SQL. Ils sont insensibles à la casse par défaut. Pour préserver les majuscules et minuscules, placez-les entre guillemets doubles (" ").

Exemples

Créer une table et y charger des données :

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

Voici un exemple de base d’utilisation de la clause FROM :

SELECT description, retail_price, wholesale_cost 
    FROM ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+
Copy

Cet exemple est identique à l’exemple précédent, mais spécifie le nom de table, qualifié par le schéma de la table :

SELECT description, retail_price, wholesale_cost 
    FROM temporary_doc_test.ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+
Copy

Cet exemple crée une vue en ligne et l’utilise ensuite dans la requête :

SELECT v.profit 
    FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v;
+--------+
| PROFIT |
|--------|
|      8 |
+--------+
Copy

Cet exemple interroge un échantillon de 10 % des données de la table :

SELECT *
    FROM sales SAMPLE(10);
Copy

Cet exemple exécute une fonction UDTF (fonction de table définie par l’utilisateur) :

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

Ces exemples utilisent une clause AT pour renvoyer les données historiques des points suivants dans le passé :

  • Un jour avant la date et l’heure actuelle (-86400 = -3600 * 24).

  • Heure et jour spécifiques.

SELECT *
    FROM sales AT(OFFSET => -86400);
SELECT *
    FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);
Copy

Pour plus d’informations sur AT, voir AT | BEFORE.

Cet exemple interroge les fichiers situés dans une zone de préparation nommée :

SELECT
    v.$1, v.$2, ...
  FROM
    @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;
Copy

Cet exemple récupère toutes les colonnes de métadonnées dans une table de répertoire pour une zone de préparation nommée mystage :

SELECT * FROM DIRECTORY(@mystage);
Copy

Cet exemple récupère les valeurs de colonne FILE_URL d’une table de répertoire pour les fichiers d’une taille supérieure à 100 Ko :

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

Cet exemple récupère les valeurs de colonne FILE_URL d’une table de répertoire pour les fichiers de valeurs séparées par des virgules :

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy