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
- Erstelle eine Tabelle
users
mit einer Spaltedata JSONB
und speichere zusätzliche Infos (Alter, Stadt). - Füge einen Benutzer mit JSON-Daten ein und frage die Stadt ab.
- Lege eine Tabelle mit
tags TEXT[]
an und suche nach einem bestimmten Tag. - 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