Zeilen einer Tabelle anhand einer Bedingung oder mehrerer Bedingungen zu filtern, gehört in der Datenanalyse zum Alltag. In SQL erledigst du das mit der WHERE-Klausel. In diesem Tutorial setzt du sie in unterschiedlichen Szenarien ein.
Als RDBMS (Relational Database Management System) verwendest du PostgreSQL, aber die Syntax unterscheidet sich bei anderen Datenbanksystemen in diesem Kontext kaum. Du beginnst mit der Einrichtung einer PostgreSQL-Datenbank und erstellst manuell eine Tabelle mit Länderdaten. Anschließend führst du mehrere Abfragefilter mit der WHERE-Klausel aus.
Hinweis: Um dem Tutorial zu folgen, solltest du die Grundlagen von SQL und PostgreSQL kennen. Falls nicht, helfen dir diese Ressourcen weiter.
Um dem Tutorial zu folgen, legst du in PostgreSQL eine Tabelle mit Informationen zu Ländern weltweit an. Anhand dieser Tabelle zeigen wir dir, wie die WHERE-Klausel in verschiedenen Situationen funktioniert.
Schritt 1: Neue Datenbank anlegen
Öffne pgAdmin (oder dein bevorzugtes SQL-Interface) und erstelle eine neue PostgreSQL-Datenbank. Du kannst sie z. B. world_data nennen.
Schritt 2: Tabelle erstellen und befüllen
Sobald die Datenbank bereit ist, öffne ein neues SQL-Editorfenster und führe den folgenden SQL-Code aus. Er erstellt eine Tabelle namens countries und fügt Datensätze für verschiedene Kontinente, Unabhängigkeitsjahre und Regionen ein:
Die Tabelle enthält verschiedene Informationen zu insgesamt etwa 16 Ländern weltweit. Die Spalten sind:
code ist der Primärschlüssel der Tabelle und steht für den standardisierten Ländercode
name, also der Name des Landes
continent, zu welchem Kontinent ein Land gehört
region, die geografische Region, in der ein Land liegt
surface_area, die Fläche des Landes
indep_year, das Jahr der Unabhängigkeit
local_name, der Landesname in der Landessprache
gov_form, die Staatsform
capital, die Hauptstadt
cap_long, der Längengrad der Hauptstadt
cap_lat, der Breitengrad der Hauptstadt
Jetzt filtern wir einige Datensätze mit der WHERE-Klausel.
Die SQL-WHERE-Klausel verwenden
Mit der WHERE-Klausel filterst du Datensätze anhand von Text- und Zahlenwerten. Du kannst Werte vergleichen, und dabei stehen dir folgende Vergleichsoperatoren zur Verfügung:
= gleich
<> und != ungleich
< kleiner als
> größer als
<= kleiner oder gleich
>= größer oder gleich
Gemäß SQL-Standard empfiehlt es sich, <> statt != zu verwenden.
Holen wir uns nun den Datensatz des Landes, dessen codeAUS ist. Die Vergleichsspalte ist code, der Vergleichswert ist AUS. Die Abfrage lautet:
Du bekommst insgesamt 3 Länder, die ihre Unabhängigkeit nach 1901 erlangt haben. Achte auf den verwendeten Vergleichsoperator. Die Spalte indep_year ist vom Typ Integer, daher keine Anführungszeichen im Vergleich.
Du kannst mehrere Bedingungen in einer WHERE-Klausel mit AND und OR verknüpfen. Die folgende Abfrage liefert die Länder, where continent = 'Asia' and indep_year > 1900:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901;Bereitgestellt von
Du erhältst Informationen zu insgesamt drei Ländern, die in Asia liegen und nach 1901 unabhängig wurden. Beachte, dass du in der Abfrage sowohl Text- als auch Zahlenwerte vergleichst. Experimentiere gern mit verschiedenen Kombinationen aus AND und OR in der WHERE-Klausel.
Hinweis: Wenn du AND und OR kombinierst, setze die einzelnen Bedingungen in Klammern. Andernfalls kann SQL die Auswertungsreihenfolge nicht eindeutig bestimmen.
Mit der folgenden Abfrage erhältst du insgesamt sechs Länder.
SELECT*FROM countries WHERE(continent ='Europe'AND indep_year >1900)or(continent ='Asia'AND indep_year >1900);Bereitgestellt von
Du kannst in einer WHERE-Klausel sogar mehr als zwei Bedingungen verknüpfen:
SELECT*FROM countries WHERE continent ='Asia'OR indep_year >1900OR surface_area >652090;Bereitgestellt von
Hier erhältst du insgesamt 15 Länder, die entweder in Asia liegen oder nach 1901 unabhängig wurden oder eine Fläche größer als 652090 haben.
Formen wir die Abfrage nun zu einer restriktiveren AND-Variante um:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901AND surface_area >652090;Bereitgestellt von
In diesem Fall erhältst du insgesamt zwei Länder.
Du kannst in einer WHERE-Klausel auch Unterabfragen verwenden. Angenommen, du möchtest das Land mit der größten Fläche abfragen, kennst aber den maximalen Flächenwert nicht. In solchen Fällen hilft dir folgende Abfrage:
SELECT*FROM countries WHERE surface_area in(SELECTMAX(surface_area)FROM countries);Bereitgestellt von
Du solltest den Datensatz von Russia erhalten.
Fazit
Glückwunsch, du hast das Tutorial abgeschlossen. Abfrageergebnisse anhand von Bedingungen zu filtern, ist eine zentrale Kompetenz, und dieses Tutorial war deine Einführung. Wenn du deine SQL-Kompetenzen weiter ausbauen möchtest, schau dir unsere Kurse an (Link unten).
Autor
Sayak Paul
Sayak arbeitet bei Hugging Face, wo er codiert, schreibt und spricht. Seine Zeit verbringt er hauptsächlich mit allem, was mit der Bibliothek der Diffuser zu tun hat. Er ist auch ein DataCamp-Projektleiter und Autor vieler DataCamp-Tutorials. Nach der Arbeit kannst du ihn dabei erwischen, wie er zum x-ten Mal "Suits" auf Netflix guckt.
SQL-WHERE-Klausel: FAQs
Kann ich in einer WHERE-Klausel Text- und Zahlenspalten verwenden?⌄
Ja, du kannst nach Text- (z. B. 'Asia') und Zahlenwerten (z. B. > 1901) filtern. Denk daran: Textwerte müssen in einfache Anführungszeichen gesetzt werden.
Gibt es einen Unterschied zwischen <> und != in SQL?⌄
Beides bedeutet „ungleich“, aber <> ist der Standardoperator in SQL. Manche Datenbanken unterstützen auch !=, für die Kompatibilität ist <> jedoch die bessere Wahl.
Ein umfassendes Einführungs-Tutorial zu Python-Schleifen. Lerne und übe while- und for-Schleifen, verschachtelte Schleifen, die Schlüsselwörter break und continue, die Range-Funktion und vieles mehr!
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Zeilen einer Tabelle anhand einer Bedingung oder mehrerer Bedingungen zu filtern, gehört in der Datenanalyse zum Alltag. In SQL erledigst du das mit der
WHERE-Klausel. In diesem Tutorial setzt du sie in unterschiedlichen Szenarien ein.Als RDBMS (Relational Database Management System) verwendest du PostgreSQL, aber die Syntax unterscheidet sich bei anderen Datenbanksystemen in diesem Kontext kaum. Du beginnst mit der Einrichtung einer PostgreSQL-Datenbank und erstellst manuell eine Tabelle mit Länderdaten. Anschließend führst du mehrere Abfragefilter mit der
WHERE-Klausel aus.Hinweis: Um dem Tutorial zu folgen, solltest du die Grundlagen von SQL und PostgreSQL kennen. Falls nicht, helfen dir diese Ressourcen weiter.
Eine Tabelle in PostgreSQL erstellen
Um dem Tutorial zu folgen, legst du in PostgreSQL eine Tabelle mit Informationen zu Ländern weltweit an. Anhand dieser Tabelle zeigen wir dir, wie die
WHERE-Klausel in verschiedenen Situationen funktioniert.Schritt 1: Neue Datenbank anlegen
Öffne pgAdmin (oder dein bevorzugtes SQL-Interface) und erstelle eine neue PostgreSQL-Datenbank. Du kannst sie z. B.
world_datanennen.Schritt 2: Tabelle erstellen und befüllen
Sobald die Datenbank bereit ist, öffne ein neues SQL-Editorfenster und führe den folgenden SQL-Code aus. Er erstellt eine Tabelle namens
countriesund fügt Datensätze für verschiedene Kontinente, Unabhängigkeitsjahre und Regionen ein:Die Tabelle enthält verschiedene Informationen zu insgesamt etwa 16 Ländern weltweit. Die Spalten sind:
codeist der Primärschlüssel der Tabelle und steht für den standardisierten Ländercodename, also der Name des Landescontinent, zu welchem Kontinent ein Land gehörtregion, die geografische Region, in der ein Land liegtsurface_area, die Fläche des Landesindep_year, das Jahr der Unabhängigkeitlocal_name, der Landesname in der Landessprachegov_form, die Staatsformcapital, die Hauptstadtcap_long, der Längengrad der Hauptstadtcap_lat, der Breitengrad der HauptstadtJetzt filtern wir einige Datensätze mit der
WHERE-Klausel.Die SQL-WHERE-Klausel verwenden
Mit der
WHERE-Klausel filterst du Datensätze anhand von Text- und Zahlenwerten. Du kannst Werte vergleichen, und dabei stehen dir folgende Vergleichsoperatoren zur Verfügung:=gleich<>und!=ungleich<kleiner als>größer als<=kleiner oder gleich>=größer oder gleichGemäß SQL-Standard empfiehlt es sich,
<>statt!=zu verwenden.Holen wir uns nun den Datensatz des Landes, dessen
codeAUSist. Die Vergleichsspalte istcode, der Vergleichswert istAUS. Die Abfrage lautet:Und du erhältst:
Beachte dabei zwei Dinge:
Die
WHERE-Klausel steht immer hinterFROM.In SQL werden Zeichenketten in einfache Anführungszeichen gesetzt.
Schauen wir uns nun einen numerischen Vergleich an. Hole alle Länder, die ihre Unabhängigkeit (
indep_year) nach1901erlangt haben:Du bekommst insgesamt 3 Länder, die ihre Unabhängigkeit nach
1901erlangt haben. Achte auf den verwendeten Vergleichsoperator. Die Spalteindep_yearist vom Typ Integer, daher keine Anführungszeichen im Vergleich.Du kannst mehrere Bedingungen in einer
WHERE-Klausel mitANDundORverknüpfen. Die folgende Abfrage liefert die Länder,where continent = 'Asia' and indep_year > 1900:Du erhältst Informationen zu insgesamt drei Ländern, die in
Asialiegen und nach1901unabhängig wurden. Beachte, dass du in der Abfrage sowohl Text- als auch Zahlenwerte vergleichst. Experimentiere gern mit verschiedenen Kombinationen ausANDundORin derWHERE-Klausel.Hinweis: Wenn du
ANDundORkombinierst, setze die einzelnen Bedingungen in Klammern. Andernfalls kann SQL die Auswertungsreihenfolge nicht eindeutig bestimmen.Mit der folgenden Abfrage erhältst du insgesamt sechs Länder.
Du kannst in einer
WHERE-Klausel sogar mehr als zwei Bedingungen verknüpfen:Hier erhältst du insgesamt 15 Länder, die entweder in
Asialiegen oder nach1901unabhängig wurden oder eine Fläche größer als652090haben.Formen wir die Abfrage nun zu einer restriktiveren
AND-Variante um:In diesem Fall erhältst du insgesamt zwei Länder.
Du kannst in einer
WHERE-Klausel auch Unterabfragen verwenden. Angenommen, du möchtest das Land mit der größten Fläche abfragen, kennst aber den maximalen Flächenwert nicht. In solchen Fällen hilft dir folgende Abfrage:Du solltest den Datensatz von
Russiaerhalten.Fazit
Glückwunsch, du hast das Tutorial abgeschlossen. Abfrageergebnisse anhand von Bedingungen zu filtern, ist eine zentrale Kompetenz, und dieses Tutorial war deine Einführung. Wenn du deine SQL-Kompetenzen weiter ausbauen möchtest, schau dir unsere Kurse an (Link unten).