Kategorien:

Abfragesyntax

FROM

Gibt die Tabellen, Ansichten oder Tabellenfunktionen an, die in einer SELECT-Anweisung verwendet werden sollen.

Siehe auch:

AT | BEFORE, CHANGES, CONNECT BY, JOIN, ASOF JOIN, MATCH_RECOGNIZE, PIVOT, SAMPLE / TABLESAMPLE, UNPIVOT, Verwenden von Verknüpfungen (Joins), Verknüpfen von Zeitreihendaten

Syntax

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

Wobei:

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

Unterklausel, mit der angegeben wird, dass eine Verknüpfung zwischen zwei oder mehr Tabellen (oder Ansichten oder Tabellenfunktionen) ausgeführt werden soll. Die Verknüpfung kann eine innere Verknüpfung, eine äußere Verknüpfung oder ein anderer Typ von Verknüpfung sein. Die Verknüpfung kann das Schlüsselwort JOIN oder eine alternative unterstützte Verknüpfungssyntax verwenden. Weitere Informationen zu Verknüpfungen finden Sie unter JOIN und ASOF JOIN.

[ AS ] alias_name

Gibt einen Namen für den Objektverweis an, mit dem sie verknüpft ist. Kann mit allen anderen Unterklauseln in der FROM-Klausel verwendet werden.

Aliasnamen müssen den Regeln für Objektbezeichner folgen.

VALUES

Die VALUES-Klausel kann literale Werte oder Ausdrücke angeben, die in der FROM-Klausel verwendet werden sollen. Diese Klausel kann Tabellen- und Spaltenaliasse enthalten (nicht im obigen Diagramm dargestellt). Weitere Informationen zur VALUES-Klausel finden Sie unter VALUES.

Objekt- oder Tabellenfunktionsklausel

[namespace.]object_name

Gibt den Namen des Objekts (Tabelle oder Ansicht) an, das abgefragt werden soll.

Der Objektname kann mit namespace (in Form von db_name.schema_name.object_name oder schema_name.object_name) qualifiziert werden. Ein Namespace ist nicht erforderlich, wenn der Kontext aus der aktuellen Datenbank und dem aktuellen Schema der Sitzung abgeleitet werden kann.

Bei Angabe eines abzufragenden Tabellen-/Ansichtsnamens können Sie auch die folgende optionale Unterklausel angeben:

AT | BEFORE ( object_state )

Optionale Unterklausel, die den zeit- oder ereignisbasierten Verlaufsstatus der Tabelle oder Ansicht für Time Travel angibt. Weitere Details dazu finden Sie unter AT | BEFORE.

MATCH_RECOGNIZE

Optionale Unterklausel zum Suchen von Sequenzen von Zeilen, die mit einem Muster übereinstimmen. Weitere Details dazu finden Sie unter MATCH_RECOGNIZE.

table_function

Gibt entweder eine systemdefinierte oder eine UDF-Tabellenfunktion an, die in der FROM-Klausel aufgerufen werden soll. Weitere Details dazu finden Sie unter Tabellenfunktionen oder Übersicht zu benutzerdefinierten Funktionen.

PIVOT | UNPIVOT

Optionale Unterklausel, die angibt, ob die Ergebnisse der FROM-Klausel pivotiert oder entpivotiert werden sollen. Weitere Details dazu finden Sie unter PIVOT und UNPIVOT.

SAMPLE

Optionale Unterklausel, die angibt, ob Stichproben für Zeilen aus der Tabelle/Ansicht gezogen werden sollen. Weitere Details dazu finden Sie unter SAMPLE / TABLESAMPLE.

Inlineansichtsklausel

[ LATERAL ] ( subquery )

Gibt eine Inlineansicht innerhalb der FROM-Klausel an. Wenn das optionale Schlüsselwort LATERAL verwendet wird, kann die subquery auf Spalten aus anderen Tabellen (oder Ansichten oder Tabellenfunktionen) in der aktuellen FROM-Klausel auf der linken Seite der Inlineansicht verweisen.

Weitere allgemeine Informationen zum Clustering finden Sie unter Verwenden von Unterabfragen.

Klausel für Stagingdateien

@[namespace.]stage_name[/path]

Gibt einen benannten Stagingbereich an, der abgefragt werden soll (oder ~, um auf den Stagingbereich des aktuellen Benutzers zu verweisen, oder %, gefolgt von einem Tabellennamen, um auf den Stagingbereich der angegebenen Tabelle zu verweisen).

Bei Abfrage eines Stagingbereichs können Sie optional auch ein benanntes Dateiformat und ein Muster angeben:

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

Gibt ein benanntes Dateiformatobjekt an, das für den Stagingbereich verwendet werden soll, und ein Muster zum Filtern der Menge von Dateien in der Stagingbereich.

Weitere Informationen zum Abfragen von Stagingbereichen finden Sie unter Abfragen von Daten in Stagingdateien.

Verzeichnistabellen-Klausel

DIRECTORY( @<stage_name> )

Gibt den Name eines Stagingbereichs an, der eine Verzeichnistabelle enthält.

Hierarchisches Abfrageergebnis

hierarchical_query_result

Ein hierarchisches Abfrageergebnis ist das Resultset aus der Verwendung einer Klausel wie CONNECT BY zum Abfragen einer Tabelle mit hierarchischen Daten. Weitere Details dazu finden Sie unter CONNECT BY.

Nutzungshinweise

  • Objektnamen sind SQL-Bezeichner. Bei ihnen wird standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden. Um Groß-/Kleinschreibung zu erhalten, schließen Sie sie in doppelte Anführungszeichen (" ") ein.

Beispiele

Erstellen Sie eine Tabelle, und laden Sie Daten hinein:

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

Hier ist ein einfaches Beispiel für die Verwendung der FROM-Klausel:

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

Dieses Beispiel ist identisch mit dem vorherigen Beispiel, gibt jedoch den Tabellennamen an, der vom Schema für die Tabelle qualifiziert wird:

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

In diesem Beispiel wird eine Inline-Ansicht erstellt und anschließend in der Abfrage verwendet:

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

In diesem Beispiel wird eine Stichprobe von 10 % der Daten in der Tabelle abgefragt:

SELECT *
    FROM sales SAMPLE(10);
Copy

In diesem Beispiel wird eine UDTF (benutzerdefinierte Tabellenfunktion) ausgeführt:

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

In diesen Beispielen wird eine AT-Klausel verwendet, um historische Daten der folgenden angegebenen Zeitpunkte in der Vergangenheit zurückzugeben:

  • Ein Tag früher als die aktuelle Uhrzeit (-86400 = -3600 * 24).

  • Bestimmte Urzeit und bestimmter Tag.

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

Weitere Informationen zu AT finden Sie unter AT | BEFORE.

In diesem Beispiel werden Dateien abgerufen, die sich in einem benannten Stagingbereich befinden:

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

In diesem Beispiel werden alle Metadatenspalten in der Verzeichnistabelle eines Stagingbereichs namens mystage abgerufen:

SELECT * FROM DIRECTORY(@mystage);
Copy

In diesem Beispiel werden die FILE_URL-Spaltenwerte aus einer Verzeichnistabelle für Dateien abgerufen, die größer als 100.000 Bytes sind:

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

Dieses Beispiel ruft die Werte der Spalte FILE_URL aus einer Verzeichnistabelle für Dateien mit kommagetrennten Werten ab:

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