DB-Abfragen (SQL)

Fallunterscheidungen und NULL-Werte in SQL-Abfragen (CASE, IF, COALESCE)

Mit den Ablaufsteuerungsfunktionen von SQL triffst Du Entscheidungen innerhalb einer Abfrage: CASE WHEN … END und IF() geben je nach Bedingung unterschiedliche Werte aus, COALESCE und IFNULL ersetzen fehlende Werte, NULLIF erzeugt gezielt NULL. Der Artikel zeigt die Funktionen in Projektion, Sortierung und Bedingungen und nennt die Schreibweisen anderer DBMS.

Übungsaufgaben zu einfachen SQL-Abfragen (Selektion, Projektion, Sortierung, Funktionen)

Drei Übungsaufgaben zu einfachen SELECT-Abfragen auf einer Tabelle – mit Spaltenauswahl und Aliasen, Bedingungen mit LIKE, BETWEEN, IN und NULL, Zählen, DISTINCT, den ersten n Zeilen, Vergleich mit dem Durchschnitt, Sortierung, Zeichenketten- und Datumsfunktionen, Postleitzahlen als Text, der Einordnung in DDL/DML/DQL sowie typischen Fehlern.

Sortieren und Begrenzen von Abfrageergebnissen (ORDER BY, LIMIT)

Mit ORDER BY legst Du die Reihenfolge der Ergebniszeilen fest – nach mehreren Spalten, auf- oder absteigend, auch nach Aliasen und Ausdrücken. Mit LIMIT gibst Du nur die ersten Zeilen aus, etwa für Ranglisten, Seiten oder das jüngste Mitglied. Der Artikel zeigt außerdem die typischen Stolperfallen: Sortieren „nach Alter“, Zahlen als Text, NULL-Werte und Gleichstand.

Übungsaufgaben zu Benutzern und Rechten in SQL (DCL)

Drei Übungsaufgaben zur Rechteverwaltung in MariaDB: Für das Werkstattportal eines Fahrradherstellers überträgst Du ein Einrichtungsskript aus einer PostgreSQL-Anleitung nach MariaDB und richtest Konten ein (Stufe 2), für eine Mitfahr-App entwickelst Du ein Berechtigungskonzept und korrigierst ein fehlerhaftes Skript (Stufe 3), und für eine Freizeit-App prüfst Du vorgefundene Rechte gegen ein Rechtekonzept und korrigierst sie mit Rollen, Spaltenrechten und einer anonymen Auswertungssicht (Stufe 3).

SQL: Benutzer und Rechte verwalten (DCL)

Nicht jede Person und nicht jedes Programm soll alles in einer Datenbank dürfen. Mit der Data Control Language (DCL) richtest Du Datenbanken für neue Anwendungen ein, legst Benutzer an (CREATE USER), vergibst Rechte (GRANT), entziehst sie wieder (REVOKE) und bündelst sie in Rollen. Dieser Artikel zeigt die Befehle in MariaDB-Notation, wie Du aus einem Anforderungstext ein Berechtigungskonzept entwickelst und welche Fehler häufig passieren.

Übungsaufgaben zum Anlegen und Ändern von Tabellen (SQL-DDL)

Vier Übungsaufgaben zur SQL-DDL: Tabellen mit Datentypen, Primär- und Fremdschlüsseln, NOT NULL, UNIQUE, DEFAULT und CHECK anlegen, bestehende Tabellen mit ALTER TABLE umbauen, Indizes setzen, Tabellen archivieren und löschen, fehlerhafte CREATE-TABLE-Anweisungen korrigieren sowie in einer Mitfahr-App Datentypen begründen, eine Tabelle nachträglich per Fremdschlüssel einbinden, Messwerte speichern und berechnete Spalten anlegen.

Übungsaufgaben zu SQL-Abfragen über mehrere Tabellen (JOIN)

Fünf Übungsaufgaben zu Verbünden über mehrere Tabellen – vom einfachen INNER JOIN über LEFT, RIGHT und nachgebauten FULL JOIN bis zu Tabellen in mehreren Rollen, zusammengesetzten Join-Bedingungen, Anti-Joins, Vervielfachung beim Zählen sowie UPDATE und DELETE mit JOIN, außerdem Zeitspannen-Auswertungen, DISTINCT-Abfragen und Verbünde mit pandas.

SQL: Abfragen über mehrere Tabellen mit JOIN

In relationalen Datenbanken sind zusammengehörige Daten auf mehrere Tabellen verteilt. Mit JOIN fügst Du sie in einer Abfrage wieder zusammen: Der innere Verbund liefert nur Zeilen mit Partner, die äußeren Verbünde (LEFT, RIGHT, FULL) auch Zeilen ohne Partner. Der Artikel zeigt Kreuzprodukt, Join-Bedingungen über mehrere Tabellen und Spalten, Selbstverknüpfung, Anti-Join, die Falle „Bedingung in WHERE statt ON“, Vervielfachung beim Zählen sowie UPDATE und DELETE mit JOIN in MariaDB.

SQL-Übungsaufgaben (Orga-Datenbank für ein Barcamp)

Übungsaufgaben zur Datenbank-Modellierung und einfachen SQL-Abfragen am Beispiel einer Datenbank für die Planung eines Kongresses. Die einzelnen Schritte werden exemplarisch (an Teilbereichen der Datenbank) abgefragt. Die Aufgaben waren Bestandteil einer klassischen Zettel/Stift Klassenarbeit. Es soll ein konzeptuelles Datenmodell erstellt werden, dieses soll in ein logisches Datenmodell transformiert werden. Das Relationenschema soll normalisiert werden, schließlich soll die Datenstruktur erstellt und die Daten einer Tabelle eingefügt, geändert, gelöscht und ausgelesen werden.

Constraints in der Data Definition Language (SQL-DDL)

Die Informationen, ob es sich bei einem Attribut um ein Schlüsselattribut handelt, ob es eingabepflichtig oder einzigartig ist: all das wird über Constraints festgelegt. Es gibt unterschiedliche Möglichkeiten, Constraints festzulegen. Einige werden hier mit Beispielen in MariaDB-Notation vorgestellt: Primär- und Fremdschlüssel (auch zusammengesetzt), NOT NULL, DEFAULT, UNIQUE, CHECK und die Regeln beim Löschen referenzierter Datensätze.

Datentypen in der Data Definition Language (SQL-DDL)

Alle Datenbankmanagementsysteme verfügen über ein ähnliches Set an Datentypen. Aber leider heißen sie oft anders und haben einen geringfügig anderen Funktionsumfang. Ich habe hier versucht, für die wichtigsten DBMS die Namen der Standardtypen zusammenzustellen; für Detailunterschiede muss ich aber auf die jeweiligen Dokumentationen der DBMS verweisen. Am Ende steht eine Entscheidungshilfe, welcher Datentyp für welche Information passt.

Data Definition Language (SQL-DDL)

SQL besteht aus mehreren Teilsprachen, die sich mit der Datenbankstruktur (DDL), dem Datenbankinhalt (DML) und den Berechtigungen (DCL) beschäftigen. In diesem Artikel soll es zunächst um die Grundlagen der Struktur gehen, die in der Data Definition Language (SQL-DDL) beschrieben wird. Du lernst, Datenbanken und Tabellen anzulegen, Tabellen nachträglich umzubauen, sie zu löschen und Indizes für schnelle Abfragen zu setzen.

SQL: Aggregierende Funktionen

Aggregatfunktionen wie COUNT, SUM, AVG, MIN und MAX fassen die Werte vieler Zeilen zu einem Wert zusammen – für die ganze Tabelle oder mit GROUP BY je Gruppe. Mit HAVING filterst Du nach diesen Ergebnissen. Der Artikel zeigt außerdem, wie NULL-Werte, Verbünde (JOIN) und Prozentrechnungen die Ergebnisse beeinflussen, wie Du mit Aggregaten weiterrechnest (z. B. Deckungsbeitrag), Streuung und Zeitdauern auswertest und welche Fehler typisch sind.

Einfache Abfragen mit Selektion und Projektion (SQL-DQL)

Der am häufigsten benötigte SQL-Befehl ist der SELECT-Befehl. In diesem Grundlagenartikel werden die Bestandteile Projektion und Selektion sowie die einzelnen Clauses einfacher SELECTs beschrieben. Dazu gehören Spaltenaliase, Bedingungen mit Mustern, Bereichen und NULL – samt der typischen Stolperfallen bei Postleitzahlen, Datumswerten und Umlauten. Sortieren und Begrenzen behandelt ein eigener Artikel.

„Let’s Meet-Datenbank“ Beispielumsetzung  Teil 1: Modellierung

Dies ist der erste Teil (Modellierung) einer Beispiellösung für die Let’s Meet“ Datenbank-Lernsituation. Es führen viele Wege zum Ziel – der einzig richtige ist der Weg, den man selbstständig gegangen ist. Daher ist diese Variante bestenfalls als eine Ideenskizze zu verstehen, die genutzt werden kann, wenn man nicht mehr weiterkommt. Einige Schritte habe ich bewusst etwas umständlicher realisiert, um so bestimmte Techniken des Datenbankentwurfs bzw. Abfragetechniken darstellen zu können.

Lernsituation: Migration der Let’s Meet-Datenbank

Es ist nur noch eine Gesamtübersicht einer Datenbank in einer Tabelle vorhanden. Aus diesen Daten soll die ursprüngliche DB wiederhergestellt werden. Diese soll modelliert, importiert und im Bestand normalisiert werden. (DB Entwurf, Normalisierung, SQL-DDL, SQL-DML, Container, DBMS-Frontends und -Backends).