PostgreSQL ist nicht nur eine klassische SQL-Datenbank – es ist ein Framework für Datenverarbeitung. Du kannst neue Datentypen, Funktionen und sogar eigene Programmiersprachen hinzufügen.

🔹 Erweiterungen verwalten

Alle installierbaren Erweiterungen anzeigen:
dx
Eine Erweiterung aktivieren:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
👉 Erweiterungen sind wie Plugins, die zusätzliche Features bereitstellen. 🔹 JSON & JSONB Postgres unterstützt JSON-Daten von Haus aus – MySQL nur eingeschränkt. Tabelle mit JSONB
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    data JSONB
);
Daten einfügen
INSERT INTO users (name, data)
VALUES ('Anna', '{"stadt": "Berlin", "alter": 29}');
Daten abfragen
SELECT name, data->>'stadt' AS stadt
FROM users
WHERE data->>'alter' = '29';
👉 JSONB speichert Daten binär & effizient – schneller als reines JSON.

🔹 Arrays

Postgres kann Arrays direkt speichern:
CREATE TABLE produkte (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    tags TEXT[]
);
Einfügen:
INSERT INTO produkte (name, tags)
VALUES ('Laptop', '{"Elektronik","Computer","Mobil"}');
Abfragen:
SELECT * FROM produkte WHERE 'Computer' = ANY(tags);

🔹 UUIDs (Universally Unique Identifier)

UUIDs sind eindeutige IDs über Systeme hinweg – oft besser als SERIAL. Erweiterung aktivieren:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Tabelle mit UUID:
CREATE TABLE kunden (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    name VARCHAR(100)
);

🔹 PostGIS (Geodaten)

PostGIS macht PostgreSQL zu einem Geodaten-GIS-System. Damit kannst du Standorte, Karten und Entfernungen speichern und berechnen. Beispiel:
CREATE EXTENSION postgis;
Tabelle mit Geodaten:
CREATE TABLE orte (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    position GEOGRAPHY(Point, 4326)
);
👉 Damit kannst du Abfragen wie "Alle Orte im Umkreis von 10 km" machen.

🔹 Eigene Funktionen schreiben

Mit PL/pgSQL (Postgres’ eigener Sprache) kannst du Funktionen schreiben:
CREATE OR REPLACE FUNCTION verdoppeln(x INT)
RETURNS INT AS $$
BEGIN
  RETURN x * 2;
END;
$$ LANGUAGE plpgsql;
Test:
SELECT verdoppeln(5);
👉 Ergebnis: 10

🔹 Unterschiede zu MySQL/MariaDB

  • PostgreSQL hat mehr Datentypen (JSONB, Arrays, Geodaten).
  • Erweiterungen wie PostGIS machen Postgres einzigartig.
  • MySQL ist einfacher, aber weniger flexibel.

🔹 Übungen

  1. Erstelle eine Tabelle users mit einer Spalte data JSONB und speichere zusätzliche Infos (Alter, Stadt).
  2. Füge einen Benutzer mit JSON-Daten ein und frage die Stadt ab.
  3. Lege eine Tabelle mit tags TEXT[] an und suche nach einem bestimmten Tag.
  4. Bonus: Aktiviere uuid-ossp und erstelle eine Tabelle mit UUID-Primärschlüssel.

✅ Zusammenfassung

  • PostgreSQL unterstützt JSONB, Arrays und UUIDs direkt.
  • Erweiterungen wie uuid-ossp oder PostGIS erweitern die Datenbank enorm.
  • Eigene Funktionen mit PL/pgSQL ermöglichen komplexe Logik in der Datenbank.
  • Postgres ist dadurch flexibler und mächtiger als MySQL/MariaDB.
👉 Im nächsten Kapitel lernst du, wie man Backups & Restore in PostgreSQL macht – ein absolutes Muss für Admins.  

📚 Inhaltsverzeichnis

👉 psql Kapitel 1: Installation & Anmeldung mit psql 👉 psql Kapitel 2: Benutzer & Rollen in PostgreSQL 👉 psql Kapitel 3: Datenbanken & Tabellen erstellen 👉 psql Kapitel 4: CRUD-Befehle (SELECT, INSERT, UPDATE, DELETE) 👉 psql Kapitel 5: Schlüssel & Constraints in PostgreSQL 👉 psql Kapitel 6: Indizes & Performance 👉 psql Kapitel 7: Erweiterungen & Spezialfunktionen 👉 psql Kapitel 8: Backups & Restore in PostgreSQL

⭐ Bonus-Kapitel

👉 psql Kapitel 9 (Bonus): Admin-Tipps & Best Practices für PostgreSQL