SQL-Befehle
SQL (oder Structured Query Language) ist eine Sprache für den Umgang mit Relationalen Datenbanken, wie bspw. MySQL. Hierbei unterscheidet man prinzipiell zwischen
  • Data Definition Language (DDL)
  • Data Retrieval Language (DRL)
  • Data Manipulation Language (DML)
  • Data Security Language
Eigentlich wird nur "DDL" als eigentständiger Begriff genutzt, wobei grundsätzlich "SQL" ausreicht, da es sie Obermenge ist. Bei den Videos gehe ich erstmal über die wichtigsten Sprachelemente und gehe am Schluss auf weiterführende Konzepte ein. Als Referenz verwendie ich in allen Videos MySQL, was außer dem Thema Stored Procedures es weitestgehend auf die anderen Relationalen Database Management Systeme (RDBMS) übertragbar ist. Folgende Inhalte werden abgedeckt
Top
Das CREATE TABLE Statement ist Grundvoraussetzung für die Untersuchung von Datentypen. Hierbei gehen wir durch die wichtigsten Datentypen und greifen uns einige besondere heraus, um den Unterschied im Verhalten zu verstehen:
  • Erzeugen von Datenbanken und Tabellen
  • Datentypen für Zeichenketten
  • Datentypen für Zahlen
  • Datentypen für Datum und Zeit
  • CHAR vs. VARCHAR
  • DECIMAL vs. DOUBLE
  • DATETIME vs. TIMESTAMP
Top
Neben den Datentypen beeinfussen noch weitere Eigenschaften das Verhalten von Tabellenspalten. Hierbei betrachten wir:
  • Nullable
  • Primary und Foreign Keys
  • AUTO_INCREMENT
  • UPDATE / DELETE Cascade
Top
Für die nachträgliche Anpassung von Tabellen gibt es das ALTER TABLE Statement. Hierbei gilt es vor allem zu verstehen, wie sich die Veränderung von existiereden Spalten auf die bereits eingetragenen Daten auswirkt.
  • Spalten hinzufügen
  • Ändern von Spalteneigenschaften
  • Umbenennen von Spalten
Top
Die Erstellung eines Index ist die erste und auch einfachste Möglichkeit, die Performance von SELECT Statements, vor allem im Zusmmenhang mit Joins zu erhöhen. Ich erkläre, wie Indizes erstellt werden und warum die Performance sich so massiv verbessert.
  • Erklärung, warum der JOIN ein Performanceproblem hat
  • Erzeugung von Indizes
  • Einzelne vs. kombinierte Indizes
Top
Der am häufigsten genutzte Befehl bei Datenbanken ist das SELECT Statement, um Daten aus der Datenbank auszulesen. Im ersten Video zum Thema SELECT behandlet lediglich die grundlegenden Elemente des Statements:
  • Grundaufbau des SELECT Statements
  • Selektion mittels WHERE
  • Verknüpfung mittels AND und OR
  • Optionen von LIKE
  • Funktion von DISTINCT
  • Sortieren der Ausgabe
  • Limitieren der Ausgabe
  • Umstellung auf Case Sensitive
  • SELECT Ergebnisse in File umleiten
  • SLECT Ergebnisse in Tabelle eintragen
Top
Neben dem Selektieren von einzelnen Datensätzen können Ergebnisse noch zusammenaggergiert werden - bspw. Zählen oder Summieren. In diesem Zusammenhang sehen wir uns auch die Optionen der Gruppierung an:
  • Zählen mittels COUNT
  • Summieren mittels SUM
  • Weitere Aggregatsfunktionen wie AVG, MIN, MAX
  • Sinnvolle Spaltenauswahl bei Aggregation (vor allem bei MIN/MAX)
  • GROUP BY
  • HAVING vs. WHERE
Top
Erst die Möglichkeit, Daten mittels JOIN zu verknüpfen, gibt uns die Möglichkeit mit relationelen Datenbanken sinnvoll zu arbeiten. Hierbei gehen wir auch über die OUTER JOIN Optionen ein und wie man sie sinnvoll nutzt:
  • INNER und OUTER JOIN
  • JOIN über mehrere Tabellen
  • Crossjoin
Top
Mit Hilfe von Unterabfragen können wir sehr tief in die Analyse von Daten eintauchen. Beim Verständnis für dieses Thema ist es wichtig, das Grundverhalten von SELECT Statements bezüglich ihrer Ergebnisstruktur zu verstehen. Basierend darauf bauen wir die drei Grundtypen von Unterabfragen auf. Zusätzlich sehen wir uns noch die Option an, das Subselect in die Spaltenauswahl einzusetzen:
  • SUBSELECT mit einem Wert als Ergebnis
  • SUBSELECT mit einer Liste als Ergebnis
  • SUBSELECT mit einer Matrix als Ergebnis
  • SUBSELECT auf Zeilenebene
  • SUBSELECT als Basis für ein UPDATE
Top
UNION ist die Möglichkeit, Daten von verschiedenen Tabellen untereinander zu schreiben. Darüberhinaus ist der UNION eine oft genutzte Möglichkeit für den Angriff mittels SQL Injection. Auch hierauf gehen wir ein:
  • Grundverhalten von UNION
  • Nutzung von UNION für einen FULL OUTER JOIN in MySQL
  • SQL Injection mittels UNION
Top
Views sind eine Möglichkeit, SELECT Statements zu speichern. Dadurch wird die View zu einem elementaren Archtiekturelement zur Entkoppelung von Applikation und Datenhaltung.
  • Syntax der Viewerstellung
  • Anzeigen von Viewdefinitionen
  • Löschen von Views
  • Viewschicht als Architekturebene
Top
Für die automatisierte Ausführung von SQL Code bei INSERT, UPDATE oder DELETE bieten sich Trigger an. Wir klären, welches Statement welchen Trigger auslöst und wie man sie erstellt. Weiterhin klären wir, wann ein Trigger überhaupt sinnvoll einsetzbar ist.
  • Syntax zur Erstellung von Triggern
  • Löschen von Triggern
  • Auslösende Events von Triggern
  • NEW und OLD Daten
  • BEVORE vs. AFTER
  • Austausch DELIMITER
Top
Bei massiven Performanceproblemen von Views ist es möglich, die Viewergebnisse in einer eigenen Tabelle zu cachen. Kostenpflichtige RDBMS bieten oftmals solche Konstrukte "out of the box" an, wohingegen man dies bei MySQL selbst erstellen muss. In diesem Video klären wir, wie man solch eine Funktionalität umsetzen kann.
  • Erstellung der Cache-Tabelle
  • Definition der Trigger
  • Erzeugung der initialen Befüllung der Tabelle
Top
Imperative Programme sind in MySQL über Stored Procedures/Functions möglich. Wir klären die Erstellung anhand von mehreren Usecases - Quersummenberechnung, JSON Erstellung und Performanceoptimierung von Views:
  • Erzeugung von Stored Procedures und Functions
  • Unterschiedliche Parametertypen
  • Unterschiedliche Variablentypen
  • Kontrollstrukturen
  • CURSOR
Top
Das Anlegen von Usern - vor allem in MySQL - geht einher mit der Frage, von wo sich der User mit dem System verbindet. Neben dem Syntax des Anlegens klären wir eben diese Angabe des Servers des Users:
  • Syntax zum Anlegen eines Users
  • Verbindung vom gleichen Server
  • Verbindung von bekannter IP Adresse
  • Verbindung von beliebiger IP Adresse
  • Anzeigen aller User
  • Löschen von Usern
Top
Ein neu angelegter User hat per se erstmal keine Rechte. Erst mit dem GRANT Statement kann man die Rechte auf nahezu beliebiger Granularität zuordnen:
  • Grundaufbau des GRANT Statements
  • Unterschiedliche Bereiche für die Rechtevergabe
  • Entfernen von Rechten
  • Zugriffseinstellung mittels Views
Top