Weiter zum Inhalt

Einführung in die WHERE-Klausel in SQL

In diesem Tutorial lernst du, wie du Zeilen in SQL mit der WHERE-Klausel filterst.
Aktualisiert 18. Sept. 2026  · 7 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

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_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:

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

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 code AUS ist. Die Vergleichsspalte ist code, der Vergleichswert ist AUS. Die Abfrage lautet:

SELECT * FROM countries WHERE code = 'AUS';

Und du erhältst:

Beachte dabei zwei Dinge:

  • Die WHERE-Klausel steht immer hinter FROM.

  • 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) nach 1901 erlangt haben:

SELECT * FROM countries WHERE indep_year > 1901;

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;

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);

Du kannst in einer WHERE-Klausel sogar mehr als zwei Bedingungen verknüpfen:

SELECT * FROM countries WHERE continent = 'Asia' OR indep_year > 1900 OR surface_area > 652090;

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 > 1901 AND surface_area > 652090;

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 (SELECT MAX(surface_area) FROM countries);

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).

Werde SQL-zertifiziert

Beweise mit einer Zertifizierung, dass deine SQL-Kenntnisse für den Job geeignet sind.
Meine Karriere Ankurbeln

Sayak Paul's photo
Author
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.

Wie filtere ich Datensätze mit NULL-Werten?

Verwende IS NULL oder IS NOT NULL. Zum Beispiel:

SELECT * FROM countries WHERE indep_year IS NULL;

Kann ich in einer WHERE-Klausel Unterabfragen nutzen?

Ja, du kannst Unterabfragen verwenden, um eine Spalte mit dem Ergebnis einer anderen Abfrage zu vergleichen. Zum Beispiel:

SELECT * FROM countries WHERE surface_area = (SELECT MAX(surface_area) FROM countries);

Steht die WHERE-Klausel vor oder nach FROM?

Die WHERE-Klausel steht immer nach der FROM-Klausel und vor Klauseln wie GROUP BY oder ORDER BY.

Kann ich WHERE mit JOINs verwenden?

Auf jeden Fall. Du kannst die WHERE-Klausel nach einem JOIN anwenden, um das kombinierte Ergebnis zu filtern.

Themen
Datenanalyse
Datenwissenschaft
SQL

SQL-Kurse

Kurs

Abfrageleistung in PostgreSQL verbessern

4 Std.
14K
Dieser Kurs zeigt dir praxisnah, wie du besonders schnelle PostgreSQL-Abfragen aufbaust.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow