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 , PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT

Syntaxe

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

Où :

objectReference ::=
   {
      [<namespace>.]<object_name>
           [ AT | BEFORE ( <object_state> ) ]
           [ CHANGES ( <change_tracking_type> ) ]
           [ 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> ]
   }
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 ] nom_alias

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

[espace_noms.]nom_objet

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

Le nom d’objet peut être qualifié en utilisant espace_noms (sous la forme nom_bd.nom_schéma.nom_objet ou nom_schéma.nom_objet). 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 ( état_objet )

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.

fonction_table

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 Fonctions définies par l’utilisateur (UDFs).

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 ] ( sous-requête )

Spécifie une vue en ligne dans la clause FROM. Si le mot-clé LATERAL facultatif est utilisé, la sous-requête 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

@[espace_noms.]nom_zone_préparation[/chemin]

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 => nom_format [ , PATTERN => 'modèle_regex' ] )

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.

Résultat de la requête hiérarchique

résultat_requête_hiérarchique

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

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

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

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

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

SELECT *
    FROM sales SAMPLE(10);

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

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

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

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;