Zurück zur Artikelliste Artikel
13 Leseminuten

20 SQL WHERE-Übungen für Einsteiger

Inhaltsverzeichnis

In SQL filtert die WHERE-Klausel Daten auf der Grundlage von definierten Bedingungen. Lesen Sie weiter und folgen Sie 20 WHERE-Übungen mit anfängerfreundlichen Erklärungen und Lösungen.

In diesem Artikel werden wir einige unserer SQL WHERE-Übungen wiederholen. Wir beginnen mit der Erläuterung der grundlegenden Syntax und untersuchen dann 20 einsteigerfreundliche Übungen, die aus den unten aufgeführten SQL-Kursen stammen. Diese Übungen decken die wichtigsten Verwendungen der WHERE-Klausel ab und eignen sich hervorragend zum Üben Ihrer SQL-Kenntnisse. In diesen Kursen finden Sie noch mehr:

Jeder Kurs hat separate Abschnitte für verschiedene SQL-Themen und verwendet eine andere Datenbank, damit Sie SQL üben können. Übung macht den Meister und ist der beste Weg, um Ihre SQL-Kenntnisse auf ein neues Niveau zu heben.

Fangen wir also ohne Umschweife an.

SQL WHERE-Klausel - Grundlagen

Die SQL-WHERE-Klausel definiert Bedingungen für die Filterung von Daten. Mit anderen Worten: Sie ermöglicht es, nur die Daten abzurufen, die bestimmte Kriterien erfüllen. Durch Einfügen der WHERE -Klausel in die SELECT, UPDATE, DELETE oder eine andere SQL-Anweisung kann der Ausgabedatensatz so eingegrenzt werden, dass er nur die relevanten Daten enthält.

Das Filtern von Daten ist für eine effiziente Datenverwaltung und -analyse unerlässlich. Sie ermöglicht es, aus großen Datensätzen nur die notwendigen Informationen zu extrahieren, das Volumen der verarbeiteten Daten zu reduzieren und die Abfrageleistung zu verbessern.

Die WHERE -Klausel verwendet verschiedene Werkzeuge zum Vergleichen und Filtern von Daten; dazu gehören Vergleichsoperatoren, Mustervergleiche, um Werte mit bestimmten Mustern zu vergleichen, und logische Operatoren, um mehrere Bedingungen zu kombinieren.

In der Anweisung SELECT steht die Klausel WHERE nach den Klauseln SELECT und FROM:

SELECT id, name, age
FROM persons
WHERE age > 18;

Kurzer Überblick: Die SELECT -Klausel listet die Spalten auf, die in der Ausgabe dargestellt werden sollen, und die FROM -Klausel definiert die Tabelle, aus der die Daten abgefragt werden. Die WHERE Klausel legt die Filterbedingung fest. In diesem Fall werden nur die Personen ausgewählt, deren Alter über 18 ist. Wie Sie die WHERE-Klausel in SQL schreiben, erfahren Sie hier.

Die folgenden Abschnitte enthalten SQL WHERE -Übungen, die die folgenden Anwendungen abdecken:

  • Filtern von numerischen Werten.
  • Filtern von Textwerten.
  • Filtern von booleschen Werten.
  • Filtern von NULL-Werten.
  • Kombinieren mehrerer Bedingungen.

Um Zugriff auf die Übungsumgebung, Beispieldatenbanken und noch mehr WHERE Praxis zu erhalten, empfehle ich Ihnen, sich für den/die vollständigen Kurs(e) anzumelden.

SQL WHERE-Übung mit numerischen Werten

Die Übungen in diesem Abschnitt stammen aus dem Kurs SQL-Praxis: Universität. Hier ist das Diagramm der Universitätsdatenbank, die in den folgenden Übungen verwendet wird:

Dies ist zu kurz, um eine eigene H2-Überschrift zu sein. Ich empfehle, sie der WHERE-Klausel Essentials H2 hinzuzufügen, wenn Sie nicht wollen, dass sie Teil der Überschrift Numerische Übungen H2 ist.

SQL WHERE Praxisübungen für Anfänger

Übung 1: Informationen für einen bestimmten Dozenten anzeigen

Frage: Zeigen Sie alle Daten für den Dozenten an, dessen ID gleich 8 ist.

Lösung:

SELECT *
FROM lecturer
WHERE id = 8;

Erläuterung: Da wir alle Daten zu diesem Dozenten anzeigen wollen, wählen wir alle Spalten der Tabelle lecturer Tabelle. Dies geschieht mit SELECT * FROM lecturer.

Da wir an den Daten für den Dozenten mit der ID 8 interessiert sind, geben wir diese als Bedingung in der WHERE Klausel an: id = 8.

Übung 2: Auswählen von Studenten mit einer Punktzahl von 95 oder besser

Frage: Zeigen Sie die Studenten-ID, die Abschlussnote und die Buchstabennote für jede Kurseinschreibung an, bei der die Abschlussnote des Studenten 95 oder besser war.

Lösung:

SELECT
  student_id,
  final_grade,
  course_letter_grade
FROM course_enrollment
WHERE final_grade >= 95;

Erläuterung: Wir möchten die Teilnehmer-ID, die Abschlussnote und die Briefnote für jeden eingeschriebenen Kurs anzeigen. Wir wählen also nur diese Spalten aus der course_enrollment Tabelle.

Wir wollen nur die Datenzeilen ausgeben, bei denen die Abschlussnote gleich oder größer als 95 ist. Um dies zu erreichen, definieren wir eine Bedingung in der WHERE Klausel als final_grade >= 95.

Übung 3: Alle Schüler außer einem auswählen

Frage: Zeigen Sie alle Daten für Schüler mit einer ID ungleich 1 an.

Lösung:

SELECT *
FROM student
WHERE id != 1;

Erläuterung: Wir wollen wieder alle Daten aus der Tabelle auswählen. student Tabelle auswählen, also verwenden wir das Zeichen Sternchen (*), das für alle verfügbaren Spalten steht.

Da wir die Daten aller Studenten mit Ausnahme desjenigen mit der ID 1 anzeigen wollen, definieren wir in der WHERE Klausel die Bedingung, dass die ID nicht gleich 1 ist: id != 1.

Übung 4: Auflisten aller Kurse, die weniger als 3 ECTS wert sind

Frage: Zeigen Sie alle Kurse mit weniger als 3 ECTS-Punkten an. Zeigen Sie zwei Spalten an: title und ects_points.

Lösung:

SELECT
  title,
  ects_points
FROM course
WHERE ects_points < 3;

Erläuterung: Wir wählen den Titel des Kurses und den Wert des Kurses in ECTS-Punkten aus der course Tabelle. Um nur Kurse mit einem Wert von weniger als 3 ECTS-Punkten anzuzeigen, definieren wir die Bedingung der WHERE -Klausel als ects_points < 3.

SQL WHERE-Übungen mit Textwerten

Die Übungen in diesem Abschnitt stammen aus dem Kurs SQL-Praxis: Store. Hier ist das Diagramm der Store-Datenbank :

SQL WHERE Praxisübungen für Anfänger

Übung 5: Eine Beschreibung der Produktkategorie finden

Frage: Finden Sie die Beschreibung für die Kategorie mit dem Namen "Alkohol".

Lösung:

SELECT description
FROM category
WHERE name = 'Alcohol';

Erläuterung: Wir wollen die Beschreibung einer Produktkategorie anzeigen, also wählen wir die Spalte description aus der Tabelle category Tabelle. Da wir an der Beschreibung der Kategorie Alkohol interessiert sind, definieren wir die Bedingung in der WHERE Klausel als name = 'Alcohol'.

Beachten Sie, dass String-Literale ("Alkohol") in SQL in einfache Anführungszeichen (') eingeschlossen werden müssen.

Übung 6: Auflisten aller Kunden, deren E-Mail mit dem Muster übereinstimmt

Frage: Zeigen Sie alle Daten für Kunden an, deren E-Mails mit ".com" enden.

Lösung:

SELECT *
FROM customer
WHERE contact_email LIKE '%.com';

Erläuterung: Hier wählen wir alle Kunden aus der Tabelle customer Tabelle.

Wir wollen nur die Kunden auflisten, deren E-Mail-Adresse mit '.com' endet. Um dies zu erreichen, verwenden wir einen Mustervergleich. In der Klausel WHERE definieren wir eine Bedingung als contact_email LIKE '%.com'. Beim SQL-Mustervergleich steht das Zeichen % für eine beliebige Folge von Zeichen.

Der Operator LIKE wird verwendet, um seinen linken Operanden (in der Regel der Spaltenwert) mit seinem rechten Operanden (dem abzugleichenden Muster) zu vergleichen. Wenn der Wert mit dem Muster übereinstimmt, ist die Bedingung erfüllt, andernfalls schlägt sie fehl.

Mehr über die Verwendung von LIKE in SQL erfahren Sie hier.

Übung 7: Mitarbeiter finden, deren Nachname mit dem Muster übereinstimmt

Frage: Sie erinnern sich nicht mehr genau an den Nachnamen des Mitarbeiters. War es Mixer, Fixer, Bixer oder etwas anderes? Zeigen Sie die Daten aller Mitarbeiter an, deren Nachname mit einem Buchstaben beginnt und von 'ixer' gefolgt wird.

Lösung:

SELECT *
FROM employee
WHERE last_name LIKE '_ixer';

Erläuterung: Wir wählen alle Spalten aus der employee Tabelle.

Da wir die Mitarbeiter finden wollen, deren Nachname mit 'ixer' endet, verwenden wir wieder den Mustervergleich. In der Klausel WHERE definieren wir die Bedingung als last_name LIKE '_ixer'. Das Zeichen _ steht für ein Zeichen.

Übung 8: Auflisten aller Produkte, deren Name einen Bindestrich enthält

Frage: Zeigen Sie alle Daten für Produkte an, deren Name einen Bindestrich enthält (-).

Lösung:

SELECT *
FROM product
WHERE product_name LIKE '%-%';

Erläuterung: Wir wählen alle Spalten der Tabelle product Tabelle. In der WHERE Klausel definieren wir die Bedingung als product_name LIKE '%-%'. Das Zeichen % steht für eine beliebige Folge oder Anzahl von Zeichen.

WHERE-Übungen mit booleschen Werten

Die Übungen in diesem Abschnitt stammen aus dem Kurs SQL-Praxis: Universität. Hier sehen Sie das Diagramm der Universitätsdatenbank:

SQL WHERE Praxisübungen für Anfänger

Übung 9: Auflisten aller Kurse, die mit einer Abschlussprüfung enden

Frage: Zeigen Sie alle Daten für Kurse an, die mit einer Abschlussprüfung enden (Spalte has_exam). Beachten Sie, dass die Spalte has_exam boolesche Werte speichert (true oder false).

Lösung:

SELECT *
FROM course
WHERE has_exam IS TRUE;

Erläuterung: Wir selektieren alle Spalten aus der course Tabelle.

Da wir nur die Kurse auflisten wollen, die mit einer Abschlussprüfung enden, definieren wir die Bedingung WHERE als has_exam IS TRUE.

Übung 10: Alle Kurse auflisten, die keine Abschlussarbeit haben

Frage: Zeigen Sie alle Daten für Kurse an, die keine Abschlussarbeit haben (Spalte has_project). Beachten Sie, dass die Spalte has_project boolesche Werte speichert (true oder false).

Lösung:

SELECT *
FROM course
WHERE has_project IS FALSE;

Erläuterung: Wir wählen wieder alle Spalten aus der course Tabelle. Diesmal wollen wir alle Kurse auflisten, die kein Abschlussprojekt haben. Wir definieren die Bedingung der WHERE Klausel als has_project IS FALSE.

Übung 11: Alle Schüler auswählen, die ihre Abschlussprüfung bestanden haben

Frage: Zeigen Sie die IDs aller Studenten an, die ihre Abschlussprüfung bestanden haben. Fügen Sie die Spalte passed in Ihre Ergebnisse ein. Beachten Sie, dass die Spalte "bestanden" boolesche Werte speichert (true oder false).

Lösung:

SELECT
  student_id,
  passed
FROM course_enrollment
WHERE passed IS TRUE;

Erläuterung: Hier wollen wir die Spalte mit den Studenten-IDs und die Spalte mit der Information, ob der Student seine Abschlussprüfung bestanden hat, anzeigen. Wir wählen diese Spalten aus der Tabelle course_enrollment Tabelle.

In der WHERE Klausel definieren wir die Bedingung passed IS TRUE, um nur die Studenten zu filtern, die ihre Abschlussprüfung bestanden haben.

Übung 12: Auswählen von Studenten, die ihre Abschlussprüfungen nicht bestanden haben

Frage: Zeigen Sie die IDs und Abschlussnoten aller Studenten an, die ihre Abschlussprüfung nicht bestanden haben. Denken Sie daran, dass die Spalte passed boolesche Werte speichert (true oder false).

Lösung:

SELECT
  student_id,
  final_grade
FROM course_enrollment
WHERE passed IS FALSE;

Erläuterung: Hier wollen wir die Spalten anzeigen, die die IDs der Schüler und die Abschlussnote enthalten. Wir wählen diese Spalten aus der Tabelle course_enrollment Tabelle. In der WHERE Klausel definieren wir die Bedingung passed IS FALSE, um nur die Studenten zu filtern, die ihre Abschlussprüfung nicht bestanden haben.

WHERE-Übung mit NULL-Werten

Die Übungen in diesem Abschnitt stammen aus dem Kurs SQL-Praxis: Store. Hier sehen Sie das Diagramm der Speicherdatenbank:

SQL WHERE Praxisübungen für Anfänger

Übung 13: Kategorien ohne Beschreibungen auswählen

Frage: Zeigen Sie alle Kategorien an, die keine Beschreibung haben.

Lösung:

SELECT *
FROM category
WHERE description IS NULL;

Erläuterung: Wir selektieren alle Spalten der Tabelle category Tabelle, die Produktkategorien speichert.

Da wir nur die Kategorien auflisten wollen, die keine Beschreibung haben, müssen wir die Bedingung WHERE description IS NULL angeben; NULL bedeutet, dass es keinen Wert in dieser Spalte gibt.

Vielleicht fragen Sie sich, warum wir IS NULL anstelle von = NULL verwenden. Das liegt daran, dass NULL für keinen Wert steht; wir können nicht prüfen, ob der Wert gleich NULL ist, weil es keinen Wert gibt, den wir vergleichen können. Mit IS NULL können wir prüfen, ob ein Wert vorhanden ist (oder nicht).

Übung 14: Alle Kunden mit einer Firma finden

Frage: Zeige alle Daten von Kunden an, deren Firmenname nicht NULL ist.

Lösung:

SELECT *
FROM customer
WHERE company_name IS NOT NULL;

Erläuterung: Wir selektieren alle Spalten aus der customer Tabelle. Da wir alle Kunden auflisten wollen, die mit einer Firma verbunden sind, definieren wir die Bedingung der WHERE Klausel als company_name IS NOT NULL. Dies ist ziemlich selbsterklärend, da es das ist, was wir in einfachem Englisch sagen würden.

Übung 15: Käufe mit einer unbekannten Adresse finden

Frage: Zeigen Sie die Kauf-ID, die Kunden-ID und die Mitarbeiter-ID für Käufe mit einer unbekannten Lieferadresse an.

Lösung:

SELECT
  purchase_id,
  customer_id,
  employee_id
FROM purchase
WHERE ship_address IS NULL;

Erläuterung: Wir wollen die Kauf-ID, die Kunden-ID und die Mitarbeiter-ID anzeigen, also wählen wir diese Spalten aus der Tabelle purchase Tabelle.

Als nächstes wollen wir nur die Einkäufe mit einer unbekannten Lieferadresse auflisten, was dem Wert NULL entspricht. Die Bedingung der WHERE -Klausel lautet also ship_address IS NULL.

Übung 16: Auflisten aller übergeordneten Kategorien

Frage: Zeigen Sie die Namen aller übergeordneten Kategorien an, d. h. der Kategorien, die keine übergeordnete Kategorie haben.

Lösung:

SELECT name
FROM category
WHERE parent_category_id IS NULL;

Erläuterung: Wir wollen die Namen der Kategorien anzeigen, also wählen wir die Spalte name aus der Kategorietabelle aus.

Um nur die übergeordneten Kategorien auszuwählen, definieren wir die WHERE-Bedingung als parent_category_id IS NULL. Dies entspricht der Anweisung, dass übergeordnete Kategorien diejenigen sind, denen keine übergeordnete Kategorie zugeordnet ist.

Verwendung von WHERE mit mehreren Filterbedingungen

Die Übungen in diesem Abschnitt stammen aus dem Kurs SQL-Praxis: Blog. Hier ist das Datenbankdiagramm:

SQL WHERE Praxisübungen für Anfänger

Übung 17: Alle Artikel vom März 2020 auswählen

Frage: Zeigen Sie die URLs und die Titel aller Artikel (die Spalten url und title ) an, deren Veröffentlichungsdatum im März 2020 liegt.

Lösung:

SELECT
  url,
  title
FROM article
WHERE publication_date >= '2020-03-01' 
AND publication_date < '2020-04-01';

Erläuterung: Wir wollen die URLs und die Titel der Artikel anzeigen, also wählen wir die entsprechenden Spalten aus der article Tabelle.

Da wir uns nur für die Artikel ab März 2020 interessieren, haben wir die Bedingung WHERE definiert, um sicherzustellen, dass jeder ausgewählte Artikel am oder nach dem 1. März 2020t und vor dem 1. April 2020 veröffentlicht wurde. Wir verwenden den logischen Operator AND, um diese Bedingungen zu verknüpfen: publication_date >= '2020-03-01' AND publication_date < '2020-04-01'.

Datumsangaben werden in der Regel in speziellen Datentypen wie DATE, DATETIME oder TIMESTAMP gespeichert. Um eine Datumsspalte mit einem bestimmten Datumswert zu vergleichen, verwenden wir Standardvergleichsoperatoren wie =, <, >, <=, >= oder BETWEEN. Das Datumsformat in SQL ist in der Regel YYYY-MM-DD, was für Jahr, Monat und Tag steht. Datumsteilwerte werden durch Bindestriche getrennt.

Beachten Sie, dass Sie Datumsvergleichsliterale in einfache Anführungszeichen einschließen müssen (publication_date >= '2020-03-01').

Übung 18: Finden Sie die Besucherzahlen im Juni für einen bestimmten Artikel

Frage: Finden Sie die Besucherzahlen für den Artikel '/blog/puppy-training-techniques/' im Juni 2020. Geben Sie die visit_date und die Anzahl der Aufrufe an diesem Tag an.

Lösung:

SELECT 
  visit_date,
  views
FROM article_traffic
WHERE url = '/blog/puppy-training-techniques/'
AND visit_date >= '2020-06-01' 
AND visit_date < '2020-07-01';

Erläuterung: Wir wählen das Datum des Besuchs und die Anzahl der Aufrufe pro Tag aus der article_traffic Tabelle.

Wir wollen die Zugriffe auf einen bestimmten Artikel anzeigen. Daher filtern wir diesen Artikel anhand seiner URL: url = '/blog/puppy-training-techniques/'. Beachten Sie die einfachen Anführungszeichen um den Vergleichswert.

Da wir uns für den Datenverkehr im Juni 2020 interessieren, legen wir zwei weitere WHERE Bedingungen für die Spalte visit_date fest. Diese geben nur Verkehrsinformationen aus dem Juni zurück: visit_date >= '2020-06-01' AND visit_date < '2020-07-01'.

Diesmal umfasst die Klausel WHERE drei Bedingungen, die alle mit den logischen Operatoren AND kombiniert werden.

Übung 19: Auflisten von Artikeln für einen Autor und eine Kategorie

Frage: Geben Sie die URL aller Artikel von Lewis Goodwin (Autor-ID = 16) entweder aus Kategorie 3 ("Hundegesundheit") oder aus Kategorie 6 ("Geschenkideen für Hunde") zurück.

Lösung:

SELECT url
FROM article
WHERE author_id = 16
AND (article_category_id = 3 OR article_category_id = 6);

Erläuterung: Wir wollen die URL von bestimmten Artikeln aus der article Tabelle anzeigen.

Zunächst sollen die Artikel aufgelistet werden, die von dem Autor mit der ID 16 geschrieben wurden. Dies ist die erste Bedingung der WHERE Klausel: author_id = 16.

Außerdem möchten wir nur Artikel der Kategorie 3 oder 6 auflisten. Wir müssen eine zusammengesetzte Bedingung mit dem logischen Operator OR erstellen und sie in Klammern setzen: (article_category_id = 3 OR article_category_id = 6).

Schließlich kombinieren wir diese beiden Bedingungen mit dem logischen Operator AND.

Übung 20: Spezifische Artikelverkehrsdaten anzeigen

Frage: Geben Sie alle Artikel-Traffic-Daten am 1. Dezember 2020 zurück, bei denen die Anzahl der Aufrufe zwischen 50 und einschließlich 100 liegt (d.h. 50 <= Aufrufe <= 100).

Lösung:

SELECT *
FROM article_traffic
WHERE views <= 100
AND views >= 50
AND visit_date = '2020-12-01';

Erläuterung: Wir wählen alle Spalten aus der article_traffic Tabelle.

Wir möchten die Verkehrsdaten für Artikel mit einer Anzahl von 50 bis 100 Aufrufen anzeigen, also definieren wir die kombinierte Bedingung der WHERE Klausel als views <= 100 AND views >= 50.

Da wir an den Daten ab dem 1. Dezember 2020 interessiert sind, definieren wir eine weitere WHERE Klauselbedingung: visit_date = '2020-12-01'.

Query On mit SQL WHERE Praxis!

In diesem Artikel wurden alle Grundlagen der SQL-Klausel WHERE vorgestellt. Die praktischen Übungen behandelten das Filtern von numerischen, Text-, booleschen und NULL-Werten sowie die Kombination mehrerer Bedingungen für komplexere Filteroptionen. Weitere Artikel mit SQL-Übungsbeispielen finden Sie hier.

Alle diese Kurse sind in unserem SQL-Praxis Track verfügbar, wo Sie noch mehr SQL-Praxis finden. Für die ultimative Praxisoption bietet Ihnen unser Alle für immer SQL-Paket lebenslangen Zugang zu allen unseren aktuellen und zukünftigen Kursen mit einem einzigen Kauf.

Übung macht den Meister! Viel Spaß auf Ihrer SQL-Reise!