FROM-Klausel

Die FROM-Klausel ist eine der beiden obligatorischen Klauseln der SELECT-Anweisung der Data Query Language des SQL-Standards. In ihr wird angegeben, aus welchen Tabellen? bzw. Sichten die zu selektierenden Daten stammen. Es sind eine oder mehrere Tabellen/Sichten oder Unterabfragen? zulässig, die durch ein Komma oder einen Join-Ausdruck verknüpft werden. Die Schachtelungstiefe von Unteranfragen? ist beliebig.

Syntax der FROM-Klausel:

  <FROM Klausel> ::= FROM <Tabellenreferenz>

  <Tabellenreferenz> ::=
            { Tabellenname | Sichtname } [Abkürzung] | (<Unterabfrage?>) Abkürzung | <Join-Tabelle>  
         [ ,{ Tabellenname | Sichtname } [Abkürzung] | (<Unterabfrage?>) Abkürzung | <Join-Tabelle> ]...

Anmerkungen:

  • Im einfachsten Fall besteht die FROM-Klausel aus Schlüsselwort FROM und einem Tabellennamen.
  • Es ist auch möglich, in der FROM-Klausel eine SELECT-Anweisung (Unteranfrage) anstelle des Tabellenamens zu verwenden. Man spricht dann von einer dynamischen-Sicht.
  • Es können aber auch mehrere Tabellen und/oder Unteranfragen, durch Kommas getrennt, aufgelistet werden.
  • Falls mehrere Tabellen/Unteranfragen vorkommen, die gleiche Spaltennamen haben, ist es notwendig, Abkürzungen oder den ausgeschrieben Tabellenname zu verwenden. Diese Abkürzungen gehen als Referenzierungen mit in den Spaltenausdruck der SELECT-Klausel ein.
  • Eine neuere Entwicklung ist die Verwendung des JOIN-SQL-Operators in der FROM-Klausel.
  • Werden in der FROM-Klausel nur Tabellen/Unteranfragen aufgelistet, ohne JOIN-Operatoren und ohne verknüpfende WHERE-Bedingung, so wird zwischen den Tabellen/Unteranfragen ein kartesisches Produkt ausgeführt.

Beispiele

Welche Kunden haben Waren seit 2013 bestellt?

  SELECT k.* 
    FROM Kunden k, Auftragspositionen a 
   WHERE a.Bestellt_am >= TO_DATE('01012013','DDMMRRRR' 
     AND k.Knr = a.Knr));

  SELECT k.* 
    FROM Kunden k, (SELECT * FROM Auftragspositionen WHERE Bestellt_am >= TO_DATE('01012013','DDMMRRRR') ) a
     AND k.Knr = a.Knr));

Für welche Artikel liegt mindestens ein Auftrag vor?

    SELECT DISTINCT a.TNr, a.Bezeichnung
    FROM Artikel a
    WHERE EXISTS
          (SELECT * FROM Auftragspositionen b 
           WHERE  a.TNr = b.TNr);

Quellen:

  • Quellen/Standards in http://www.wiscorp.com/SQLStandards.html und http://www.jcc.com/sql.htm
  • INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • Adams, Ralf: "SQL - Eine Einführung mit vertiefenden Exkursen", Hanser, München, 2012, ISBN 978-3-446-43200-0
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
  • Sieben, Jürgen: "Oracle® SQL - Das umfassende Handbuch", Galileo Press, 2012, ISBN 978-3-8362-1875-7
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: SQL, F