Datenbank/Einführung in Joins



Mindestens ein Index bleibt an dem Warteschlangenende zur Zuordnung zu dem bewegten Objekt verfügbar; At least one index remains available at the end of queue for assignment to the moving object; dh, bei einer Ausführungsform zeigen der Kopf und das Ende der Warteschlange nicht auf den gleichen Index in der kreisförmigen Warteschlange. Dies wird in der folgenden, mit Anmerkungen versehenen Beispielsitzung gezeigt. Erläuterungen dazu siehe unten im Abschnitt über Zeichensätze. Vorname from Versicherungsvertrag vv , Versicherungsnehmer vn , Fahrzeug fz , Mitarbeiter mi ;.

Index Key Compression


Jede Tabelle in einer solchen Abfrage benötigt mindestens eine direkte Verknüpfung zu einer anderen Tabelle. Alle Tabellen müssen zumindest indirekt miteinander verknüpft sein. Falsche Verknüpfungen sind eine häufige Fehlerquelle. Vertiefte Erläuterungen sind unter Einfache Tabellenverknüpfung zu finden. Ein Tabellen-Alias ist wiederum für alle Tabellen sinnvoll. In der Spaltenliste und auch zur Sortierung können alle Spalten aller Tabellen benutzt werden. Es zeigt aber sehr schön, was alles mit SQL möglich ist:.

Diese können nur eingesetzt werden, wenn die Datenmenge richtig gruppiert wurde. Vertiefte Erläuterungen sind zu finden unter Funktionen sowie Gruppierungen. Alle anderen Klauseln sind optional. Der direkte Sprung zur jeweiligen Lösung funktioniert erst, wenn die Lösung sichtbar ist. Hierbei soll nur der Name der Abteilung ausgegeben werden. Geben Sie nur die Kurzbezeichnungen aller Abteilungen aus.

Hierbei sollen die Abteilungen nach den Standorten sortiert werden. Man sollte nicht versuchen, einer Spalte, die eine Zahl erwartet, eine Zeichenkette zuzuweisen. Man wird nur selten das Ergebnis erhalten, welches man erwartet.

Wenn ein einzelner Datensatz durch die Angabe seiner Werte gespeichert werden soll, gilt folgende Syntax:. Wenn eine Liste von Spalten fehlt, bedeutet das, dass alle Spalten dieser Tabelle in der Reihenfolge der Struktur mit Werten versehen werden müssen. Folgender Befehl wird deshalb zurückgewiesen:. Eine Angabe fehlt in diesem Befehl: Die Spalte ID wird automatisch zugewiesen.

Alle anderen Spalten erhalten ausdrücklich Werte:. Nanu, keine Zeilen wurden geändert? Bei diesem Befehl wurde zur Kontrolle, welcher Datensatz geändert werden sollte, nicht nur der Nachname, sondern auch das bisher notierte Geburtsdatum angegeben — und dieses war falsch. Dies leert den gesamten Inhalt der Tabelle, aber die Tabelle selbst bleibt mit ihrer Struktur erhalten.

Dies löscht ohne weitere Rückfrage alle Schadensfälle. Ein solcher Befehl sollte unbedingt nur nach einer vorherigen Datensicherung ausgeführt werden. Damit werden ohne Verbindung mit WHERE immer alle Datensätze gelöscht; dies geschieht schneller und einfacher, weil auf das interne Änderungsprotokoll der Datenbank verzichtet wird. Welche Angaben werden benötigt, wenn ein einzelner Datensatz in der Datenbank gespeichert werden soll? Alle Mitarbeiter, die bisher noch keinen Mobil-Anschluss hatten, sollen unter einer einheitlichen Nummer erreichbar sein.

Dieser soll von der Datenbank automatisch zugewiesen werden; er muss deshalb weggelassen oder mit NULL vorgegeben werden. Dies würde die gleiche Änderung bzw. Hier werden deshalb nur einige grundlegende Informationen und Beispiele behandelt, für welche Objekte einer Datenbank diese Befehle verwendet werden. Das DBMS entscheidet dann selbst: Wenn das Objekt schon existiert, wird es geändert, andernfalls erzeugt. Jedes DBMS bietet sehr verschiedene Optionen; wir können hier keine Gemeinsamkeiten vorstellen und müssen deshalb ganz auf Beispiele verzichten.

Wegen der vielen Möglichkeiten ist zu empfehlen, dass eine Datenbank nicht per SQL-Befehl, sondern innerhalb einer Benutzeroberfläche erstellt wird. Damit wird eine Tabelle mit allen Daten gelöscht diese Tabelle gab es in einer früheren Version der Beispieldatenbank:.

Nur die Abfrage wird fest gespeichert, nicht das Ergebnis; dieses muss bei jedem neuen Aufruf nach den aktuellen Daten neu erstellt werden. Einzelheiten werden unter Erstellen von Views behandelt. Ein Index beschleunigt die Suche nach Datensätzen.

Stattdessen wird ein Index angelegt ähnlich wie in einem Telefon- oder Wörterbuch , sodass schnell alle passenden Datensätze gefunden werden. Es ist dringend zu empfehlen, dass Indizes für alle Spalten bzw. Kombinationen von Spalten angelegt werden, die immer wieder zum Suchen benutzt werden. Dies ist durchaus sinnvoll, weil die ID als Primärschlüssel sowieso keine inhaltliche Bedeutung haben darf, sondern nur ein fortlaufender Zähler ist. Eine Prozedur — gespeicherte Prozedur, engl.

Es gibt sie mit und ohne Argumente und Rückgabewerte. Ein Trigger ist ein Arbeitsablauf, der automatisch beim Speichern in einer Tabelle ausgeführt wird. Ein weiterer Weg ist ebenfalls üblich, aber noch nicht erwähnt worden. Eine VIEW Sichttabelle ist eine Sicht auf eine oder mehrere tatsächlich vorhandene Tabellen; sie enthält eine Abfrage auf diese Tabellen, die als Abfrage in der Datenbank gespeichert ist, aber für den Anwender wie eine eigene Tabelle aussieht.

Deren Befehle sorgen für die Datensicherheit innerhalb einer Datenbank. Der Ersteller einer Datenbank muss sich für ein Verfahren entscheiden, kann aber auch danach noch variieren. Wenn Daten geändert werden sollen, müssen folglich mehrere Tabellen simultan verändert werden. Dazu wäre es nötig, dass die betreffenden Befehle immer gleichzeitig ausgeführt werden. Da der Computer Befehle nur nacheinander ausführen kann, muss sichergestellt sein, dass nicht der eine Befehl ausgeführt wird, während der andere Befehl scheitert.

Solche Probleme können nicht nur durch die Hardware entstehen, sondern auch dadurch, dass parallel andere Nutzer denselben Datenbestand ändern wollen. Alle solche Ungereimtheiten werden vermieden, indem SQL-Befehle in Transaktionen zusammengefasst und ausgeführt werden:.

Es gibt verschiedene Arten von Transaktionen. Eine Transaktion kann mit einem Namen versehen werden. Dies ist vor allem dann nützlich, wenn Transaktionen geschachtelt werden. Bis zu diesem Sicherungspunkt werden die Befehle auch dann als gültig abgeschlossen, wenn die Transaktion am Ende für ungültig erklärt wird. Skizzieren Sie die Befehle, die gemeinsam ausgeführt werden müssen, wenn ein neues Fahrzeug mit einem noch nicht registrierten Fahrzeugtyp und Fahrzeughersteller gespeichert werden soll.

Skizzieren Sie die Befehle, die gemeinsam ausgeführt werden müssen, wenn ein neuer Schadensfall ohne weitere beteiligte Fahrzeuge registriert werden soll.

Erwähnen Sie dabei auch den Inhalt des betreffenden Eintrags. Andere Benutzer müssen ausdrücklich zu einzelnen Handlungen ermächtigt werden. SQL kennt verschiedene Arten von Datentypen: Diese Arten und ihre Verwendungen werden in diesem Abschnitt erklärt. Die fettgedruckten Begriffe sind die entsprechenden reservierten Schlüsselwörter.

Hierbei handelt es sich um Zeichenketten mit fester Länge von genau n Zeichen. Für ein einzelnes Zeichen muss die Länge 1 nicht angegeben werden.

Diese Variante ist relativ umständlich zu nutzen; sie wird vorwiegend für die Speicherung ganzer Textdateien verwendet. Erläuterungen dazu siehe unten im Abschnitt über Zeichensätze. In früheren Versionen betrug sie oft nur , heute sind verbreitet. Wichtig ist, dass bei fester Feldlänge ein gelesener Wert immer mit genau dieser Anzahl von Zeichen zurückgegeben wird und bei Bedarf rechts mit Leerzeichen aufgefüllt wird. Ganze Zahl mit Vorzeichen. Diese Dezimalzahlen sind wegen der genauen Speicherung z.

Diese Datentypen haben grundsätzlich die gleiche Bedeutung. Es kommt immer wieder zu Rundungsfehlern. Sehr oft werden auch Millisekunden als Bruchteile von Sekunden registriert. Man kann allenfalls annehmen, dass ein Tag intern mit einer ganzen Zahl und ein Zeitwert mit einem Bruchteil einer ganzen Zahl gespeichert wird.

Es muss sich dabei nicht um eine Uhrzeit innerhalb eines Datums handeln, sondern kann auch einen Zeitraum, d. Allgemein werden binäre Objekte z. Diese Datentypen, die aus den vordefinierten Datentypen zusammengesetzt werden, werden hier nur der Vollständigkeit halber erwähnt; sie sind in der Praxis eines Anwenders ziemlich unwichtig.

Nun ja, eine Zeile in einer Tabelle ist natürlich von diesem Typ. Felder und Mengen sind Typen von Sammlungen "collection type" , in denen jedes Element vom gleichen Datentyp ist.

Wegen der Notwendigkeit, Tabellen zu normalisieren, sind diese Typen in der Praxis unwichtig. Dazu gehören nicht nur ein Typ, sondern auch Methoden zu ihrer Verwendung. Auch für solche Typen sind keine sinnvollen Anwendungen zu finden. Einen vernünftigen deutschen Begriff gibt es dafür nicht.

Erst mit Unicode gibt es einen Standard, der weltweit alle Zeichen z. Wenn eine Datenbank erstellt wird, muss ein Zeichensatz festgelegt werden. Wenn ein Programm Zugriff auf eine vorhandene Datenbank nimmt, muss ebenso der Zeichensatz angegeben werden; dieser muss mit dem ursprünglich festgelegten übereinstimmen.

Wenn Umlaute falsch angezeigt werden, dann stimmen in der Regel diese Angaben nicht. In diesem Abschnitt kann deshalb nur beispielhaft gezeigt werden, wie Zeichensätze behandelt werden.

Dieser gilt als Vorgabewert für alle Zeichenketten: Für eine einzelne Spalte kann ein abweichender Zeichensatz festgelegt werden.

Es kommt auch vor, dass ein Programm mit einem anderen Zeichensatz arbeitet als die Datenbank. Dann können die Zeichensätze angepasst werden:. Es gibt keinerlei Erläuterung, wie ein solcher Zeichensatz festgelegt wird. Collation Order bestimmt wird. Der Vorgabewert für die Datenbank bzw. Tabelle hängt direkt vom Zeichensatz ab. Zahlen und Datumsangaben verwenden immer die im deutschsprachigen Raum üblichen Schreibweisen.

Zeichen werden mit Hochkommata begrenzt. Geben Sie zu den Werten jeweils an, welche Datentypen passen, welche fraglich sind also u. Geben Sie jeweils an, welche Datentypen passen, welche fraglich sind also u. Bereiten Sie eine Tabelle Person vor: Notieren Sie mit möglichst konsequenter Aufteilung der Bestandteile die möglichen Spaltennamen und deren Datentypen; berücksichtigen Sie dabei auch internationale Adressen, aber keine Kontaktdaten wie Telefon.

Bereiten Sie eine Tabelle Kassenbuch vor: Notieren Sie die möglichen Spaltennamen und deren Datentypen; berücksichtigen Sie dabei auch, dass Angaben der Buchhaltung geprüft werden müssen. Bitte wundern Sie sich nicht über unerwartete Unterteilungen: Bei der folgenden Lösung werden auch Erkenntnisse der Datenbank-Theorie und der praktischen Arbeit mit Datenbanken berücksichtigt.

Dieses Kapitel enthält als Grundlage nur die wichtigsten Skalarfunktionen. Unter Funktionen 2 gibt es viele Ergänzungen. Wichtig ist, dass das Ergebnis der Funktion zu dem Datentyp passt, der an der betreffenden Stelle erwartet wird. Auch wenn der SQL-Standard nur einige wenige Funktionen vorschreibt, können eine ganze Reihe von Funktionen als Standard angesehen werden, weil sie immer oder fast immer vorhanden sind.

Firebird kennt ab Version 2. Aus Platzgründen werden Beispiele meistens nur einfach in einen Rahmen gesetzt. In diesem Kapitel und auch im zweiten Kapitel zu Funktionen werden diese Verfahren durch eine verkürzte Schreibweise zusammengefasst:. Das ist so zu lesen: Bei allen numerischen Funktionen müssen Sie auf den genauen Typ achten. Es ist beispielsweise ein Unterschied, ob das Ergebnis einer Division zweier ganzer Zahlen als ganze Zahl oder als Dezimalzahl behandelt werden soll.

Dafür gelten die üblichen mathematischen Regeln Punkt vor Strich, Klammern zuerst. Bitte beachten Sie auch folgende Besonderheit:. Alle diese Varianten liefern das gleiche Ergebnis: Für jeden Datensatz der Tabelle Mitarbeiter werden Name und Vorname verbunden und dazwischen ein weiterer String gesetzt, bestehend aus Komma und einem Leerzeichen.

Der Ausgangstext wird von Position 1 an gezählt. Teilweise sind es nur verkürzte und spezialisierte Schreibweisen der Standardfunktionen, teilweise liefern sie zusätzliche Möglichkeiten. Man kann sich aber folgende Regel merken:. Mit Zahlen kann gerechnet werden, mit Zeichenketten nicht. Ein Datum wird in Deutschland durch ' Wenn wir etwas aufschreiben z. Zeichenketten, auch wenn wir Zahlen oder ein Datum meinen. Es gibt bereits durch den SQL-Standard ausführliche Regeln, welche Typen immer, unter bestimmten Umständen oder niemals ineinander übergeführt werden können.

Wenn ein Wert nicht eindeutig ist, wird das DBMS eher zu früh als zu spät mit einer Fehlermeldung wie "conversion error from string Das Verkürzen funktioniert nicht immer so einfach. Ob bei Überschreitung einer Maximallänge einfach abgeschnitten wird oder ob es zu einer Fehlermeldung "string truncation" kommt, hängt vom DBMS ab; dann müssen Sie ggf.

Firebird kennt diese Funktion überhaupt nicht. Wegen dieser starken Abweichungen verzichten wir auf weitere Erläuterungen und verweisen auf die jeweilige Dokumentation. Die Spaltenfunktionen werden auch als Aggregatfunktionen bezeichnet, weil sie eine Menge von Werten — nämlich aus allen Zeilen einer bestimmten Spalte — zusammenfassen und einen gemeinsamen Wert bestimmen.

In der Regel wird dazu eine Spalte aus einer der beteiligten Tabellen verwendet; es kann aber auch ein sonstiger gültiger SQL-Ausdruck sein, der als Ergebnis einen einzelnen Wert liefert. Das Ergebnis der Funktion ist dann ein Wert, der aus allen passenden Zeilen der Abfrage berechnet wird. Bei Abfragen kann das Ergebnis einer Spaltenfunktion auch nach den Werten einer oder mehrerer Spalten oder Berechnungen gruppiert werden.

Die Aggregatfunktionen liefern dann für jede Gruppe ein Teilergebnis. Näheres siehe unter Gruppierungen. Hier werden also alle Zeilen gezählt, die in dieser Spalte einen Eintrag haben. Dasselbe funktioniert auch mit einer Spalte, die numerisch ist:. Hier ist die Spalte numerisch und optional. Wenn in der Spalte eine 0 steht, wird sie mitgezählt. Dies bezieht sich dann nicht auf eine einzelne Spalte, sondern auf eine ganze Zeile.

So wird also die Anzahl der Zeilen in der Tabelle gezählt:. Als Parameter kann nicht nur eine einzelne numerische Spalte, sondern auch eine Berechnung übergeben werden, die als Ergebnis eine einzelne Zahl liefert. Ein Beispiel für eine einzelne numerische Spalte ist:. Als Ergebnis werden alle Werte in der Spalte Schadenshoehe aufsummiert.

Als Parameter kann aber auch eine Berechnung übergeben werden. Eine Besonderheit ist das Berechnen von Vergleichen. Dabei werden nicht etwa die Schäden aufsummiert, sondern nur das Ergebnis des Vergleichs, also 0 oder 1, im Grunde also gezählt. Dabei haben Vergleichsausdrücke grundsätzlich ein boolesches Ergebnis, das nicht summiert werden kann. Diese Funktionen können auf jeden Datentyp angewendet werden, für den ein Vergleich ein gültiges Ergebnis liefert. Materialien zum Buch 21 1 Einführung 23 1.

Die Standards und was davon zu halten ist 87 3. Der Benutzer HR 91 3. Auswahl und Projektion 99 4. Weiterführende Join-Konzepte 5. Berechnung der Fakultät 6. Skalare Unterabfrage 8. Fehlerbehandlung während der Datenmanipulation 9. Analytische Views Beispiel eines Triggers Nicht aus der Schweiz? Anmeldung Mein Konto Merkzettel 0. Modelle Anatomische Modelle Somso-Modelle. Immunologie — Basiswissen für das Medizinstudium.

CHF 97, 75 inkl.