Next:
Impressum
Mysql
1
Impressum
2
Datenbanksystem
2.1
Aufgaben und Komponenten
2.1.1
Datenbank
2.1.2
Datenbankmanagementsystem
2.1.3
MySQL
3
Relationale Datenbanken
3.1
Eine Einführung
3.1.1
Abgrenzung zu anderen Datenbanken
3.1.2
Tabelle, Zeile und Spalte
3.1.3
Schlüssel, Primärschlüssel und Fremdschlüssel
3.1.4
Kardinalitäten und ER-Modell
3.1.5
Referentielle Integrität
3.1.6
Normalisierung und Normalformen
4
Datenbank und Tabellen anlegen
4.1
Die Programmiersprache SQL
4.2
Anlegen der Datenbank
4.2.1
Wie lege ich eine Datenbank an?
4.2.2
Wie lösche ich eine Datenbank?
4.2.3
Wie weise ich einen Zeichensatz zu?
4.2.4
Wie weise ich eine Sortierung zu?
4.3
Tabellen anlegen
4.3.1
Welche Datentypen gibt es?
4.3.2
Wie lege ich eine Tabelle an?
4.3.3
Wann eine Aufzählung (ENUM) und wann eine neue Tabelle?
4.3.4
Wann verwende ich NOT NULL?
4.3.5
Wie lege ich einen Fremdschlüssel fest?
4.3.6
Wie kann ich Tabellen aus anderen herleiten?
4.3.7
Temporäre Tabellen!
5
Indizes
5.1
Einführung
5.1.1
Wann wird ein Index automatisch erstellt?
5.1.2
Wie kann ich einen Index manuell erstellen?
5.2
Schlüsseleigenschaften und Dubletten
5.2.1
Wie kann ich die Schlüsseleigenschaft erzwingen?
5.2.2
Wie kann ich Dubletten verhindern?
5.2.3
Was bedeutet Indexselektivität?
5.2.4
Wie kann ich einen Index löschen?
6
Werte in Tabellen einfügen
6.1
Daten importieren
6.1.1
Das CSV-Format
6.1.2
LOAD DATA INFILE
6.1.3
Geänderte Werte importieren
6.2
Daten anlegen
6.2.1
Wie lege ich mehrere Zeilen mit einem Befehl an?
6.2.2
Wie kann ich eine einzelne Zeile anlegen?
6.2.3
Vorsicht Constraints!
6.3
Daten kopieren
7
Datenbank und Tabellen umbauen
7.1
Eine Datenbank ändern
7.2
Eine Datenbank löschen
7.3
Eine Tabelle ändern
7.3.1
Wie kann ich den Namen der Tabelle ändern?
7.3.2
Wie kann ich eine Spalte hinzufügen?
7.3.3
Wie kann ich die Spezifikation einer Spalte ändern?
7.3.4
Zeichenbasierte Spalten in der Länge verändern
7.3.5
Zeichensatz verändern
7.3.6
Zeichenbasierte Spalten in numerische Spalten verändern
7.3.7
Numerische Spalten im Wertebereich verändern
7.3.8
Datum- oder Zeitspalten verändern
7.3.9
Wie kann ich aus einer Tabelle Spalten entfernen?
7.4
Eine Tabelle löschen
7.4.1
Einfach löschen
7.4.2
Was bedeuten CASCADE und RESTRICT?
8
Werte in Tabellen verändern
8.1
WHERE-Klausel
8.1.1
Wie formuliere ich eine einfache Bedingung?
8.1.2
Wird zwischen Groß- und Kleinschreibung unterschieden?
8.1.3
Wie formuliere ich eine zusammengesetzte Bedingung?
8.2
Tabelleninhalte verändern
8.2.1
Szenario 1: Einfache Wertzuweisung
8.2.2
Szenario 2: Berechnete Werte
8.2.3
Szenario 3: Gebastelte Zeichenketten
8.2.4
Was bedeuten LOW_PRIORITY und IGNORE?
8.3
Tabelleninhalte löschen
8.3.1
Einzelne Datensätze löschen
8.3.2
Und was passiert bei Constraints?
8.3.3
Was passiert mit dem AUTO_INCREMENT?
8.3.4
Was bedeuten LOW_PRIORITY, QUICK und IGNORE?
8.3.5
Wie kann ich eine Tabelle komplett leeren?
9
Einfache Auswertungen
9.1
Ausdrücke
9.1.1
Konstanten
9.1.2
Wie kann ich Berechnungen vornehmen?
9.1.3
Wie ermittele ich Zufallszahlen?
9.1.4
Wie stecke ich das Berechnungsergebnis in eine Variable?
9.2
Zeilen- und Spaltenwahl
9.3
Sortierung
9.3.1
Was muss ich bei der Sortierung von Texten beachten?
9.3.2
Wird zwischen Groß- und Kleinschreibung unterschieden?
9.3.3
Wie werden Datums- und Uhrzeitwerte sortiert?
9.3.4
Wie kann ich das Sortieren beschleunigen?
9.4
Mehrfachausgaben unterbinden
9.4.1
Fallstudie: Datenimport von Bankdaten
9.4.2
Was muss ich beim DISTINCT bzgl. der Performance beachten?
9.5
Ergebnismenge ausschneiden
9.5.1
Wie kann ich die ersten n Datensätze ausschneiden?
9.5.2
Wie kann ich Teilmengen mittendrin ausschneiden?
9.6
Ergebnisse exportieren
9.6.1
Wie lege ich eine Exportdatei auf dem Server an?
9.6.2
Wie lege ich eine Exportdatei auf dem Client an?
10
Tabellen verbinden
10.1
Primär-Fremdschlüsselpaare
10.2
INNER JOIN zwischen zwei Tabellen
10.2.1
Bauanleitung für einen INNER JOIN
10.2.2
Abkürzende Schreibweisen
10.2.3
Als Datenquelle für temporäre Tabellen
10.2.4
JOIN über Nichtschlüsselspalten
10.3
INNER JOIN über mehr als zwei Tabellen
10.4
OUTER JOIN
10.5
SELF JOIN
10.6
Eine Verknüpfung beschleunigen
11
Aggregatfunktionen
11.1
Statistisches mit Aggregatfunktionen
11.2
Tabelle in Gruppen zerlegen
11.3
Gruppenergebnisse filtern
11.3.1
Kann ich nach Ausdrücken gruppieren?
11.3.2
Kann ich nach mehr als einer Spalte gruppieren?
11.3.3
Wie kann ich GROUP BY beschleunigen?
12
Auswertungen mit Unterabfragen
12.1
Das Problem und die Lösung
12.2
Nicht korrelierende Unterabfrage
12.2.1
Skalarunterabfrage
12.2.2
Listenunterabfrage
12.2.3
Unterschied zwischen IN(), ALL() und ANY()
12.2.4
Unterschied zwischen NOT IN() und <> ALL()
12.2.5
Tabellenunterabfrage
12.3
Korrelierende Unterabfrage
13
Mengenoperationen
13.1
Die Vereinigung mit UNION
13.2
Die Schnittmenge
13.2.1
Mit INTERSECT
13.2.2
Mit Unterabfragen
13.3
Die Differenzmenge
13.3.1
Mit EXCEPT
13.3.2
Mit Unterabfragen
13.4
UNION, INTERSECT und EXCEPT verstehen
14
Bedingungslogik
14.1
Warum ein CASE?
14.2
Einfacher CASE
14.3
Searched CASE
15
Views
15.1
Was ist eine View?
15.1.1
Wie lege ich eine View an?
15.1.2
Wie wird eine View verarbeitet?
15.1.3
Wie lösche ich eine View?
15.1.4
Wie ändere ich eine View?
15.2
Anwendungsgebiet: Vereinfachung
15.3
Anwendungsgebiet: Datenschutz
15.4
Grenzen einer View
16
Locking
17
Transaktion
17.1
Das Problem
17.2
Was ist eine Transaktion?
17.3
Isolationsebenen
17.3.1
READ UNCOMMITTED
17.3.2
READ COMMITTED
17.3.3
REPEATABLE READ
17.3.4
SERIALIZABLE
17.4
Deadlock
18
STORED PROCEDURE
18.1
Einstieg und Variablen
18.1.1
Variablen und Parameter
18.2
Verzweigung
18.2.1
Einfache Verzweigung mit IF
18.2.2
Mehrfache Verzweigung mit CASE
18.3
Schleifen
18.3.1
LOOP-Schleife
18.3.2
WHILE-Schleife
18.3.3
REPEAT-Schleife
18.4
Transaktion innerhalb einer Prozedur
18.5
CURSOR
19
Funktion
19.1
Einfache Funktion erstellen
19.2
Deterministische vs. Nicht-deterministische Funktionen
19.3
Funktionen mit komplexer Logik
19.4
Funktionen mit Tabellenverarbeitung
19.5
Datum- und Zeitfunktionen
19.6
String-Funktionen
20
TRIGGER
20.1
Was ist das?
20.2
Ein Beispiel für einen INSERT-Trigger
20.3
Ein Beispiel für einen UPDATE-Trigger
20.4
Ein Beispiel für einen DELETE-Trigger
21
EVENT
21.1
Wie lege ich ein Ereignis an?
21.2
Wie werde ich ein Ereignis wieder los?
22
Datenbank administrieren
22.1
Backup und Restore
22.1.1
Backup mit mysqldump
22.1.2
Restore mit mysqldump
22.2
Benutzerrechte
22.2.1
Benutzerrechte und Privilegien
22.2.2
Benutzer anlegen/Recht zuweisen
23
SQL Security
23.1
Einführung
23.2
SQL Injection
23.2.1
Beispiel für SQL Injection
23.2.2
Weitere gefährliche Beispiele
23.3
Schutzmaßnahmen
23.3.1
1. Prepared Statements
23.3.2
2. Escaping von Eingaben
23.3.3
3. Parametrisierte Abfragen
23.4
Best Practices für sichere Datenbankzugriffe
23.4.1
1. Prinzip der geringsten Privilegien
23.4.2
2. Validierung von Eingaben
23.4.3
3. Fehlerbehandlung
23.5
Weitere Sicherheitsmaßnahmen
23.5.1
1. Verschlüsselung sensibler Daten
23.5.2
2. Audit Logging
23.5.3
3. Regelmäßige Sicherheitsüberprüfungen
23.6
Zusammenfassung der wichtigsten Punkte
23.7
Übungen und Beispiele
24
Übungsaufgaben: Datenbank und Tabellen anlegen
24.1
Aufgabe 1: Einfache Tabellenerstellung
24.2
Aufgabe 2: Erweiterung mit Constraints
24.3
Aufgabe 3: Komplexe Tabelle mit Enums
24.4
Aufgabe 4: Tabelle für n:m-Beziehung
24.5
Aufgabe 5: Tabelle mit speziellem Index
24.6
Aufgabe 6: View erstellen
24.7
Aufgabe 7: Tabelle mit automatischer Zeitstempelung
24.8
Aufgabe 8: Datenbank-Zeichensatz
24.9
Aufgabe 9: Temporäre Tabelle
24.10
Aufgabe 10: Wartungstabellen
25
Übungsaufgaben: Werte in Tabellen einfügen
25.1
Vorbereitung
25.2
Aufgabe 1: Einzelne Datensätze einfügen
25.3
Aufgabe 2: Mehrere Datensätze gleichzeitig
25.4
Aufgabe 3: Daten mit Fremdschlüsseln
25.5
Aufgabe 4: Verknüpfungstabelle füllen
25.6
Aufgabe 5: CSV-Import vorbereiten
25.7
Aufgabe 6: Daten kopieren
25.8
Aufgabe 7: Bedingte Einfügung
25.9
Aufgabe 8: Mehrere verknüpfte Einfügungen
25.10
Aufgabe 9: Daten aus einer anderen Quelle
25.11
Aufgabe 10: Automatische Werte
26
Übungsaufgaben: Einfache Auswertungen
26.1
Aufgabe 1: Grundlegende Selektion
26.2
Aufgabe 2: Zahlen formatieren
26.3
Aufgabe 3: Datumswerte
26.4
Aufgabe 4: Berechnete Spalten
26.5
Aufgabe 5: Bedingungen kombinieren
26.6
Aufgabe 6: CASE-Ausdrücke
26.7
Aufgabe 7: NULL-Werte behandeln
26.8
Aufgabe 8: DISTINCT und Sortierung
26.9
Aufgabe 9: TOP-N Abfragen
26.10
Aufgabe 10: String-Funktionen
27
Übungsaufgaben: Tabellen verbinden
27.1
Aufgabe 1: Einfacher INNER JOIN
27.2
Aufgabe 2: Mehrfach-JOIN
27.3
Aufgabe 3: LEFT OUTER JOIN
27.4
Aufgabe 4: RIGHT OUTER JOIN
27.5
Aufgabe 5: SELF JOIN
27.6
Aufgabe 6: Komplexe Verknüpfung
27.7
Aufgabe 7: JOIN mit Bedingungen
27.8
Aufgabe 8: Verknüpfung mit Aggregation
27.9
Aufgabe 9: Mehrfach-Beziehungen
27.10
Aufgabe 10: Komplexe Analyse
28
Übungsaufgaben: Differenzierte Auswertungen
28.1
Aufgabe 1: Einfache Aggregation
28.2
Aufgabe 2: Zeitbasierte Gruppierung
28.3
Aufgabe 3: Gruppierung mit Bedingungen
28.4
Aufgabe 4: Mehrstufige Gruppierung
28.5
Aufgabe 5: Gruppierung mit Berechnungen
28.6
Aufgabe 6: Gruppierung mit JOINs
28.7
Aufgabe 7: Zeitreihenanalyse
28.8
Aufgabe 8: Komplexe Gruppierung
28.9
Aufgabe 9: Aggregation mit Filterung
28.10
Aufgabe 10: Vergleichende Analyse
29
Übungsaufgaben: Auswertungen mit Unterabfragen
29.1
Aufgabe 1: Einfache Skalare Unterabfrage
29.2
Aufgabe 2: Listen-Unterabfrage mit IN
29.3
Aufgabe 3: ANY/ALL-Unterabfrage
29.4
Aufgabe 4: Korrelierte Unterabfrage
29.5
Aufgabe 5: Unterabfragen in der FROM-Klausel
29.6
Aufgabe 6: Existenz-Prüfung mit EXISTS
29.7
Aufgabe 7: Verschachtelte Unterabfragen
29.8
Aufgabe 8: UPDATE mit Unterabfragen
29.9
Aufgabe 9: INSERT mit Unterabfragen
29.10
Aufgabe 10: Komplexe Kombination
30
Zusätzliche einfache Übungsaufgaben für Unterabfragen
30.1
Aufgabe 11: Produkte über Durchschnittspreis
30.2
Aufgabe 12: Mitarbeiter mit überdurchschnittlich vielen Bestellungen
31
Übungsaufgaben: Mengenoperationen
31.1
Aufgabe 1: Einfache UNION
31.2
Aufgabe 2: UNION ALL
31.3
Aufgabe 3: Schnittmenge (INTERSECT Alternative)
31.4
Aufgabe 4: Differenzmenge (EXCEPT Alternative)
31.5
Aufgabe 5: Kombinierte Mengenoperationen
31.6
Aufgabe 6: Mengenoperationen mit Aggregation
31.7
Aufgabe 7: Zeitbasierte Mengenoperationen
31.8
Aufgabe 8: Komplexe Filterung
31.9
Aufgabe 9: Analyse von Gemeinsamkeiten
31.10
Aufgabe 10: Reporting
32
Übungsaufgaben: Bedingungslogik
32.1
Aufgabe 1: Einfacher CASE
32.2
Aufgabe 2: Mehrfachbedingungen
32.3
Aufgabe 3: CASE mit Aggregation
32.4
Aufgabe 4: CASE in WHERE-Bedingung
32.5
Aufgabe 5: UPDATE mit CASE
32.6
Aufgabe 6: CASE mit Unterabfragen
32.7
Aufgabe 7: Dynamische Texte
32.8
Aufgabe 8: CASE für Berechnungen
32.9
Aufgabe 9: CASE für Formatierung
32.10
Aufgabe 10: Komplexe Geschäftslogik
33
Übungsaufgaben: Views
33.1
Aufgabe 1: Einfache View
33.2
Aufgabe 2: View für Berechtigungen
33.3
Aufgabe 3: Aggregierende View
33.4
Aufgabe 4: View mit Unterabfragen
33.5
Aufgabe 5: Updatebare View
33.6
Aufgabe 6: Hierarchische View
33.7
Aufgabe 7: View für Reporting
33.8
Aufgabe 8: Dynamische View
33.9
Aufgabe 9: View-Kombination
33.10
Aufgabe 10: View-Migration