Zum Inhalt springen

„From (SQL)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Tag-Fehler korrigiert
tk k
Zeile 1: Zeile 1:
Die '''FROM'''-Klausel in [[SQL]] definiert die Verwendung einer oder mehrerer Tabellen in einer Abfrage. Als reserviertes Wort im [[SQL#Sprachstandard|SQL-Standard]] lautet die allgemeine Form einer Abfrage:<ref>{{Internetquelle |autor=[[Microsoft]] |url=https://docs.microsoft.com/de-de/sql/t-sql/queries/from-transact-sql?view=sql-server-2017 |titel=From clause in Transact SQL |zugriff=2018-12-03}}</ref><ref>{{Internetquelle |autor=[[Drupal]] | url=https://www.drupal.org/docs/develop/coding-standards/list-of-sql-reserved-words | titel=Reserved Words in SQL |zugriff=2018-12-03}}</ref>
Die '''FROM'''-Klausel in [[SQL]] definiert die Verwendung einer oder mehrerer Tabellen in einer Abfrage. Als reserviertes Wort im [[SQL#Sprachstandard|SQL-Standard]] lautet die allgemeine Form einer Abfrage:<ref>{{Internetquelle |autor=[[Microsoft]] |url=https://docs.microsoft.com/de-de/sql/t-sql/queries/from-transact-sql?view=sql-server-2017 |titel=From clause in Transact SQL |zugriff=2018-12-03}}</ref><ref>{{Internetquelle |autor=[[Drupal]] |url=https://www.drupal.org/docs/develop/coding-standards/list-of-sql-reserved-words |titel=Reserved Words in SQL |zugriff=2018-12-03}}</ref>


'''<code>SELECT</code>''' ''Spaltenname'' '''<code>FROM</code>''' ''Tabellenname'' ['''<code>WHERE</code>''' ''Bedingung'']
'''<code>SELECT</code>''' ''Spaltenname'' '''<code>FROM</code>''' ''Tabellenname'' ['''<code>WHERE</code>''' ''Bedingung'']


Die <code>FROM</code>-Klausel gibt die Tabellen für zu löschende Zeilen innerhalb von Delete-Anweisungen an und definiert die Tabellen für Abfragen in Unterabfragen (Subqueries) von [[Update (SQL)|Update]]-Anweisungen. [[Datenbanktabelle|Tabellen]], [[Sicht (Datenbank)|Sichten]] (Views) oder aber auch Informationsschemata (allgemeine Datenbankinformationen) bilden die Grundlage für die <code>FROM</code>-Klausel.<ref>{{Internetquelle |autor=[[Microsoft]] |url=https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql?view=sql-server-2017 |titel=System Information Schema Views (Transact-SQL)|zugriff=2018-12-03 }}</ref>
Die <code>FROM</code>-Klausel gibt die Tabellen für zu löschende Zeilen innerhalb von Delete-Anweisungen an und definiert die Tabellen für Abfragen in Unterabfragen (Subqueries) von [[Update (SQL)|Update]]-Anweisungen. [[Datenbanktabelle|Tabellen]], [[Sicht (Datenbank)|Sichten]] (Views) oder aber auch Informationsschemata (allgemeine Datenbankinformationen) bilden die Grundlage für die <code>FROM</code>-Klausel.<ref>{{Internetquelle |autor=[[Microsoft]] |url=https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql?view=sql-server-2017 |titel=System Information Schema Views (Transact-SQL) |zugriff=2018-12-03}}</ref>


== Beispiele ==
== Beispiele ==
Gebe nur Zeilen der Tabelle ''meineTabelle'' aus mit Spaltenwerten von ''meineSpalte'' größer als 100:
Gebe nur Zeilen der Tabelle ''meineTabelle'' aus mit Spaltenwerten von ''meineSpalte'' größer als 100:


<source lang="sql">
<syntaxhighlight lang="sql">
SELECT *
SELECT *
FROM meineTabelle
FROM meineTabelle
WHERE meineSpalte > 100
WHERE meineSpalte > 100
</syntaxhighlight>
</source>


Entferne alle Einträge der Tabelle Bäume mit einer Höhe kleiner als 80.
Entferne alle Einträge der Tabelle Bäume mit einer Höhe kleiner als 80.


<source lang="sql">
<syntaxhighlight lang="sql">
DELETE FROM Bäume
DELETE FROM Bäume
WHERE Höhe < 80;
WHERE Höhe < 80;
</syntaxhighlight>
</source>


Verwende die <code>FROM</code>-Klausel in einer Unterabfrage (auch Subquery genannt), um die Bedingungen für die Auswahl von zu verändernden Zeilen zu definieren:
Verwende die <code>FROM</code>-Klausel in einer Unterabfrage (auch Subquery genannt), um die Bedingungen für die Auswahl von zu verändernden Zeilen zu definieren:
Zeile 32: Zeile 32:


== Datenbankoperationen ohne FROM ==
== Datenbankoperationen ohne FROM ==
Manche [[Datenbank#Datenbankmanagementsystem|DBMS]] benötigen die <code>FROM</code>-Klausel nicht, um einen einzelnen Wert oder eine einzelne Zeile auszugeben. In [[Oracle (Datenbanksystem)| Datenbanksystem von Oracle]] funktioniert dies z.&nbsp;B. über die sogenannte DUAL Table:<ref>{{Internetquelle |autor=[[Oracle]] |url=https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries009.htm |titel=Selecting from the DUAL Table |zugriff=2018-12-03}}</ref>
Manche [[Datenbank#Datenbankmanagementsystem|DBMS]] benötigen die <code>FROM</code>-Klausel nicht, um einen einzelnen Wert oder eine einzelne Zeile auszugeben. In [[Oracle (Datenbanksystem)|Datenbanksystem von Oracle]] funktioniert dies z.&nbsp;B. über die sogenannte DUAL Table:<ref>{{Internetquelle |autor=[[Oracle]] |url=https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries009.htm |titel=Selecting from the DUAL Table |zugriff=2018-12-03}}</ref>


<source lang="sql">
<syntaxhighlight lang="sql">
SELECT 3.14 AS Kreiszahl
SELECT 3.14 AS Kreiszahl
</syntaxhighlight>
</source>


Andere Systeme erfordern jedoch auch hier ein [[Schlüsselwort (Programmierung)|Schlüsselwort]] (auch Keyword genannt) um die betreffende Daten auszuwählen:<ref>{{Internetquelle |autor=Infolab [[Stanford University]] |url=http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html |titel=Oracle Dates and Times |zugriff=2018-12-03}}</ref>
Andere Systeme erfordern jedoch auch hier ein [[Schlüsselwort (Programmierung)|Schlüsselwort]] (auch Keyword genannt) um die betreffende Daten auszuwählen:<ref>{{Internetquelle |autor=Infolab [[Stanford University]] |url=http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html |titel=Oracle Dates and Times |zugriff=2018-12-03}}</ref>
<source lang="sql">
<syntaxhighlight lang="sql">
SELECT to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') as "Aktuelle Zeit"
SELECT to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') as "Aktuelle Zeit"
FROM dual;
FROM dual;
</syntaxhighlight>
</source>


In Sybase benötigt die Ausgabe von [[Variable (Programmierung)#Variablen in einer Blockstruktur|globalen Variablen]] wie die verwendete Version keine <code>FROM</code>-Klausel:<ref>{{Internetquelle |autor=[[Sybase]] |url=http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc38151.1510/html/iqrefbb/CACGCGBI.htm |titel=Sybooks Online: Chapter 2: SQL Language Elements: Global variables |zugriff=2018-12-03}}</ref>
In Sybase benötigt die Ausgabe von [[Variable (Programmierung)#Variablen in einer Blockstruktur|globalen Variablen]] wie die verwendete Version keine <code>FROM</code>-Klausel:<ref>{{Internetquelle |autor=[[Sybase]] |url=http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc38151.1510/html/iqrefbb/CACGCGBI.htm |titel=Sybooks Online: Chapter 2: SQL Language Elements: Global variables |zugriff=2018-12-03}}</ref>
<source lang="sql">
<syntaxhighlight lang="sql">
SELECT @@version
SELECT @@version
</syntaxhighlight>
</source>


Eine <code>UPDATE</code>-Anweisung ohne Unterabfrage benötigt keine <code>FROM</code>-Klausel:<ref>{{Internetquelle |autor=[[MySQL]] |url=https://dev.mysql.com/doc/refman/8.0/en/update.html |titel=UPDATE Syntax |zugriff=2018-12-03}}</ref>:
Eine <code>UPDATE</code>-Anweisung ohne Unterabfrage benötigt keine <code>FROM</code>-Klausel:<ref>{{Internetquelle |autor=[[MySQL]] |url=https://dev.mysql.com/doc/refman/8.0/en/update.html |titel=UPDATE Syntax |zugriff=2018-12-03}}</ref>:
<source lang="sql">
<syntaxhighlight lang="sql">
UPDATE t1 SET col1 = col1 + 1
UPDATE t1 SET col1 = col1 + 1
</syntaxhighlight>
</source>


== Siehe auch ==
== Siehe auch ==

Version vom 9. Januar 2019, 00:28 Uhr

Die FROM-Klausel in SQL definiert die Verwendung einer oder mehrerer Tabellen in einer Abfrage. Als reserviertes Wort im SQL-Standard lautet die allgemeine Form einer Abfrage:[1][2]

SELECT Spaltenname FROM Tabellenname [WHERE Bedingung]

Die FROM-Klausel gibt die Tabellen für zu löschende Zeilen innerhalb von Delete-Anweisungen an und definiert die Tabellen für Abfragen in Unterabfragen (Subqueries) von Update-Anweisungen. Tabellen, Sichten (Views) oder aber auch Informationsschemata (allgemeine Datenbankinformationen) bilden die Grundlage für die FROM-Klausel.[3]

Beispiele

Gebe nur Zeilen der Tabelle meineTabelle aus mit Spaltenwerten von meineSpalte größer als 100:

SELECT *
FROM   meineTabelle
WHERE  meineSpalte > 100

Entferne alle Einträge der Tabelle Bäume mit einer Höhe kleiner als 80.

DELETE FROM Bäume
 WHERE Höhe < 80;

Verwende die FROM-Klausel in einer Unterabfrage (auch Subquery genannt), um die Bedingungen für die Auswahl von zu verändernden Zeilen zu definieren:

UPDATE T1
   SET C1 = 2
 WHERE C2 IN ( SELECT C3
                 FROM T2
                WHERE C4 = 0)

Datenbankoperationen ohne FROM

Manche DBMS benötigen die FROM-Klausel nicht, um einen einzelnen Wert oder eine einzelne Zeile auszugeben. In Datenbanksystem von Oracle funktioniert dies z. B. über die sogenannte DUAL Table:[4]

SELECT 3.14 AS Kreiszahl

Andere Systeme erfordern jedoch auch hier ein Schlüsselwort (auch Keyword genannt) um die betreffende Daten auszuwählen:[5]

SELECT to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') as "Aktuelle Zeit"
FROM dual;

In Sybase benötigt die Ausgabe von globalen Variablen wie die verwendete Version keine FROM-Klausel:[6]

SELECT @@version

Eine UPDATE-Anweisung ohne Unterabfrage benötigt keine FROM-Klausel:[7]:

UPDATE t1 SET col1 = col1 + 1

Siehe auch

Einzelnachweise

  1. Microsoft: From clause in Transact SQL. Abgerufen am 3. Dezember 2018.
  2. Drupal: Reserved Words in SQL. Abgerufen am 3. Dezember 2018.
  3. Microsoft: System Information Schema Views (Transact-SQL). Abgerufen am 3. Dezember 2018.
  4. Oracle: Selecting from the DUAL Table. Abgerufen am 3. Dezember 2018.
  5. Infolab Stanford University: Oracle Dates and Times. Abgerufen am 3. Dezember 2018.
  6. Sybase: Sybooks Online: Chapter 2: SQL Language Elements: Global variables. Abgerufen am 3. Dezember 2018.
  7. MySQL: UPDATE Syntax. Abgerufen am 3. Dezember 2018.