22nd May 2023 10 Leseminuten 10 SQL-Übungen für Anfänger mit Lösungen Tihomir Babic Online-Übungen SQL-Übungen Inhaltsverzeichnis Der Datensatz Übung 1: Auswählen aller Spalten einer Tabelle Übung 2: Auswählen einiger Spalten aus einer Tabelle Übung 3: Auswahl einiger weniger Spalten und Filtern numerischer Daten in WHERE Übung 4: Auswählen einiger Spalten und Filtern von Textdaten in WHERE Übung 5: Auswählen einiger Spalten und Filtern von Daten mithilfe von zwei Bedingungen in WHERE Übung 6: Filtern von Daten mit WHERE und Sortieren der Ausgabe Übung 7: Daten nach einer Spalte gruppieren Übung 8: Daten nach mehreren Spalten gruppieren Übung 9: Filtern von Daten nach der Gruppierung Übung 10: Auswählen von Spalten aus zwei Tabellen Das hat Spaß gemacht! Jetzt ist es an der Zeit, SQL-Praxis selbst zu bearbeiten! 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. Tags: Online-Übungen SQL-Übungen