SQL
SQL ist eine standardisierte Abfragesprache zur Verwaltung relationaler Datenbanken. Sie basiert auf dem relationalen Modell, das Daten in Tabellen mit fester Struktur organisiert und Beziehungen zwischen diesen Tabellen durch Schlüssel herstellt. SQL unterstützt verschiedene Datentypen, Integritätsregeln sowie Operationen zur Datenmanipulation und -abfrage. Zu den gängigen Datenbanksystemen, die SQL verwenden, gehören MySQL, PostgreSQL und Oracle.
Grundlagen relationaler Datenbanken
Abschnitt betitelt „Grundlagen relationaler Datenbanken“Relationale Datenbanken speichern Daten in Tabellen mit fester Struktur. Beziehungen zwischen Tabellen werden durch Schlüssel hergestellt. SQL dient als Schnittstelle zur Interaktion mit diesen Datenbanken und ermöglicht die Definition von Schemata, die Manipulation von Daten sowie komplexe Abfragen.
Datentypen in SQL
Abschnitt betitelt „Datentypen in SQL“SQL unterstützt verschiedene Datentypen zur Speicherung unterschiedlicher Datenarten. Diese umfassen:
- Boolean: Wahrheitswerte wie TRUE oder FALSE.
- Integer: Ganzzahlen, beispielsweise INT oder BIGINT.
- Float/Double: Gleitkommazahlen für approximative Berechnungen.
- Decimal/Numeric: Festkommazahlen für präzise Berechnungen.
- Date/Time: Datums- und Zeitwerte.
- Char/Varchar: Texte fester oder variabler Länge.
- Text/CLOB: Große Textmengen.
- BLOB: Binäre Daten, etwa Bilder.
- Geometry: Für Geodaten, nicht in allen DBMS verfügbar.
Integrität und Schlüssel
Abschnitt betitelt „Integrität und Schlüssel“Integritätsregeln gewährleisten die Konsistenz der Daten in relationalen Datenbanken. Der Primärschlüssel identifiziert Datensätze eindeutig. Fremdschlüssel verweisen auf Primärschlüssel anderer Tabellen und unterstützen referenzielle Integrität.
Referenzielle Integrität
Abschnitt betitelt „Referenzielle Integrität“Referenzielle Integrität stellt gültige Beziehungen zwischen Tabellen sicher. Aktualisierungs- und Löschweitergaben können definiert werden, um Änderungen in verknüpften Tabellen zu propagieren.
FOREIGN KEY (spalte) REFERENCES tabelle(spalte) ON UPDATE CASCADE ON DELETE CASCADE
Primärschlüssel
Abschnitt betitelt „Primärschlüssel“Primärschlüssel dienen der eindeutigen Identifikation von Datensätzen.
PRIMARY KEY (spalte)
Fremdschlüssel
Abschnitt betitelt „Fremdschlüssel“Fremdschlüssel verweisen auf Primärschlüssel anderer Tabellen.
FOREIGN KEY (spalte) REFERENCES tabelle(spalte)
Datenbankoperationen
Abschnitt betitelt „Datenbankoperationen“SQL ermöglicht die Erstellung und Änderung von Tabellenstrukturen sowie die Manipulation und Abfrage von Daten. Indizes verbessern die Abfrageleistung.
Tabellenstruktur
Abschnitt betitelt „Tabellenstruktur“Tabellen werden mit CREATE TABLE erstellt und mit ALTER TABLE modifiziert.
CREATE TABLE tabelle ( spalte1 datentyp, spalte2 datentyp, ...);
ALTER TABLE tabelle ADD spalte datentyp;
Index erstellen
Abschnitt betitelt „Index erstellen“Indizes beschleunigen Abfragen auf bestimmten Spalten.
CREATE INDEX idx_name ON tabelle (spalte);
Datenmanipulation
Abschnitt betitelt „Datenmanipulation“Daten werden mit INSERT, UPDATE und DELETE bearbeitet.
INSERT INTO tabelle (spalte1, spalte2) VALUES (wert1, wert2);UPDATE tabelle SET spalte = wert WHERE bedingung;DELETE FROM tabelle WHERE bedingung;
Datenabfrage
Abschnitt betitelt „Datenabfrage“Abfragen erfolgen mit SELECT, optional mit WHERE-Bedingungen.
SELECT spalte1, spalte2 FROM tabelle WHERE bedingung;
Sortieren und Gruppieren
Abschnitt betitelt „Sortieren und Gruppieren“Ergebnisse können sortiert oder gruppiert werden.
SELECT spalte FROM tabelle ORDER BY spalte;SELECT spalte, COUNT(*) FROM tabelle GROUP BY spalte HAVING COUNT(*) > 5;
Komplexe Abfragen
Abschnitt betitelt „Komplexe Abfragen“Komplexe Abfragen nutzen Unterabfragen und Joins zur Kombination von Daten aus mehreren Tabellen.
Unterabfragen
Abschnitt betitelt „Unterabfragen“Unterabfragen sind verschachtelte SELECT-Anweisungen.
SELECT spalte FROM tabelle WHERE spalte IN (SELECT spalte FROM andere_tabelle);
Tabellenverknüpfung (JOIN)
Abschnitt betitelt „Tabellenverknüpfung (JOIN)“Joins kombinieren Zeilen aus zwei oder mehr Tabellen basierend auf einer Bedingung.
SELECT t1.spalte, t2.spalteFROM tabelle1 t1JOIN tabelle2 t2 ON t1.id = t2.fremdschluessel;
JOIN-Typen
Abschnitt betitelt „JOIN-Typen“Verschiedene JOIN-Typen bestimmen, welche Zeilen in das Ergebnis einbezogen werden.
graph TD A[INNER JOIN] --> B[Gibt nur übereinstimmende Zeilen aus beiden Tabellen zurück] C[LEFT JOIN] --> D[Gibt alle Zeilen aus der linken Tabelle und übereinstimmende aus der rechten; nicht übereinstimmende mit NULL] E[RIGHT JOIN] --> F[Gibt alle Zeilen aus der rechten Tabelle und übereinstimmende aus der linken; nicht übereinstimmende mit NULL] G[FULL JOIN] --> H[Kombiniert LEFT und RIGHT JOIN; alle Zeilen aus beiden Tabellen mit NULL für nicht übereinstimmende] I[CROSS JOIN] --> J[Erzeugt kartesisches Produkt; jede Zeile der ersten mit jeder der zweiten Tabelle]
INNER JOIN
Abschnitt betitelt „INNER JOIN“Gibt nur übereinstimmende Zeilen aus beiden Tabellen zurück.
SELECT columnsFROM table1INNER JOIN table2ON table1.column = table2.column;
LEFT JOIN (oder LEFT OUTER JOIN)
Abschnitt betitelt „LEFT JOIN (oder LEFT OUTER JOIN)“Gibt alle Zeilen aus der linken Tabelle und übereinstimmende Zeilen aus der rechten Tabelle zurück. Nicht übereinstimmende Zeilen aus der rechten Tabelle werden mit NULL-Werten gefüllt.
RIGHT JOIN (oder RIGHT OUTER JOIN)
Abschnitt betitelt „RIGHT JOIN (oder RIGHT OUTER JOIN)“Funktioniert wie LEFT JOIN, behält jedoch alle Zeilen aus der rechten Tabelle.
FULL JOIN (oder FULL OUTER JOIN)
Abschnitt betitelt „FULL JOIN (oder FULL OUTER JOIN)“Kombiniert Ergebnisse von LEFT und RIGHT JOIN. Gibt alle Zeilen aus beiden Tabellen zurück, mit NULL-Werten für nicht übereinstimmende Zeilen.
CROSS JOIN
Abschnitt betitelt „CROSS JOIN“Erzeugt das kartesische Produkt beider Tabellen. Jede Zeile aus der ersten Tabelle wird mit jeder Zeile aus der zweiten Tabelle kombiniert.
Ausdrücke und Bedingungen
Abschnitt betitelt „Ausdrücke und Bedingungen“SQL verwendet Operatoren und Funktionen zur Formulierung von Bedingungen in Abfragen.
- Vergleichsoperatoren: =, <>, <, >, <=, >=
- Logische Operatoren: AND, OR, NOT
- LIKE für Textmuster: ‘A%’ (beginnt mit A), ‘%A%’ (enthält A)
- BETWEEN für Wertebereiche
- IN für Mengenzugehörigkeit
Aggregatfunktionen
Abschnitt betitelt „Aggregatfunktionen“Aggregatfunktionen berechnen Werte über mehrere Zeilen hinweg, oft in Kombination mit GROUP BY und HAVING.
Berechnet die Summe aller Werte in einer numerischen Spalte.
SELECT SUM(verkaufspreis) AS GesamteinnahmenFROM verkauf;
Dies berechnet die gesamte Summe aller Verkaufspreise in der Tabelle “verkauf”.
Berechnet den Durchschnitt aller Werte in einer numerischen Spalte.
SELECT AVG(alter) AS DurchschnittsalterFROM kunden;
Dies berechnet das durchschnittliche Alter aller Kunden.
COUNT()
Abschnitt betitelt „COUNT()“Zählt die Anzahl der Zeilen oder nicht-NULL-Werte in einer Spalte.
SELECT COUNT(*) AS AnzahlKundenFROM kunden;
Dies zählt die gesamte Anzahl der Kunden.
SELECT COUNT(bestellnummer) AS AnzahlBestellungenFROM bestellungen;
Dies zählt die Anzahl der Bestellungen, wobei NULL-Werte in der Spalte “bestellnummer” ignoriert werden.
Findet den größten Wert in einer Spalte.
SELECT MAX(gehalt) AS HoehestesGehaltFROM mitarbeiter;
Dies findet das höchste Gehalt unter den Mitarbeitern.
Findet den kleinsten Wert in einer Spalte.
SELECT MIN(geburtstag) AS JuengsterMitarbeiterFROM mitarbeiter;
Dies findet das Geburtsdatum des jüngsten Mitarbeiters.
Weitere Beispiele und Kombinationen
Abschnitt betitelt „Weitere Beispiele und Kombinationen“Aggregatfunktionen werden häufig mit GROUP BY kombiniert, um Ergebnisse nach Kriterien zu gruppieren.
SELECT land, AVG(verkaufspreis) AS DurchschnittlicherVerkaufspreisFROM verkaufGROUP BY land;
Dies berechnet den durchschnittlichen Verkaufspreis für jedes Land.
Mit HAVING können Gruppen basierend auf Bedingungen gefiltert werden.
SELECT abteilung, COUNT(*) AS AnzahlMitarbeiterFROM mitarbeiterGROUP BY abteilungHAVING COUNT(*) > 10;
Dies zählt die Mitarbeiter pro Abteilung und zeigt nur Abteilungen mit mehr als 10 Mitarbeitern an.
Wichtige Hinweise
Abschnitt betitelt „Wichtige Hinweise“- Aggregatfunktionen ignorieren normalerweise NULL-Werte, außer COUNT(*), das alle Zeilen zählt.
- COUNT(DISTINCT) zählt die Anzahl eindeutiger Werte in einer Spalte.
- SUM(CASE WHEN … THEN … ELSE … END) ermöglicht bedingte Summierungen.
Beispiel für eine Kombination:
SELECT AVG(gehalt) AS durchschnittsgehaltFROM mitarbeiterGROUP BY abteilung;