Zurück zur Artikelliste Artikel
10 Leseminuten

10 SQL-Übungen für Anfänger mit Lösungen

Lösen Sie diese zehn SQL-Übungsaufgaben und testen Sie, wo Sie mit Ihrem SQL-Wissen stehen!

In diesem Artikel dreht sich alles um SQL-Übungen. Das ist der beste Weg, um SQL zu lernen. Wir zeigen Ihnen zehn SQL-Übungsaufgaben, bei denen Sie wesentliche SQL-Konzepte anwenden müssen. Wenn Sie ein SQL-Neuling sind, brauchen Sie sich keine Sorgen zu machen - diese Beispiele sind für Anfänger gedacht.

Nutzen Sie sie als Übung oder als Möglichkeit, neue SQL-Konzepte zu lernen. Für mehr theoretischen Hintergrund und (noch mehr!) Übungen gibt es unseren interaktiven SQL für Anfänger Kurs. Hier lernen Sie, wie Sie Daten aus einer oder mehreren Tabellen auswählen, Daten aggregieren und gruppieren, Unterabfragen schreiben und Mengenoperationen verwenden. Der Kurs umfasst 129 interaktive Übungen, so dass es an Gelegenheiten zum Üben von SQL nicht mangelt, vor allem, wenn Sie einige der 12 Möglichkeiten, SQL online zu lernen, dazu nehmen.

Apropos Praxis: Beginnen wir mit unseren Übungen!

Der Datensatz

Die Frage ist immer, wo man Daten zum Üben von SQL findet. Wir werden unseren Datensatz für alle Übungen verwenden. Sie brauchen sich aber nicht darauf zu beschränken - Sie können auch andere kostenlose Online-Datensätze zum Üben von SQL finden.

Unser Datensatz besteht aus zwei Tabellen.

Die Tabelle distribution_companies listet die Filmverleihfirmen mit den folgenden Spalten auf:

  • id - Die ID der Verleihfirma. Dies ist der Primärschlüssel der Tabelle.
  • company_name - Der Name der Verleihfirma.

Die Tabelle ist unten abgebildet.

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

Die zweite Tabelle lautet movies. Dies sind die Spalten:

  • id - Die ID des Films. Dies ist der Primärschlüssel der Tabelle.
  • movie_title - Der Filmtitel.
  • imdb_rating - Die Filmbewertung auf IMDb.
  • year_released - Das Jahr, in dem der Film veröffentlicht wurde.
  • budget - Das Budget des Films in Millionen von Dollar.
  • box_office - Die Einnahmen des Films in Millionen von Dollar.
  • distribution_company_id - Die ID der Verleihfirma, die sich auf die Tabelle distribution_companies bezieht (Fremdschlüssel).
  • language - Die im Film gesprochene(n) Sprache(n).

Die Tabelle ist unten abgebildet.

idmovie_titleimdb_ratingyear_releasedbudgetbox_officedistribution_company_idlanguage
1The Shawshank Redemption9.2199425.0073.301English
2The Godfather9.219727.20291.002English
3The Dark Knight9.02008185.001,006.003English
4The Godfather Part II9.0197413.0093.002English, Sicilian
512 Angry Men9.019570.342.004English
6Schindler's List8.9199322.00322.205English, German, Yiddish
7The Lord of the Rings: The Return of the King8.9200394.001,146.006English
8Pulp Fiction8.819948.50213.907English
9The Lord of the Rings: The Fellowship of the Ring8.8200193.00898.206English
10The Good, the Bad and the Ugly8.819661.2038.908English, Italian, Spanish

Übung 1: Auswählen aller Spalten einer Tabelle

Übung: Wählen Sie alle Daten aus der Tabelle distribution_companies.

Lösung:

SELECT *
FROM distribution_companies;

Erklärung der Lösung: Wählen Sie die Daten mit der Anweisung SELECT aus. Um alle Spalten auszuwählen, verwenden Sie ein Sternchen (*). Die Tabelle, aus der die Daten ausgewählt werden, wird in der Klausel FROM angegeben.

Ausgabe der Lösung:

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

Übung 2: Auswählen einiger Spalten aus einer Tabelle

Übung: Wählen Sie für jeden Film den Filmtitel, die IMDb-Bewertung und das Jahr aus, in dem der Film veröffentlicht wurde.

Lösung:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies;

Erklärung der Lösung: Listen Sie alle benötigten Spalten (movie_title, imdb_rating und year_released) in der Anweisung SELECT auf, getrennt durch ein Komma. Verweisen Sie auf die Tabelle movies in der Klausel FROM.

Ausgabe der Lösung:

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972
The Dark Knight9.02008
The Godfather Part II9.01974
12 Angry Men9.01957
Schindler's List8.91993
The Lord of the Rings: The Return of the King8.92003
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Good, the Bad and the Ugly8.81966

Übung 3: Auswahl einiger weniger Spalten und Filtern numerischer Daten in WHERE

Übung: Wählen Sie die Spalten movie_title und box_office aus der Tabelle movies. Zeigen Sie nur Filme mit Einnahmen über 300 Millionen Dollar an.

Lösung:

SELECT
  movie_title,
  box_office
FROM movies
WHERE box_office > 300;

Erklärung der Lösung: Listen Sie die Spalten in SELECT auf und verweisen Sie auf die Tabelle in FROM. Verwenden Sie eine WHERE Klausel, um die Daten zu filtern - schreiben Sie die Spalte box_office und verwenden Sie den "größer als"-Operator (>), um nur Werte über 300 Millionen Dollar anzuzeigen.

Ausgabe der Lösung:

movie_titlebox_office
The Dark Knight1,006.00
Schindler's List322.20
The Lord of the Rings: The Return of the King1,146.00
The Lord of the Rings: The Fellowship of the Ring898.20

Übung 4: Auswählen einiger Spalten und Filtern von Textdaten in WHERE

Übung: Wählen Sie die Spalten movie_title, imdb_rating, und year_released aus der Tabelle movies. Zeigen Sie die Filme an, die das Wort "Godfather" im Titel haben.

Lösung:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE movie_title LIKE '%Godfather%';

Erklärung der Lösung: Listen Sie die Spalten in SELECT auf und verweisen Sie auf die Tabelle in der Klausel FROM. Verwenden Sie eine WHERE -Klausel, um die Daten zu filtern. Verwenden Sie nach dem Schreiben des Spaltennamens den logischen Operator LIKE, um nach dem Wort "Godfather" im Filmtitel zu suchen, das in einfachen Anführungszeichen geschrieben ist. Um das Wort an einer beliebigen Stelle im Filmtitel zu finden, setzen Sie das Platzhalterzeichen (%) vor und hinter das Wort.

Ausgabe der Lösung:

movie_titleimdb_ratingyear_released
The Godfather9.21972
The Godfather Part II9.01974

Übung 5: Auswählen einiger Spalten und Filtern von Daten mithilfe von zwei Bedingungen in WHERE

Übung: Wählen Sie die Spalten movie_title, imdb_rating, und year_released aus der Tabelle movies. Zeigen Sie Filme an, die vor 2001 veröffentlicht wurden und eine Bewertung über 9 hatten.

Lösung:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released < 2001 AND imdb_rating > 9;

Erklärung der Lösung: Listen Sie die Spalten in SELECT auf und verweisen Sie auf die Tabelle in FROM. Legen Sie die erste Bedingung fest, dass das Erscheinungsjahr vor 2001 liegt, indem Sie den Operator "kleiner als" (<) verwenden. Um eine weitere Bedingung hinzuzufügen, verwenden Sie den logischen Operator AND. Verwenden Sie dieselbe Logik wie bei der ersten Bedingung, aber diesmal mit dem Operator "größer als" und der Spalte imdb_rating.

Ausgabe der Lösung:

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972

Übung 6: Filtern von Daten mit WHERE und Sortieren der Ausgabe

Übung: Wählen Sie die Spalten movie_title, imdb_rating, und year_released aus der Tabelle movies. Zeigen Sie Filme an, die nach 1991 veröffentlicht wurden. Sortieren Sie die Ausgabe nach dem Erscheinungsjahr in aufsteigender Reihenfolge.

Lösung:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released > 1991
ORDER BY year_released ASC;

Erklärung der Lösung: Listen Sie die Spalten in SELECT auf und verweisen Sie auf die Tabelle in FROM. Filtern Sie die Daten mit WHERE, indem Sie den Operator "größer als" auf die Spalte year_released anwenden. Um die Daten zu sortieren, verwenden Sie eine ORDER BY -Klausel und geben den Namen der Spalte an, nach der Sie sortieren möchten. Die Art der Sortierung wird durch Eingabe von ASC (aufsteigend) oder DESC (absteigend) angegeben. Wird der Typ nicht angegeben, wird die Ausgabe standardmäßig in aufsteigender Reihenfolge sortiert.

Ausgabe der Lösung:

movie_titleimdb_ratingyear_released
Schindler's List8.91993
The Shawshank Redemption9.21994
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Lord of the Rings: The Return of the King8.92003
The Dark Knight9.02008

Übung 7: Daten nach einer Spalte gruppieren

Übung: Zeigen Sie die Anzahl der Filme für jede Sprachkategorie an.

Lösung:

SELECT
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY language;

Erklärung der Lösung: Wählen Sie die Spalte language aus der Tabelle movies. Um die Anzahl der Filme zu zählen, verwenden Sie die Aggregatfunktion COUNT(). Verwenden Sie das Sternchen (*), um die Zeilen zu zählen, was der Anzahl der Filme entspricht. Um dieser Spalte einen Namen zu geben, verwenden Sie das Schlüsselwort AS gefolgt von dem gewünschten Namen. Um die Zählung nach Sprache anzuzeigen, müssen Sie die Daten nach dieser gruppieren. Schreiben Sie daher die Spalte language in die Klausel GROUP BY.

Ausgabe der Lösung:

languagenumber_of_movies
English7
English, German, Yiddish1
English, Sicilian1
English, Italian, Spanish1

Übung 8: Daten nach mehreren Spalten gruppieren

Übung: Zeigen Sie die Anzahl der Filme nach Erscheinungsjahr und Sprache an. Sortieren Sie die Ergebnisse nach dem Erscheinungsdatum in aufsteigender Reihenfolge.

Lösung:

SELECT
  year_released,
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY year_released, language
ORDER BY year_released ASC;

Erklärung der Lösung: Listen Sie die Spalten year_released und language aus der Tabelle movies in SELECT auf. Verwenden Sie COUNT(*), um die Anzahl der Filme zu zählen, und geben Sie dieser Spalte mit dem Schlüsselwort AS einen Namen. Geben Sie die Spalten, nach denen Sie gruppieren möchten, in der Klausel GROUP BY an. Trennen Sie jeden Spaltennamen mit einem Komma. Sortieren Sie die Ausgabe unter Verwendung von ORDER BY mit der Spalte year_released und dem Schlüsselwort ASC.

Ausgabe der Lösung:

year_releasedlanguagenumber_of_movies
1957English1
1966English, Italian, Spanish1
1972English1
1974English, Sicilian1
1993English, German, Yiddish1
1994English2
2001English1
2003English1
2008English1

Übung 9: Filtern von Daten nach der Gruppierung

Übung: Zeigen Sie die gesprochenen Sprachen und das durchschnittliche Filmbudget nach Sprachkategorie an. Zeigen Sie nur die Sprachen mit einem durchschnittlichen Budget von über 50 Millionen Dollar.

Lösung:

SELECT
  language,
  AVG(budget) AS movie_budget
FROM movies
GROUP BY language
HAVING AVG(budget) > 50;

Erklärung der Lösung: Wählen Sie die Spalte language aus der Tabelle movies. Um das durchschnittliche Budget zu berechnen, verwenden Sie die Aggregatfunktion AVG() mit der Spalte Budget in Klammern. Benennen Sie die Spalte in der Ausgabe mit dem Schlüsselwort AS. Gruppieren Sie die Daten nach Rating mit GROUP BY. Um die Daten nach der Gruppierung zu filtern, verwenden Sie eine HAVING Klausel. Verwenden Sie darin das gleiche AVG() -Konstrukt wie in SELECT und setzen Sie die Werte mit dem Operator "größer als" auf einen Wert über 50.

Ausgabe der Lösung:

languagemovie_budget
English59.01

Übung 10: Auswählen von Spalten aus zwei Tabellen

Übung: Zeigen Sie Filmtitel aus der Tabelle moviesjeweils mit dem Namen der Verleihfirma.

Lösung:

SELECT
  movie_title,
  company_name
FROM distribution_companies dc
JOIN movies m
ON dc.id = m.distribution_company_id;

Erklärung der Lösung: Listen Sie die Spalten movie_title und company_name in SELECT auf. In der Klausel FROM verweisen Sie auf die Tabelle distribution_companies. Geben Sie ihr den Alias dc, um ihren Namen für die spätere Verwendung abzukürzen. Das Schlüsselwort AS wird hier weggelassen; Sie können es verwenden, wenn Sie möchten. Um auf die Daten der anderen Tabelle zuzugreifen, verwenden Sie JOIN (kann auch als INNER JOIN geschrieben werden) und schreiben den Tabellennamen dahinter. Geben Sie auch dieser Tabelle einen Alias. Der hier verwendete Join ist ein innerer Join-Typ; er gibt nur die Zeilen zurück, die der in der Klausel ON angegebenen Join-Bedingung entsprechen. Die Tabellen werden verbunden, wenn die Spalte id aus der Tabelle distribution_companies gleich der Spalte distribution_company_id aus der Tabelle movies. Um anzugeben, welche Spalte aus welcher Tabelle stammt, verwenden Sie den entsprechenden Alias der einzelnen Tabellen.

Ausgabe der Lösung:

movie_titlecompany_name
The Shawshank RedemptionColumbia Pictures
The Godfather Part IIParamount Pictures
The GodfatherParamount Pictures
The Dark KnightWarner Bros. Pictures
12 Angry MenUnited Artists
Schindler's ListUniversal Pictures
The Lord of the Rings: The Fellowship of the RingNew Line Cinema
The Lord of the Rings: The Return of the KingNew Line Cinema
Pulp FictionMiramax Films
The Good, the Bad and the UglyProduzioni Europee Associate

Das hat Spaß gemacht! Jetzt ist es an der Zeit, SQL-Praxis selbst zu bearbeiten!

Diese zehn SQL-Übungen geben Ihnen einen Vorgeschmack darauf, wie es ist, SQL zu üben. Egal, ob Sie Anfänger, Fortgeschrittener oder Profi sind, der Ablauf ist derselbe. Was sich ändert, ist die Komplexität der Probleme, die Sie lösen, und des Codes, den Sie schreiben.

Halten Sie Ausschau nach weiteren Herausforderungen im SQL für Anfänger Kurs und im monatlichen SQL-Praxis Track. Beide sind hervorragend geeignet, um SQL online zu üben. Das gilt vor allem dann, wenn Sie keine Gelegenheit haben, SQL täglich in Ihrem Beruf zu verwenden.

Testen Sie also nicht, wie lange es dauert, bis Sie vergessen haben, was Sie einmal über SQL wussten! Nutzen Sie jede Gelegenheit, um so viele SQL-Übungsaufgaben wie möglich zu lösen.