- Catégories :
FROM¶
Spécifie les tables, vues ou fonctions de table à utiliser dans une instruction SELECT.
- Voir aussi :
AT | BEFORE , CHANGES , CONNECT BY , JOIN , ASOF JOIN, MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, Utilisation des jointures (ou jonctions), Jointure de données de séries temporelles
Syntaxe¶
SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
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> ) }
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 de détails sur les jointures, voir JOIN et ASOF 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 clauseFROM
. 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 formedb_name.schema_name.object_name
ouschema_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é, lasubquery
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');
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;
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);
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;
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';