Kurs "Datenbanken und SQL"

| last update: 2017-10-27

Dies ist die begleitende Seite für den Kurs, welchen ich in den von Jahren 2016 bis 2017 insgesamt sechs Mal für das Regionale Rechenzentrum (RRZK) der Universität zu Köln halten durfte.

Der während des Kurs vorgeführte SQL-Code findet sich auf Github.

Einstieg & Organisatorisches

Foliensatz "Einstieg" (PDF)

Themen:

  • Organisatorisches
  • Einführung
  • Was ist die Structured Query Language (SQL)?
  • Grundbegriffe / Terminologie
  • Sinn und Zweck von Database Management Systemen (DBMS)
  • Das Testsystem und Ihr Zugang

weiterführende Informationen / Links:

  • Marktübersicht Datenbanksysteme
  • Tour durch ein DataCenter von Google (360°)
  • Kundenverhalten vorhersagen mit Daten
    Ein kritischer Artikel der New York Times zum Thema Datensammlungen im Einzelhandel. Einerseits faszinierend und anderseits beängstigend wie Daten genutzt werden können. Definitive Leseempfehlung auch in Hinsicht auf Ihre Verantwortung als Datenbankdesigner.
  • Excel mit Standardeinstellungen kann eine sehr schlechte Idee sein. Obwohl Microsoft Excel gelegentlich ein gutes Werkzeug ist um sich einen ersten Überblick zu verschaffen.
  • Anleitung zu phpMyAdmin
    Die Oberfläche von phpMyAdmin ist weitgehend selbsterklärend. Dennoch gibt es eine Anleitung. Die dort genannten Bücher sind weitgehend als E-Books über die Universitätsbibliothek Köln verfügbar!
  • MySQL Workbench:
    Im Gegensatz zu phpMyAdmin ist die Workbench ein lokal auf Ihrem Computer installiertes Programm. Sie können es benutzen um auf eine ebenfalls lokal installierte Datenbank, oder um auf einen Datenbank Server zuzugreifen. Die Workbench wurde für MySQL entwickelt, funktioniert aber auch mit MariaDB, wobei nicht alle neuen Features unterstützt werden und kleine Inkompatibilitäten möglich sein können. Das offizielle MySQL Workbench Tutorial erläutert anschaulich die Oberfläche und Bedienkonzepte.

Einfache Abfragen

Foliensatz "Einfache Abfragen" (PDF)

Themen:

  • Einfache Abfragen mit SELECT
  • Mittels WHERE das Resultset einschränken
  • Daten sortieren (ORDER BY) und gruppieren (GROUP BY)
  • Aggregatfunktionen: wenden Sie eine Funktionen auf eine komplette Spalte an und ermitteln Sie zum Beispiel Durchschnittswerte
  • Sonderfall NULL

weiterführende Informationen / Links:

  • SQL Tutorial auf Einsteiger-Niveau
    Für Details müssen Sie auf die Dokumentation Ihres DBMS zurückgreifen, aber hier werden die wichtigsten SQL-Befehle kurz und verständlich erläutert.

Daten einfügen, ändern und löschen

Foliensatz "Daten bearbeiten" (PDF)

Themen:

  • INSERT: Daten einfügen
  • UPDATE: Daten ändern
  • DELETE: Daten löschen

Übersicht gewinnen und komplexere Abfragen

Mittels SELECT und dazugehörigen Statements können Sie bereits schnell einzelne Tabellen abfragen und grundlegende Analysen durchführen. Mit JOIN und UNION können Sie die Daten aus mehreren Tabellen kombinieren. So können Sie die Vorteile einer relationalen Datenbank nutzen.

Foliensatz "Komplexere Abfragen" (PDF)

Themen:

  • Eine Übersicht über vorhandene Daten gewinnen
  • Sub-SELECT
  • JOIN und UNION
  • WHERE LIKE
  • SQL Code sinnvoll dokumentieren (Kommentare, sprechende Variablennamen, ...)

Datenschutz und Sicherheit

Datenbank-Server sind oft direkt oder zumindest indirekt mit dem Internet verbunden. Sie sind deshalb ein beliebtes Angriffsziel für kriminelle Hacker. Sie sollten über grundlegende Angriffswege wie SQL-Injection Bescheid wissen. Mit einigen wenigen Einstellungen können Sie das Sicherheitsniveau Ihres DBMS schon deutlich steigern.

Foliensatz "Datenschutz & Sicherheit" (PDF)

Themen:

  • SQL-Injection als verbreiteter Angriffsweg
  • Sicherheit auf Netzwerkebene
  • User Privileges auf das Nötige einschränken
  • Backup

weiterführende Informationen:

Datenbanken erstellen

Nachdem Sie wissen, wie Sie Datenbanken abfragen können, ist der nächste Schritt eine Datenbank selber zu erstellen.

Foliensatz "Datenbanken erstellen" (PDF)

Themen:

  • Normalformen
  • gebräuchliche Data Types
  • Geo-Daten speichern (Exkurs Postgres)
  • die Storage Engine auswählen
  • Collation setzen
  • Mittels Index Abfragen massiv beschleunigen!
  • Unique Identifier auswählen
  • Mit Foreign Key Constraints Konsistenz sicherstellen
  • Funktionen und Stored Procedures
  • Variablen
  • INSERT ... SELECT

weiterführende Informationen:

Abschlussprojekt

Sie werden in Kleingruppen nach Vorgabe eines Themas eine passende Datenbank von Grund auf selbst entwerfen. Während der Entwurfsphase steht Ihnen "Consulting" zur Verfügung, wird aber nur Hinweise statt fertigen Lösungen geben. Die Ergebnisse der einzelnen Gruppen sprechen wir dann gemeinsam durch.

Cheatset Datenbankdesign

Weiterbildung

An diesem Punkt haben Sie grundlegende Kenntnisse erlangt. Sie können eine Datenbank abfragen. Sie können Daten hinzufügen, ändern oder löschen. Grundlagen des Datenbank-Design sind Ihnen nicht fremd. Ihnen fehlt vor allen Dingen Routine, die Sie am Besten auf einem Test- oder Übungssystem erlangen. Einige Themen werden Sie vertiefen wollen.

Foliensatz "Eigene Test- und Lernsysteme" (PDF)

weiterführende Informationen / Links:

Fortgeschrittene Anwendungen

Import / Export

Kleine Datasets können Sie in der Regel mit phpMyAdmin oder ähnliche Weboberflächen importieren. Oftmals gibt es aber eine Begrenzung der Dateigröße und der Laufzeit von Skripten, welche den Import größerer Datenmengen über solche Schnittstelle unterbinden.

In dem Fall müssen Sie die zu importierenden Daten zunächst in ein für den Datenbank-Prozess zugängliches Verzeichnis speichern. Zugänglich bedeutet, dass eine Netzverbindung zwischen diesem Speicherort und dem DBMS besteht und dass der DBMS Prozess ausreichende Permissions hat um darauf zuzugreifen.

Das kann ein Netzwerk Share, oder ein spezielles Import-Verzeichnis sein. Auf Linux-Systemen sind Programme wie wget, curl und insbesondere rsync hilfreich. Das weitere Vorgehen unterscheidet sich abhängig vom DBMS.

Für große Dateien gelten andere Regeln

Abfragen mit Statistiksoftware

Die meisten Statistik-Programme bringen Schnittstellen / Connectoren für alle größeren DBMS mit. Deren Bedienung ist in der Regel sehr einfach, aber sie werden gelegentlich auch als gesonderte Produkte vertrieben.

Query databases with R.

Transaktionen

Transaktionen kapseln eine Sammlung von Befehlen so, dass sie entweder in Gänze oder gar nicht ausgeführt werden. Das klassische Beispiel sind Überweisungen zwischen Konten: wenn die Gutschrift auf dem Zielkonto nicht klappt, sollte die Abbuchung auf dem Quellkonto nicht erfolgen. Umgekehrt sollte die Gutschrift auf dem Zielkonto nicht erfolgen, falls die Abbuchung auf dem Quellkonto nicht klappt.

In einigen Fehlerfällen (Deadlocks, o.ä.) geschieht die Rückabwicklung einer Transaktion automatisch. meistens müssen Sie das aber explizit mit einem ROLLBACK anstoßen.

Microsoft hat ein gutes Schulungsvideo zum Thema Transaktionen. Das ein oder Andere ist zwar spezifisch für den Microsoft SQL Server, aber im Allgemeinen lässt sich das auf andere DBMS übertragen.

Performance

Sehr wichtig für die Performanz Ihrer Datenbankanwendung sind das richtige Design und die korrekte Verwendung von Indizes. Ein weiterer wichtiger Faktor ist die Hardware Ihres DBMS. Damit diese optimal genutzt wird, müssen Sie die Konfiguration des DBMS anpassen. Hier am Beispiel von MariaDB:

Window Functions

Window Functions sind zu komplex um diesen Kurs innerhalb des Zeitrahmens zu halten. Gerade bei großen Datenmengen können sie aber hilfreich sein.