Zuletzt aktualisiert am 04.12.2025 6 Minuten Lesezeit

SQL

SQL (Structured Query Language) ist die standardisierte Abfragesprache fuer relationale Datenbankmanagementsysteme (RDBMS). Mit SQL kannst du Daten in Datenbanken erstellen, abfragen, aendern und loeschen. Als deklarative Sprache beschreibst du mit SQL was du haben moechtest, nicht wie es berechnet werden soll - das uebernimmt das Datenbanksystem fuer dich.

Geschichte und Entwicklung von SQL

SQL wurde in den fruehen 1970er Jahren bei IBM von Donald D. Chamberlin und Raymond F. Boyce entwickelt. Ihre Arbeit basierte auf dem bahnbrechenden relationalen Datenbankmodell von Edgar F. Codd, der vorschlug, Daten in Tabellen mit Zeilen und Spalten zu strukturieren.

Urspruenglich hiess die Sprache SEQUEL (Structured English Query Language). IBM musste den Namen jedoch zu SQL aendern, da SEQUEL bereits als Markenname von einer britischen Flugzeugfirma geschuetzt war. Die erste kommerzielle Implementierung erschien 1979 von Relational Software Inc., dem spaeteren Oracle.

Wichtige Meilensteine

  • 1970: Edgar F. Codd veroeffentlicht das relationale Datenbankmodell
  • 1974: IBM veroeffentlicht die erste SQL-Spezifikation
  • 1979: Erste kommerzielle SQL-Implementierung (Oracle)
  • 1986: ANSI standardisiert SQL (SQL-86)
  • 1987: ISO uebernimmt den Standard (ISO 9075:1987)
  • 1992: SQL-92 mit erweiterten Funktionen (JOINs, ALTER, DROP)
  • 1999: SQL:1999 mit objektorientierten Erweiterungen
  • 2016: SQL:2016 mit JSON-Unterstuetzung
  • 2023: SQL:2023 als aktueller Standard

SQL-Befehlskategorien

SQL-Befehle werden nach ihrer Funktion in verschiedene Kategorien eingeteilt. Diese Einteilung hilft dir, die unterschiedlichen Aufgabenbereiche von SQL zu verstehen und die richtigen Befehle fuer deine Anforderungen auszuwaehlen.

DDL - Data Definition Language

Mit DDL-Befehlen definierst du die Struktur deiner Datenbank. Du erstellst, aenderst und loeschst Tabellen, Indizes und andere Datenbankobjekte.

-- Tabelle erstellen
CREATE TABLE mitarbeiter (
    id INT PRIMARY KEY AUTO_INCREMENT,
    vorname VARCHAR(50) NOT NULL,
    nachname VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    einstellungsdatum DATE
);

-- Spalte hinzufuegen
ALTER TABLE mitarbeiter ADD gehalt DECIMAL(10,2);

-- Tabelle loeschen
DROP TABLE mitarbeiter;

DML - Data Manipulation Language

DML-Befehle nutzt du fuer die taegliche Arbeit mit Daten. Hierzu gehoeren das Einfuegen, Abfragen, Aktualisieren und Loeschen von Datensaetzen - auch bekannt als CRUD-Operationen.

-- Daten einfuegen (INSERT)
INSERT INTO mitarbeiter (vorname, nachname, email)
VALUES ('Max', 'Mustermann', 'max@firma.de');

-- Daten abfragen (SELECT)
SELECT vorname, nachname, email
FROM mitarbeiter
WHERE einstellungsdatum > '2024-01-01'
ORDER BY nachname ASC;

-- Daten aktualisieren (UPDATE)
UPDATE mitarbeiter
SET gehalt = 45000.00
WHERE id = 1;

-- Daten loeschen (DELETE)
DELETE FROM mitarbeiter
WHERE id = 5;

DCL - Data Control Language

DCL-Befehle steuern die Zugriffsrechte auf Datenbankobjekte. Mit ihnen legst du fest, welche Benutzer welche Operationen ausfuehren duerfen.

-- Leserechte vergeben
GRANT SELECT ON mitarbeiter TO benutzer_readonly;

-- Alle Rechte vergeben
GRANT ALL PRIVILEGES ON firma.* TO administrator;

-- Rechte entziehen
REVOKE DELETE ON mitarbeiter FROM praktikant;

TCL - Transaction Control Language

TCL-Befehle steuern Transaktionen in der Datenbank. Eine Transaktion fasst mehrere Operationen zusammen, die entweder alle erfolgreich sein muessen oder gemeinsam rueckgaengig gemacht werden.

-- Transaktion starten
BEGIN TRANSACTION;

-- Mehrere Operationen
UPDATE konten SET saldo = saldo - 100 WHERE id = 1;
UPDATE konten SET saldo = saldo + 100 WHERE id = 2;

-- Aenderungen dauerhaft speichern
COMMIT;

-- Oder: Aenderungen verwerfen
-- ROLLBACK;

Wichtige SQL-Konzepte

JOINs - Tabellen verknuepfen

JOINs verbinden Daten aus mehreren Tabellen basierend auf gemeinsamen Spalten. Sie sind essentiell fuer normalisierte Datenbanken, in denen Informationen auf mehrere Tabellen verteilt sind.

-- INNER JOIN: Nur uebereinstimmende Datensaetze
SELECT m.vorname, m.nachname, a.name AS abteilung
FROM mitarbeiter m
INNER JOIN abteilungen a ON m.abteilung_id = a.id;

-- LEFT JOIN: Alle aus linker Tabelle + Matches
SELECT m.vorname, p.projektname
FROM mitarbeiter m
LEFT JOIN projekte p ON m.id = p.leiter_id;

Aggregatfunktionen

Aggregatfunktionen fassen mehrere Datensaetze zu einem Ergebnis zusammen. Sie werden oft mit GROUP BY kombiniert, um Berechnungen fuer bestimmte Gruppen durchzufuehren.

-- Grundlegende Aggregatfunktionen
SELECT 
    COUNT(*) AS anzahl_mitarbeiter,
    AVG(gehalt) AS durchschnittsgehalt,
    MAX(gehalt) AS hoechstes_gehalt,
    MIN(gehalt) AS niedrigstes_gehalt,
    SUM(gehalt) AS gehaltsumme
FROM mitarbeiter;

-- Mit GROUP BY fuer Abteilungen
SELECT 
    abteilung_id,
    COUNT(*) AS anzahl,
    AVG(gehalt) AS durchschnitt
FROM mitarbeiter
GROUP BY abteilung_id
HAVING COUNT(*) > 5;

Unterabfragen (Subqueries)

Unterabfragen sind SQL-Abfragen innerhalb einer aeusseren Abfrage. Sie ermoeglichen komplexe Datenabfragen in einem einzigen Statement.

-- Mitarbeiter mit ueberdurchschnittlichem Gehalt
SELECT vorname, nachname, gehalt
FROM mitarbeiter
WHERE gehalt > (
    SELECT AVG(gehalt) FROM mitarbeiter
);

-- IN mit Unterabfrage
SELECT * FROM mitarbeiter
WHERE abteilung_id IN (
    SELECT id FROM abteilungen WHERE standort = 'Berlin'
);

SQL-Dialekte und Datenbanksysteme

Obwohl SQL standardisiert ist, haben verschiedene Datenbankhersteller eigene Erweiterungen entwickelt. Der Kern-SQL-Standard wird von allen Systemen unterstuetzt, aber jedes System bietet zusaetzliche Funktionen.

Datenbanksystem SQL-Dialekt Haupteinsatzgebiet
Oracle Database PL/SQL Enterprise-Anwendungen, Grossunternehmen
Microsoft SQL Server T-SQL Windows-Umgebungen, .NET-Anwendungen
MySQL/MariaDB MySQL-SQL Webanwendungen, LAMP-Stack
PostgreSQL PL/pgSQL Open-Source-Enterprise, GIS-Anwendungen
SQLite Standard-SQL Mobile Apps, eingebettete Systeme

Laut aktuellen Statistiken dominieren relationale SQL-Datenbanken weiterhin den Markt mit etwa 58% Anteil. Oracle fuehrt bei Enterprise-Loesungen, waehrend MySQL und PostgreSQL im Open-Source-Bereich beliebt sind. Bemerkenswert ist, dass 79% der Unternehmen inzwischen zwei oder mehr Datenbanksysteme parallel einsetzen.

SQL-Sicherheit

Ein kritischer Aspekt bei der Arbeit mit SQL ist die Sicherheit. SQL-Injection gehoert zu den haeufigsten und gefaehrlichsten Angriffsmethoden auf Webanwendungen. Dabei schleusen Angreifer schadhaften SQL-Code ueber Benutzereingaben ein.

-- UNSICHER: Direkte String-Verkettung
$query = "SELECT * FROM users WHERE name = '" + userInput + "'";

-- SICHER: Prepared Statements verwenden
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = ?");
$stmt->execute([$userInput]);

Um dich vor SQL-Injection zu schuetzen, solltest du immer Prepared Statements oder Parameterized Queries verwenden. Zusaetzlich helfen Eingabevalidierung und das Prinzip der minimalen Rechte (Least Privilege) bei der Absicherung.

SQL in der IT-Praxis

SQL ist eine der am haeufigsten nachgefragten Faehigkeiten in der IT-Branche. Du begegnest SQL in nahezu jedem Bereich der Softwareentwicklung und Systemadministration:

  • Backend-Entwicklung: Datenbankanbindung in Java, PHP oder Python
  • Web-APIs: REST-APIs mit Datenbankzugriff
  • Business Intelligence: Datenanalyse und Reporting
  • DevOps: Datenbankmigration und -verwaltung
  • Data Engineering: ETL-Prozesse und Data Warehousing

Als Fachinformatiker fuer Anwendungsentwicklung wirst du SQL taeglich nutzen, um Anwendungen mit Datenbanken zu verbinden. Auch Fachinformatiker fuer Systemintegration benoetigen SQL-Kenntnisse fuer die Administration und Wartung von Datenbanksystemen.

Quellen und weiterfuehrende Links