Zum Hauptinhalt springen

SQL - Grundlagen

Mehr über SQL erfährst du auch hier: https://www.ibm.com/de-de/think/topics/structured-query-language Was ist SQL? SQL steht für Structured Query Language und ist die weltweit wichtigste Sprache, um mit Datenbanken zu kommunizieren. Mit ihr können aus riesigen Tabellenmengen gezielt Informationen gefiltert, Daten analysiert und komplexe Fragen effizient beantworten werden. Fast jede moderne App und Webseite nutzt SQL im Hintergrund, um ihre Daten zu verwalten.

Die Datenbankeinträge wurden mit Hilfe einer KI erstellt und sind nicht auf inhaltliche Korrektheit überprüft worden. Du wirst hier mit einer Datenbank arbeiten, die drei Tabellen enthält: land (Basisdaten), stadt (Städte der Welt) und wirtschaft (Daten zu Industrie, Landwirtschaft etc.).

Relationen

  • land(land_id ,name, kontinent, flaeche_km2, bevoelkerung, bip_mrd_usd, bip_pro_kopf, entwicklungsstand, arbeitslosenquote)
  • stadt(stadt_id, ↑land_id, name, einwohner, ist_hauptstadt, wirtschaftszentrum)
  • wirtschaft(eintrag_id, ↑land_id, sektor, anteil_bip_proz, exporte_mrd)
Relationen

Erste Schritte

SELECT ... FROM Der Blick in die Datenbank

Bevor wir spezielle Datensätze in der Datenbank suchen, müssen wir wissen, was da ist. SELECT bestimmt die Spalten (Attribute), FROM die Tabelle.

Per Konvention werden SQL Befehle groß geschrieben.

Mit * können alle Spalten ausgewählt werden: SQL Befehle enden mit einem Semikolon und können mehrzeilig sein.

Training
  1. Zeige alle Spalten der Tabelle land an.
  2. Gib nur die Spalten name und einwohner aus der Tabelle stadt aus.
  3. Zeige alle Sektoren an, die in der Tabelle wirtschaft vorkommen.
  4. Liste die Namen, die Fläche und die Bevölkerung aller Länder auf.

DISTINCT & LIMIT Ergebnismengen steuern

Manchmal gibt eine Abfrage zu viele oder doppelte Informationen zurück. Hier helfen zwei einfache Befehle, die Übersicht zu behalten:

Oft enthalten Spalten doppelte Einträge. Wenn du wissen willst, welche Kontinente vorkommen, möchtest du nicht 30-mal Europa sehen. DISTINCT filtert Duplikate heraus.

Wenn dich nur die ersten paar Zeilen interessieren (z. B. eine Top-Liste), begrenzt LIMIT die Ausgabe auf eine feste Anzahl.

Training
  1. Welche verschiedenen Entwicklungsstände (entwicklungsstand) gibt es? Zeige sie ohne Duplikate an.
  2. Liste alle unterschiedlichen Sektoren aus der Tabelle wirtschaft auf.
  3. Zeige die ersten 10 Einträge der Tabelle stadt an.
  4. Gib die Namen von 3 beliebigen Ländern aus der Tabelle land aus.

WHERE Die gezielte Suche

Mit WHERE filtern wir die Zeilen nach bestimmten Bedingungen. Alle Länder der Datenbank die in Europa liegen, erhalten wir mit dem Befehl:

Wird mit einem String verglichen, muss dieser in einfachen Anführungszeichen stehen '...'. Es kann nicht nur auf Gleichheit = sondern auch auf < (kleiner), > (größer), <= (kleiner gleich), >= (größer gleich), != (ungleich)

Training
  1. Welche Länder haben mehr als 200 Millionen Einwohner?
  2. Zeige alle Städte, die Hauptstädte sind.
  3. Welche Länder haben eine Arbeitslosenquote von weniger als 3.0 %?
  4. Liste alle Länder auf, die nicht in Asien liegen.
  5. Finde alle Einträge in der Tabelle wirtschaft, bei denen der Anteil am BIP größer als 50 % ist.

AND, OR, NOT Bedingungen kombinieren

Mit den logischen Operatoren AND, OR, NOT lassen sich mehrere Bedingungen kombinieren:

Training
  1. Welche Länder liegen in Europa UND haben ein bip_pro_kopf über 50.000?
  2. Suche alle Städte, die entweder in Deutschland (land_id = 1) oder in den USA (land_id = 2) liegen.
  3. Welche Länder sind Schwellenländer UND haben eine Fläche von über 1.000. 000 km²?
  4. Zeige alle Wirtschaftseinträge , die Industrie oder Rohstoffe sind.
  5. Finde Länder in Afrika, die keine Entwicklungsländer sind.

Datenanalyse und Auswertung

ORDER BY Ordnung schaffen

Daten werden standardmäßig unsortiert ausgegeben. ORDER BY sortiert die Daten. Die Länder können nach der Bevölkerung (größte zuerst) sortiert werden:

Standardmäßig (ohne DESC) wird aufsteigend sortiert. Es kann aber auch explizit mit ASC angegeben werden.

Training
  1. Sortiere die Länder nach ihrer Fläche (kleinste zuerst).
  2. Erstelle eine Rangliste der Länder nach ihrer arbeitslosenquote (höchste zuerst).

AS Rechnen

SQL kann wie ein Taschenrechner arbeiten. Mit AS gibst du der Ergebnisspalte einen Namen. Berechne wir die Bevölkerungsdichte (Einwohner pro km²) aller Länder und geben diese aus:

Training
  1. Berechne für alle Länder, wie viel BIP (mrd USD) pro 1 Million Einwohner zur Verfügung steht.
  2. Gib den Namen der Länder aus, aber nenne die Spalte in der Anzeige 'Staat'. Sortiere alphabetisch absteigend.
  3. Zeige den Namen der Städte und deren Einwohnerzahl in Millionen an (Einwohner / 1.000.000).
  4. Überprüfe, ob das gegeben pro Kopf BIP aller Länder korrekt ist (bezogen auf das gesamte BIP und die Bevölkerungszahl). Sortiere nach der Größe der Abweichung.
  5. Bilde das Verhältnis zwischen BIP pro Kopf und Arbeitslosenquote für alle Länder ab und sortiere absteigend. Was könnte dieser Wert aussagen.

LIKE Muster finden

Wenn du Namen nur teilweise kennst, hilft LIKE. Das Zeichen % dient als Platzhalter für beliebigen Text.

Training
  1. Welche Ländernamen enden auf 'ien' (z.B. Brasilien)?
  2. Suche alle Städte, die das Wort 'Stadt' im Namen haben.
  3. Finde alle Kontinente, die mit 'A' beginnen.
  4. Suche Länder, deren Name an der zweiten Stelle ein 'a' hat (Tipp: _ist Platzhalter für genau einen Buchstaben).

Statistiken mit Aggregatfunktionen erstellen

Aggregatfunktionen fassen viele Zeilen zu einem einzigen Ergebniswert zusammen. Das ist perfekt für globale Statistiken:

  • COUNT(*): Zählt die Zeilen.
  • SUM(spalte): Bildet die Summe.
  • AVG(spalte): Berechnet den Durchschnitt.
  • MAX(spalte), MIN(spalte): Findet den höchsten/niedrigsten Wert.

Wie groß ist die Gesamtbevölkerung aller in der Datenbank erfassten Länder?

Training
  1. Wie viele Länder sind insgesamt in der Datenbank erfasst?
  2. Berechne die durchschnittliche Arbeitslosenquote aller Länder.
  3. Wie hoch ist das Exportvolumen (exporte_mrd) aller Sektoren in der Tabelle wirtschaft zusammengerechnet?
  4. Welche Stadt hat die meisten Einwohner?
  5. Kombiniere Filter und Aggregat: Wie viele Länder liegen in 'Europa'?
  6. Wie groß ist die Gesamtfläche aller Länder in 'Afrika'?
  7. Größtes pro Kopf BIP aller Entwicklungsländer?
  8. Kleinstes pro Kopf BIP aller Schwellenländer?

JOIN .. ON .. Tabellen verbinden

Bisher haben wir Tabellen einzeln abgefragt. Oft sind Informationen aber verteilt: Einwohner stehen in stadt, Kontinente in land. Mit einem JOIN schlagen wir eine Brücke zwischen ihnen, um kombinierte Listen zu erstellen.

Ein JOIN verknüpft Zeilen über einen gemeinsamen Wert, in unserer Datenbank über Werte der Spalte (Attribut) land_id (Primärschlüssel in land, Fremdschlüssel in stadt).

  • SELECT ...: Spalten wählen. Die Punkt-Notation (Tabelle.Spalte) verhindert Verwechslungen bei gleichen Namen (z.B. stadt.name).
  • FROM stadt: Die Basis-Tabelle.
  • JOIN land: Die Tabelle, die verbunden werden soll.
  • ON stadt.land_id = land.land_id: Die Bedingung. SQL kombiniert nur Zeilen, deren Werte exakt übereinstimmen.
Training
  1. Liste alle Städte mit ihrem Namen und dem zugehörigen Kontinent auf.
  2. Zeige alle Wirtschaftseinträge (sektor, exporte_mrd) zusammen mit dem jeweiligen Ländernamen an.
  3. Welche Städte sind Hauptstädte? Gib den Stadtnamen und den entwicklungsstand des zugehörigen Landes aus.
  4. Finde alle Sektoren Tourismus und zeige den Ländernamen sowie das bip_pro_kopf dieses Landes an.
  5. Liste alle Städte in Europa auf. Zeige den Stadtnamen und den Ländernamen.

JOINs mit Berechnungen und Aggregaten

JOINs lassen sich super mit Berechnung und Aggregaten verbinden.

Welchen Wert in Milliarden USD hat der Sektor Industrie in Deutschland? (BIP * BIP-Anteil des Sektors / 100)

Training
  1. Berechne für den Sektor Industrie in allen europäischen Ländern den Exportwert pro Kopf (Exporte des Sektors / Bevölkerung des Landes). Multipliziere das Ergebnis mit 1.000.000.000, um den Wert in USD pro Person zu erhalten.
  2. Wie hoch ist das gesamte Exportvolumen (SUM(exporte_mrd)) aller Sektoren, die in Industrieländern liegen?
  3. Berechne den durchschnittlichen bip_anteil des Sektors Landwirtschaft für alle Länder in Afrika.
  4. Wie viele Städte gibt es insgesamt in Ländern, deren bip_pro_kopf über 60.000 liegt?
  5. Finde die Stadt mit den meisten Einwohnern, die in einem Schwellenland liegt.
  6. Berechne die Summe der Einwohner aller Städte, die in Ländern mit einer Arbeitslosenquote von über 10 % liegen.