SQL Basics
Was ist SQL?
SQL: Die Universalsprache für relationale Datenbanken
Stell dir eine relationale Datenbank wie eine riesige, perfekt organisierte Lagerhalle vor. Jedes Regal (Tabelle) enthält bestimmte Artikel (Daten), die in Fächern (Spalten) nach Eigenschaften sortiert sind und jede Reihe von Fächern einen bestimmten Artikel (Datensatz) darstellt. Um in dieser Lagerhalle Artikel zu finden, neue einzulagern, umzusortieren oder zu entfernen, brauchst du eine klare Sprache, die jede:r Mitarbeitende in der Halle versteht. Genau das ist SQL (Structured Query Language) für relationale Datenbanken. Es ist die Standardsprache, um mit diesen Datenbanken zu kommunizieren – also um Daten zu definieren, zu manipulieren und abzufragen. Egal, ob du Kund:innendaten verwaltest, Produktkataloge pflegst oder Zugriff auf Bestandsinformationen benötigst, SQL ist das Werkzeug, das dir präzise Kontrolle über deine Daten gibt.
Die drei Säulen der SQL-Befehle: DDL, DML und DQL
SQL-Befehle lassen sich, je nach ihrer Aufgabe, in drei grundlegende Kategorien einteilen. Diese Struktur hilft dir zu verstehen, welche Art von Operation du gerade durchführst:
- DDL (Data Definition Language – Datendefinitionssprache): Wie eine Architekt:in entwirfst du mit DDL-Befehlen das Grundgerüst deiner Datenbank. Du legst fest, wie deine "Regale" (Tabellen) aussehen, welche "Fächer" (Spalten) sie haben und welche Art von Artikeln (Datentypen) hineinpassen. Auch Regeln, wie dass jedes Fach eine eindeutige Nummer haben muss (Primärschlüssel), definierst du hier. Typische Befehle:
CREATE TABLE
(neues Regal bauen),ALTER TABLE
(Regal umbauen),DROP TABLE
(Regal abreißen). - DML (Data Manipulation Language – Datenmanipulationssprache): Sobald die Regale stehen, füllst du sie mit DML-Befehlen mit Leben. Du verwaltest die konkreten Artikel (Daten) in deinen Regalen: Du lagerst neue Artikel ein, änderst die Beschriftung vorhandener Artikel oder nimmst Artikel heraus, die nicht mehr gebraucht werden. Typische Befehle:
INSERT
(neuen Artikel einlagern),UPDATE
(Artikelinformationen ändern),DELETE
(Artikel entfernen). - DQL (Data Query Language – Datenabfragesprache): Wenn du bestimmte Artikel oder Informationen aus deiner Lagerhalle benötigst, nutzt du DQL. Der wichtigste Befehl hier ist
SELECT
. Er ist wie eine präzise Suchanfrage an deine:n Lagerverwalter:in, um genau die Artikel oder Informationen zu bekommen, die du gerade brauchst. Typischer Befehl:SELECT
(Artikel oder Informationen anzeigen lassen).
Wie wende ich grundlegende SQL-Befehle an?
Gezielt Informationen finden: Daten abfragen mit SELECT
Der SELECT
-Befehl ist dein wichtigstes Werkzeug, um Informationen aus einer Datenbank zu gewinnen. Stell dir vor, du möchtest eine Liste aller Mitarbeitenden oder nur derer aus einer bestimmten Abteilung sehen. Die grundlegende Struktur einer SELECT
-Abfrage für Daten aus einer einzelnen Tabelle sieht so aus:
SELECT Spaltenname1, Spaltenname2, ...
FROM Tabellenname
WHERE Bedingung;
SELECT Spaltenname1, Spaltenname2, ...
: Hier gibst du an, welche "Fächer" (Spalten) der Tabelle dich interessieren. Möchtest du alle Informationen zu den ausgewählten Datensätzen sehen, verwendest du das Sternchen*
.FROM Tabellenname
: Damit teilst du der Datenbank mit, aus welchem "Regal" (Tabelle) die Informationen stammen sollen.WHERE Bedingung
: Diese Klausel ist optional und dient als Filter. Nur die "Artikel" (Zeilen/Datensätze), die diese Bedingung erfüllen, werden angezeigt.
Praktisches Beispiel: Nehmen wir an, wir haben eine Tabelle Mitarbeitende
mit den Spalten MitarbeitendenID
, Vorname
, Nachname
, Abteilung
und Gehalt
.
- Alle Nachnamen und die jeweilige Abteilung aller Mitarbeitenden anzeigen:
SELECT Nachname, Abteilung
FROM Mitarbeitende;
- Alle Informationen zu Mitarbeitenden aus der Abteilung 'IT', die mehr als 50.000 € verdienen:
SELECT *
FROM Mitarbeitende
WHERE Abteilung = 'IT' AND Gehalt > 50000;
Daten aktiv gestalten: Einfügen, Ändern und Löschen mit DML
Mit DML-Befehlen kannst du den Inhalt deiner Tabellen aktiv verändern.
- INSERT: Fügt neue Datensätze (Zeilen) in eine Tabelle ein. Das ist so, als würdest du eine neue Akte für eine:n neue:n Mitarbeitende:n anlegen.
INSERT INTO Tabellenname (Spalte1, Spalte2, Spalte3)
VALUES (Wert1, Wert2, Wert3);
Beispiel: Eine:n neue:n Mitarbeitende:n in die Tabelle Mitarbeitende
aufnehmen.
INSERT INTO Mitarbeitende (MitarbeitendenID, Vorname, Nachname, Abteilung, Gehalt)
VALUES (103, 'Erika', 'Mustermann', 'Marketing', 48000);
- UPDATE: Modifiziert bestehende Datensätze in einer Tabelle. Das ist vergleichbar mit dem Aktualisieren der Adresse oder des Gehalts eine:r Mitarbeitende:n. Wichtig: Nutze immer eine
WHERE
-Klausel, um genau festzulegen, welche Datensätze geändert werden sollen, sonst änderst du alle!
UPDATE Tabellenname
SET Spalte1 = NeuerWert1, Spalte2 = NeuerWert2
WHERE Bedingung;
Beispiel: Das Gehalt der mitarbeitenden Person mit der MitarbeitendenID
103 auf 52000 erhöhen und die Abteilung auf 'Vertrieb' ändern.
UPDATE Mitarbeitende
SET Gehalt = 52000, Abteilung = 'Vertrieb'
WHERE MitarbeitendenID = 103;
- DELETE: Entfernt Datensätze aus einer Tabelle. Stell dir vor, eine mitarbeitende Person verlässt das Unternehmen. Wichtig: Auch hier ist die
WHERE
-Klausel entscheidend, um nicht versehentlich alle Daten zu löschen!
DELETE FROM Tabellenname
WHERE Bedingung;
Beispiel: Die mitarbeitende Person mit der MitarbeitendenID
103 aus der Tabelle entfernen.
DELETE FROM Mitarbeitende
WHERE MitarbeitendenID = 103;
Das Fundament legen: Tabellen definieren mit CREATE TABLE
Mit dem CREATE TABLE
-Befehl aus der DDL erstellst du die Struktur für neue Tabellen in deiner Datenbank. Du legst fest, wie die Tabelle heißt, welche Spalten sie hat, welche Datentypen diese Spalten speichern können und welche grundlegenden Regeln (Constraints) gelten.
CREATE TABLE Tabellenname (
Spaltenname1 Datentyp [Constraints],
Spaltenname2 Datentyp [Constraints],
...
PRIMARY KEY (Spaltenname_fuer_Primaerschluessel)
);
- Datentyp: Bestimmt die Art der Daten, die eine Spalte aufnehmen kann (z.B.
INT
für ganze Zahlen,VARCHAR(255)
für Text bis zu 255 Zeichen,DATE
für Datumsangaben,DECIMAL(10, 2)
für Geldbeträge mit zwei Nachkommastellen,BOOLEAN
für Wahrheitswerte). - Constraints (Integritätsbedingungen): Regeln, die die Datenqualität und -konsistenz sicherstellen.
NOT NULL
: Die Spalte darf nicht leer bleiben; ein Wert muss beim Einfügen eines Datensatzes angegeben werden.PRIMARY KEY
: Definiert eine oder mehrere Spalten als Primärschlüssel. Der Wert in dieser Spalte (oder die Kombination der Werte bei zusammengesetzten Schlüsseln) muss jeden Datensatz in der Tabelle eindeutig identifizieren und darf nicht leer (NULL
) sein.
Beispiel: Eine Tabelle für Projekte
erstellen.
CREATE TABLE Projekte (
ProjektID INT PRIMARY KEY,
Projektname VARCHAR(255) NOT NULL,
Startdatum DATE,
Budget DECIMAL(10, 2) NOT NULL,
Status VARCHAR(50)
);
Diese Anweisung erstellt eine Tabelle namens Projekte
. ProjektID
ist der Primärschlüssel und muss jeden Projekteintrag eindeutig kennzeichnen. Projektname
und Budget
dürfen nicht leer sein. Startdatum
und Status
können optional angegeben werden.
Lernziele
- die Rolle von SQL als Datenbanksprache und dessen Hauptkategorien von Befehlen erklären, indem die Funktion von SQL zur Definition (DDL), Manipulation (DML) und Abfrage (DQL) von Daten in relationalen Datenbanken erläutert und die jeweilige Kategorie anhand typischer Befehle charakterisiert wird.
- einfache Datenabfragen aus einer einzelnen Tabelle auszuführen, indem die SQL-Klauseln SELECT, FROM und WHERE korrekt angewendet werden, um spezifische Datensätze und Attribute zu extrahieren und anzuzeigen.
- grundlegende Datenmanipulationsoperationen auszuführen, indem SQL-Befehle wie INSERT zum Hinzufügen neuer Datensätze, UPDATE zum Ändern bestehender Datensätze und DELETE zum Entfernen von Datensätzen in einer Tabelle unter Beachtung von Primärschlüsseln und einfachen Constraints angewendet werden.
- eine einfache Datenbanktabelle mit grundlegenden Integritätsbedingungen umzusetzen, indem der SQL-Befehl CREATE TABLE verwendet wird, um Spalten mit passenden Datentypen sowie Primärschlüssel- und NOT NULL-Constraints zu definieren, aufbauend auf dem Wissen über das relationale Modell und Schlüsselkonzepte.