5

SQL Lernen für Anfänger mit Tutorials, Übungen & Videos (2022)

SQL, ausgesprochen "sequel" (oder S-Q-L), ist das Standard-Werkzeug für jeden Datenwissenschaftler und Programmierer, der täglich mit Daten jonglieren muss.

Man könnte sogar sagen, dass SQL heutzutage eine der wichtigsten Programmiersprachen ist, wenn du einen Job als Data-Scientist (sowie Datenanalytiker/-analyst) anstrebst.

Mit SQL ist es möglich, jegliche Fragen über gespeicherte Daten zu beantworten.

Zwei mögliche Szenarien aus der Praxis:

  • Du hast eine Musikschule und ein Schüler möchte wissen, wann sein Lehrer den nächsten Termin zu vergeben hat.
  • Du möchtest wissen, wie viele Kunden deines Online-Shops älter als 25 sind

In diesem Tutorial werden wir uns in die SQL-Grundlagen aus der Perspektive eines totalen Anfängers vertiefen, um dich mit dieser entscheidenden Fähigkeit vertraut zu machen.

Fangen wir mit der Beantwortung der wichtigsten Frage an:

Was ist SQL?

SQL steht für Structured Query Language (strukturierte Abfragesprache).

Eine Abfragesprache ist eine Art Programmiersprache, die das Abrufen bestimmter Informationen aus Datenbanken erleichtern soll, und genau das macht SQL.

Um die Definition noch leichter zu machen: SQL ist die Sprache der Datenbanken.

Das ist dahin gehend wichtig, da die meisten Unternehmen ihre Daten in Datenbanken speichern. Und obwohl es viele Arten von Datenbanken gibt (wie z.B. MySQL, PostgreSQL, Microsoft SQL Server), sprechen die meisten von ihnen SQL. Sobald du die SQL-Grundlagen beherrschst, kannst du mit jeder dieser Datenbankmanagement-Systeme (DMBS) arbeiten.

Selbst wenn du vorhast, deine Daten-Analysen mit einer anderen Sprache, wie bspw. Python oder R durchzuführen, ist es bei den meisten Firmen sehr wahrscheinlich, dass du SQL benutzen musst, um die jeweiligen Daten aus der Datenbank abzufragen.

(Wenn du es vorziehst, interaktiv zu lernen, SQL-Abfragen direkt im Browser zu schreiben und auszuführen, solltest du dir unseren SQL-Schnellstart-Kurs sowie das LerneProgrammieren codeLabor ansehen)

Jetzt da wir die Grundzüge zu SQL definiert haben, wollen wir uns einen kurzen Überblick zu der Funktionalität erlauben.

Was kannst du mit SQL machen?

Du kannst mit SQL folgende Aufgaben erledigen:

  • Datenbanken erstellen
  • Tabellen in Datenbanken erstellen
  • Daten von einer oder mehreren Datenbanken abrufen
  • Neue Daten in die Datenbank einfügen
  • Einträge in deiner Datenbank verändern oder aktualisieren
  • Einträge aus einer Datenbank löschen
  • Datenbanken löschen
  • Zugriffsbeschränkungen für deine Datenbank einstellen
  • usw.

Bevor wir etwas über SQL und Datenbanken lernen, sollten wir verstehen, was Daten sind.

Was sind Daten?

Vereinfacht ausgedrückt handelt es sich bei Daten um "Informationen", die sich auf irgendetwas beziehen. Zum Beispiel sind dein Name, dein Alter, deine Größe, dein Gewicht usw. einige Daten, die sich auf dich beziehen. Ein Bild, eine Abbildung, eine Excel-Datei, eine PDF-Datei, usw. können ebenfalls als Daten betrachtet werden.

Diese Daten speichern wir in der sogenannten Datenbank ab.

Was ist eine Datenbank?

Eine Datenbank ist eine systematische Sammlung von Daten. Sie unterstützt die elektronische Speicherung und Manipulation von Daten. Datenbanken machen somit die Datenverwaltung einfach.

Hier ein paar Beispiele:

  • Dein Internetprovider verwendet eine Datenbank, um Daten von Personen, Telefonnummern und andere Kontaktdaten zu speichern.
  • Dein Stromversorger verwendet eine Datenbank, um die jährliche Abrechnung zu verwalten, kundenbezogene Fragen zu klären, Störungsdaten zu bearbeiten usw.
  • Betrachten wir auch Social Media Plattformen wie Instagram oder Facebook. Die Datenbank muss Daten speichern, manipulieren und anzeigen, die sich auf Mitglieder, ihre Freunde, Mitgliederaktivitäten, Nachrichten, Werbung und vieles mehr beziehen.
  • Wir können unzählige Beispiele für die Nutzung von Datenbanken nennen.

Jetzt da wir das Vokabular und die Grundlagen geklärt haben, können wir mit SQL starten. In den nachfolgenden Abschnitten lernst du die wichtigsten Grundzüge von SQL und der Manipulation von Datenbanken Schritt-für-Schritt kennen.

Wir legen zunächst eine Tabelle für deine fiktive Datenbank an und werden dann daraus Daten abfragen, ändern und löschen.

1. Tabelle erstellen

Beim Erstellen neuer Tabellen in SQL wird die CREATE TABLE-Anweisung aufgerufen. Sie erwartet als Argumente alle Spalten, die wir in der Tabelle haben wollen, sowie deren Datentypen.

Hier erstellen wir eine einfache Tabelle namens Monate. Sie besteht aus 3 Spalten:

  • id - Die Nummer des Monats im Kalenderjahr (ganze Zahl).
  • name - Der Name des Monats (String, maximal 10 Zeichen).
  • tag - Die Anzahl der Tage in diesem Monat (ganze Zahl).

Und so sieht das jeweilige SQL aus:

CREATE TABLE monate (id int, name varchar(10), tag int);

Auch beim Erstellen von Tabellen ist es ratsam, einen Primärschlüssel zu einer der Spalten hinzuzufügen. Das hilft, die Einträge eindeutig zu halten und beschleunigt die Auswahl der Abfragen. Wir werden sie in dieser Lektion nicht behandeln, aber du kannst über sie in unseren SQL Schnellstart-Kursen lesen oder einfach den Begriff googeln.

2. Daten in Zeilen einfügen

Jetzt wollen wir die Monate mit ein paar Zeilen Informationen füllen. Das Hinzufügen von Einträgen zu einer Tabelle erfolgt über die INSERT-Anweisung. Es gibt zwei verschiedene Arten, es zu benutzen:

Die erste Möglichkeit gibt nicht die Spaltennamen an, wo die Daten eingefügt werden, sondern erwartet nur die Werte und überlässt es dem Entwickler, alle Daten in der richtigen Reihenfolge anzugeben.

INSERT INTO monate VALUES (1,'Januar',15);

Das obige Beispiel ist schön kurz, aber es gibt ein großes Problem. Wenn wir in Zukunft weitere Spalten hinzufügen, bricht die Abfrage ab. Der bevorzugte Weg, dies zu umgehen ist die folgende Schreibweise:

INSERT INTO monate (id,name,tag) VALUES (2,'Februar',11);

3. SELECT-Abfrage

Sogenannte SELECT-Abfragen sind dein bester Freund, wenn du Daten aus einer Datenbank herausziehen möchtest. Das Select-Statement wird ständig genutzt. Daher werden wir es nachfolgend ausführlich behandeln.

3.1 Alle Daten einer Tabelle auswählen

Das einfachste SELECT-Beispiel ist die folgende Abfrage, die alle Spalten und Zeilen aus der Produkte-Tabelle zurückgibt:

SELECT * FROM produkte;

Das Sternchen (*) oder auch Wildcard genannt bedeutet, dass wir alle Spalten auswählen wollen, ohne Ausnahme.

Da SQL-Datenbanken normalerweise aus mehr als einer Tabelle bestehen, wird das FROM-Schlüsselwort benötigt, um anzugeben, in welcher Tabelle wir suchen wollen.

3.2 Spezifische Spalten in einer Tabelle auswählen

Manchmal wollen wir nicht alle Spalten einer Tabelle haben. Mit SQL können wir nur jene Spalten auswählen und abfragen, die wir benötigen:

Anstatt den Stern (*) zu setzen, schreiben wir die/den Namen der gewünschten Spalte(n). Siehe folgendes Beispiel:

SELECT name, preis FROM produkte;

Im obigen Beispiel wählen wir die Spalten Name und Preis aus der Tabelle "Produkte" aus.

3.3. Daten aufsteigend oder absteigend sortieren

Außerdem wollen wir in vielen Fällen, dass die Ergebnisse der Abfrage sortiert werden. In SQL machen wir das mit ORDER BY. Der Befehl nimmt einen optionalen Modifikator an:

  • ASC (Standard-Sortierung, aufsteigend) oder
  • DESC (absteigend)

So sieht der Befehl in SQL aus:

SELECT name, preis FROM produkte ORDER BY preis DESC;

4. WHERE

Du hast bereits gelernt, wie man nur bestimmte Spalten auswählt. Doch was passiert, wenn nur Zeilen angezeigt werden sollen, die eine bestimmte Bedingung erfüllen (z.B. Produkte mit mindestens 5 Mio. € Umsatz)?

Die Problemlösung, um Daten nach Bedingungen zu filtern, heißt WHERE-Statement.

In der folgenden Abfrage wählen wir nur die Produkte aus, die mindestens 5 Mio. € Umsatz machen.

SELECT * FROM produkte WHERE umsatz >= 5;

5. Logische Operatoren: AND / OR

WHERE-Bedingungen können mithilfe der logischen Operatoren AND (UND) sowie OR (ODER) und mathematischen Vergleichen (=,<,>,<=,>=,<>) so spezifisch gemacht werden, wie du deine Bedingung haben möchtest.

Wenn du alle Alben im Genre "Metal" auswählen möchtest, die mindestens 10 Mio. € Umsatz gemacht haben, schreibst du folgendes SQL-Statement:

SELECT * FROM alben WHERE genre = 'metal' AND umsatz >= 10;

6. In, Between und Like

WHERE-Statements unterstützen auch spezielle Befehle, die eine schnelle Überprüfung häufig verwendeter Abfragen ermöglichen.

Sie unterteilen sich wie folgt:

  • IN - vergleicht die Spalte mit mehreren möglichen Werten. Gibt den Wert "true" zurück, wenn mindestens eine Bedingung zutrifft
  • BETWEEN - prüft, ob ein Wert innerhalb eines Bereichs liegt
  • LIKE - sucht nach einem bestimmten Muster

Wenn wir zum Beispiel eine Abfrage erstellen, um alle Metal- und Rock-Alben auszuwählen, können wir IN("wert1", "wert2") verwenden.

SELECT * FROM alben WHERE genre IN ('rock','metal');

Wenn wir alle Alben bekommen wollen, die zwischen 1999 und 2010 veröffentlicht wurden, schreiben wir das SQL-Statement wie folgt:

SELECT * FROM alben WHERE veröffentlicht BETWEEN 1999 AND 2010;

7. Funktionen

SQL ist mit fertigen Funktionen ausgerüstet, die dir beim Auswerten von Daten helfen.

Hier sind einige der nützlichen SQL-Funktionen:

  • COUNT() - gibt die Anzahl der Zeilen zurück
  • SUM() - gibt die Gesamtsumme einer numerischen Spalte zurück
  • AVG() - gibt den Durchschnitt von mehreren Werten zurück
  • MIN() / MAX() - liefert den minimalen/maximalen Wert einer Spalte

8. Verschachtelte Auswahl (SELECT-Nesting)

Im vorigen Abschnitt haben wir gelernt, wie man einfache Berechnungen mit Daten durchführt. Wenn wir das Ergebnis dieser Berechnungen tatsächlich verwenden wollen, ist oft eine verschachtelte Abfrage (auch bekannt als "Sub-Select") notwendig.

Nehmen wir an, wir wollen den Künstler, das Album und das Erscheinungsjahr für das älteste Album in einer Tabelle abfragen.

Wir wissen bereits, wie wir an die richtigen Spalten kommen:

SELECT künstler, album, veröffentlicht FROM Album;

Wir wissen auch, wie wir das chronologisch älteste Jahr herausfinden:

SELECT MIN(veröffentlicht) FROM Album;

Jetzt musst du die beiden SELECT-Statements nur noch mithilfe von WHERE kombinieren:

SELECT künstler, album, veröffentlicht FROM Album WHERE veröffentlicht = ( SELECT MIN(veröffentlicht) FROM Album) ;

9. Joins (Tabellen verbinden)

In komplexeren Datenbanken gibt es meistens mehrere Tabellen, die auf irgendeine Weise miteinander verbunden sind.

Stell dir vor, du hast zwei Tabellen:

  • Videospiele
  • Videospielentwickler

In der videospiele-Tabelle gibt es eine Entwicklerspalte, aber sie enthält eine Ganzzahl (z.B. 5) anstelle des Namens des Entwicklers. Diese Zahl steht für die ID des jeweiligen Entwicklers aus der videospieleentwickler-Tabelle, wodurch die beiden Blätter logisch miteinander verknüpft werden. Dadurch können wir die in beiden Tabellen gespeicherten Informationen gleichzeitig verwenden.

Wenn wir eine Abfrage erstellen wollen, die alles zurückgibt, was wir über unsere Spiele wissen müssen, können wir den sogenannten INNER JOIN verwenden, um die Spalten aus beiden Tabellen zu erhalten.

Dies ist die einfachste und in der Praxis am häufigsten benutzte Form des JOIN's. Es gibt weitere JOINS (z.B. Left Join), aber diese werden meist in sehr speziellen Fällen benutzt und in diesem kurzen SQL-Tutorial übersprungen.

10. Alias

Wenn du dir das vorherige Beispiel ansiehst, wirst du feststellen, dass es zwei Spalten namens "Name" gibt. Das klingt verwirrend. Lass uns daher eine Änderung vornehmen, um die Spaltennamen ausdrucksstärker zu machen. Hierfür benutzen wir Aliase:

  • Spaltenname ohne Alias: meine_umsätze
  • Mit Alias: u

In SQL sieht das so aus:

SELECT meine_umsätze FROM Tabellenname AS u;

Ebenso können wir das Erstellen von Abfragen verkürzen, indem wir Aliase auf Tabellennamen setzen.

11. Update

Oft musst du Daten in einzelnen Zeilen ändern bzw. aktualisieren. In SQL geschieht diese Aktualisierung über die UPDATE-Anweisung.

Die Verwendung von UPDATE besteht aus:

  • UPDATE: Tabelle auswählen, in der sich der Datensatz befindet, den wir ändern wollen.
  • SET: Setze den/die neuen Wert(e) für die gewünschte(n) Spalte(n).
  • WHERE: Mit WHERE auswählen, welche Zeile(n) wir aktualisieren wollen. Wichtig: Wenn das WHERE-Statement vergisst, ändern sich alle Zeilen in der Tabelle.

So sieht ein Update-Statement in SQL bspw. aus:

UPDATE Tabellenname SET Vorname = 'Daniel' WHERE id = 1;

12. Zeilen löschen

Eine Tabellenzeile mit SQL zu löschen ist schnell erledigt. Alles, was du dafür benötigst, ist die richtige Tabelle und die jeweilige Zeile, die gelöscht werden soll.

SQL-Beispiel, um eine Zeile zu löschen:

DELETE Tabellenname WHERE id = 20;

Hinweis: Bitte sei vorsichtig beim Löschen von Zeilen. Wenn du dein DELETE-Statement schreibst, stelle sicher, dass du ebenfalls das WHERE-Statement anhängst. Ohne "WHERE" werden alle Tabellenzeilen gelöscht. Urgh!

13. Tabellen löschen

Wenn wir alle Zeilen löschen wollen, ohne die Tabelle mitzulöschen, benutzt du den TRUNCATE-Befehl. Hier ein SQL-Beispiel der Abfrage:

TRUNCATE TABLE Tabellenname;

Für den Fall, dass du alle Daten sowie die dazugehörige Tabelle (unwiderruflich) löschen möchtest, benutzt du den DROP-Befehl:

DROP TABLE Tabellenname;

Hinweis: Bitte sei vorsichtig mit dem DROP TABLE Befehl, da nach dem Ausführen alle Daten im Nirwana verschwinden.

Fazit zum SQL-Tutorial

Glückwunsch! Wenn du diesen Artikel zum "SQL Lernen" bis zum Ende durchgearbeitet hast, solltest du jetzt in der Lage sein, eine Datenbank und deren Tabellen abzufragen, um an die für dich interessanten Daten zu kommen. Du bist außerdem imstande diese Daten zu bearbeiten sowie zu löschen.

Das Thema SQL geht noch viel mehr in die Tiefe, aber die obigen Grundlagen sowie SQL-Befehle reichen für Anfänger aus, um die ersten praktischen Erfahrungen zu sammeln. Mit etwas Übung in SQL legst du einen wichtigen Grundstein zum Data-Scientist und Web-Entwickler.

Weitere Informationen findest, dazu findest du im LerneProgrammieren SQL-Schnellstart (interaktive Onlinekurs) und in unseren SQL-Tutorials im Blog.

  • 18. November 2020
Click Here to Leave a Comment Below 5 comments
Bob - 7. Mai 2021

Das Statment
IN monate INSERT (id,name,tag) VALUES (2,’Februar‘,11);
scheint falsch zu sein.
Muss es nicht
INSERT INTO monate (id,name,tag) VALUES (2,’Februar‘,11);
heißen?

Reply
    Arek - 10. Mai 2021

    Hi,
    Danke! Haben es korrigiert!

    Reply
Dietmar - 24. März 2022

Hi, die Punkte 9 und 10 sind irgendwie nicht ganz schlüssig und könnten gerne etwas ausführlicher sein. Ansonsten danke für die kleine Einweisung.

Reply
KOnrad - 3. November 2022

Nicht Schlecht!

Reply
Ria - 20. Juli 2023

Ich hätte noch gerne Beispiele für die Punkte 9 und 10 gehabt. (So wie bei den vorherigen Punkten.)
Insgesamt fand ich, dass das eine verständnisvolle und unkomplizierte Einführung für Anfänger war. Danke dafür.

Reply

Leave a Reply: