Datenmanipulation & Abfrage Flashcards
Wie fügt man einen neuen Datensatz in eine Tabelle ein?
Mit dem INSERT Befehl
Wie löscht man einen Datensatz in einer Tabelle?
Mit dem DELETE Befehl
Was macht ON DELETE CASCADE?
Das Löschen eines Datensatzes führt dazu, dass alle ihn referenzierenden Datensätze ebenfalls gelöscht werden
Was macht ON DELETE SET NULL?
Das Löschen eines Datensatzes führt dazu, dass alle Zellen, in denen ein entsprechender Fremdschlüsselwert eingetragen ist, auf NULL gesetzt werden.
Dies setzt voraus, dass für das entsprechende Fremdschlüsselattribut Nullwerte erlaubt sind
Was ist die dritte Option wenn man beide Optionen verhindern möchte (zum löschen) und dennoch die referenzielle Integrität der Datenbasis sicherstellen will?
einzige Option, den Datensatz nicht zu löschen, sondern den Wert eines eigens dafür angelegten Attributs (z B active auf false zu setzen und bei Datenbankabfragen die Datensätze entsprechend zu filtern
Woraus besteht eine Datenbankabfrage?
Aus den beiden Schlüsselwörtern SELECT und FROM
Was ist SELECT?
Mit dem Schlüsselwort SELECT kann eine (mit Komma getrennte) Liste von Attributen der Tabelle spezifiziert werden, die im Resultat der Abfrage enthalten sein sollen.
Darüber hinaus können mathematische Ausdrücke angegeben werden, die statische Werte oder Attributwerte beinhalten mithilfe des Schlüsselworts AS wird ein Name für das daraus generierte Attribut angegeben
Was ist FROM?
Mit dem Schlüsselwort FROM wird der Name der Tabelle spezifiziert, aus der die Daten abgefragt werden sollen
Was macht der | | Operator?
Der | | Operator führt dabei eine String Konkatenation aus, also ein Aneinanderreihen von Zeichenketten
Was macht WHERE?
Datenbankabfragen können damit um Bedingungen ergänzt werden.
Die Bedingung muss ein logischer Ausdruck sein, den das DBMS entweder zu wahr oder zu falsch
auswerten kann.
Dabei können verschiedene Operatoren angewandt werden, um eine Filterung auf Basis der Datensätze zu ermöglichen, z B Vergleich auf Gleichheit größer/kleiner als größer/kleiner als oder gleich Ungleichheit oder Nullwertüberprüfung IS [NOT] NULL.
Was ist ORDER BY?
Abfrageergebnisse lassen sich damit sortieren.
ORDER BY Attributname/ASC/DESC
Was ist das kartesische Produkt?
Betrachtet man nun die Tabellen einer Datenbank als Mengen von Datensätzen, so kann analog zur
Mengenlehre ein kartesisches Produkt aus den Datensätzen mehrerer Tabellen gebildet werden.
Dabei wird jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle und dieses Ergebnis wiederum mit jeder Zeile der dritten Tabelle kombiniert usw Dies lässt sich in SQL dadurch umsetzen, im FROM Teil der Anfrage mehrere (durch Komma getrennte) Tabellen zu listen.
Verfügt Tabelle 𝑖 über 𝑛𝑖 Zeilen und sind 𝑚 Tabellen an der Bildung des kartesischen Produkts beteiligt,
so hat das Resultat demzufolge 𝑛1⋅𝑛2⋅…⋅𝑛𝑚 Zeilen.
Gerade, wenn viele große Tabellen beteiligt sind,
führt dies schnell zur so genannten kombinatorischen Explosion
Was ist ein Inner Join?
Vielmehr möchte man die Tabellen entsprechend der durch die Fremdschlüsselattribute vorgesehenen Referenzen zusammenführen, beispielsweise um sich zu einer Mitarbeitenden aus der Tabelle Employees auch ihren Beruf aus der Tabelle Jobs ausgeben zu lassen.
Die dafür benötigte Operation wird im Kontext relationaler Datenbanken als innerer Verbund Inner Join bezeichnet und in SQL durch den INNER JOIN Befehl
implementiert
Was ist ein Outer Join?
Ein anderer denkbarer Anwendungsfall wäre die Erstellung eines Verbundes, bei dem jedoch auch
Zeilen aus den Ausgangstabellen enthalten sein sollen, für die keine Entsprechung in der jeweils anderen Ausgangstabelle enthalten ist.
LEFT OUTER JOIN Alle Datensätze aus der zuerst benannten Tabelle sind in jedem Fall im Ergebnis erhalten, diejenigen aus der zweiten Tabelle allerdings nur, falls sie über Zuordnungen in der ersten Tabelle verfügen
RIGHT OUTER JOIN Alle Datensätze aus der zweiten Tabelle sind enthalten, jedoch nicht diejenigen aus der ersten Tabelle, die keine Zuordnung in der zweiten Tabelle haben
FULL OUTER JOIN Alle Datensätze aus beiden Tabellen sind enthalten, unabhängig davon, ob sie über eine Zuordnung in der jeweils anderen Tabelle verfügen
Was ist ein Self Join?
Ein semantischer Sonderfall des Verbunds liegt vor, wenn eine Tabelle nicht mit einer anderen, sondern
mit der gleichen Tabelle verbunden wird, d h es liegt ein JOIN Befehl der Form Tabelle 1 JOIN
Tabelle 1 vor Dieser Sonderfall wird als Self Join bezeichnet, da eine Tabelle mit „sich selbst“
verbunden wird
Was bringt das Verschachteln von Abfragen?
Ein weiterer Anwendungsfall, der bisher nicht abgedeckt wurde, sind Abfragen, die auf den Ergebnissen vorheriger Abfragen basieren.
So könnte beispielsweise zunächst der Beruf einer bestimmten Mitarbeitenden ermittelt werden, um dann alle Angestellten mit dem gleichen Beruf abzufragen.
In solchen Fällen ist es erforderlich, verschachtelte Abfragen auszuführen Diese sind dadurch
gekennzeichnet, dass im WHERE Teil der äußeren Abfrage eine weitere Abfrage der Form SELECT
FROM WHERE enthalten ist
Welche Aggregatfunktionen gibt es?
Der SQL Standard kennt fünf Aggregatfunktionen welche eine Menge von Attributwerten
unterschiedlicher Datensätze in einen skalaren d.h. atomaren Wert zusammenführen. Dabei handelt es
sich um die folgenden Funktionen:
COUNT Anzahl der vorhandenen Datensätze
MAX maximaler Attributwert aller vorhandenen Datensätze
MIN minimaler Attributwert aller vorhandenen Datensätze
SUM Summe der Attributwerte aller vorhandenen Datensätze
AVG arithmetisches Mittel aller vorhandenen Datensätze
Aggregatfunktionen werden innerhalb von SQL Abfragen stets im SELECT Teil eingesetzt
Wie kann man etwas gruppieren?
Mit GROUP BY am ENDE
Was ist eine Datensicht/View?
Häufig kommt es vor, dass in regelmäßigen Abständen immer wieder die gleiche SQL Anfrage ausgeführt werden muss, z B im Rahmen bestimmter betrieblicher Abläufe wie dem Erstellen von Quartalsberichten oder der Durchführung einer Inventur.
In solchen Fällen wäre es erstens mühsam und
zweitens eine potenzielle Fehlerquelle, die dafür benötigten SQL Abfragen jedes Mal neu zu erstellen.
Stattdessen bieten SQL basierte DBMS die Möglichkeit, Datensichten Views zu erstellen.
Dabei handelt es sich um Tabellen, die nicht physisch gespeichert, sondern anhand einer fest hinterlegten
Abfrage bei jedem Aufruf dynamisch aus den tatsächlich gespeicherten Daten zusammengesetzt
werden
Wie kann man eine Datensicht erstellen?
CREATE VIEW Name AS SQL-Abfrage;
Dabei ist Name eine benutzerdefinierte Bezeichnung für die Datensicht und SQL Abfrage eine beliebige
konventionelle SQL Abfrage.
Der Vorteil der Datensicht gegenüber einer einfachen SQL Abfrage besteht nun darin, dass die Tabelle, die der Datensicht zugrunde liegt, im FROM Teil anderer Abfragen über ihren Namen eingebunden werden kann
Was ist eine Transaktion in SQL?
Transaktionen in SQL erlauben es, mehrere SQL Operationen zu einer großen Operation
zusammenzufassen.
Das heißt konkret, dass die Effekte der Operationen erst dann eintreten, wenn alle Operationen abgeschlossen sind.
Umgekehrt bedeutet es auch, dass alle Operationen im Fehlerfall rückgängig gemacht werden können, ohne dass sich der Datenbankzustand effektiv verändert.
Solche Transaktionen werden in SQL wie folgt umgesetzt:
BEGIN TRANSACTION Operation 1; Operation 2; … COMMIT oder ROLLBACK;
Welche Fehlerfälle gibt es?
Während der Ausführung der Operationen wird bemerkt, dass es nicht sinnvoll oder nicht möglich
ist, die Transaktion durchzuführen. Dies könnte z B der Fall sein, wenn versucht wird, Guthaben
vom Account einer Mitarbeitenden abzubuchen, welcher nicht über hinreichende Deckung verfügt
In diesem Fall kann im Kontrollfluss (also in der Sequenz von Operationen) ein expliziter Abbruch
der Transaktion mithilfe des Schlüsselwortes ROLLBACK herbeigeführt werden
Während der Ausführung der Transaktion kommt es zu einem globalen Problem mit der gesamten
Datenbank (z B Hardwareschaden, Stromausfall, etc In diesem Fall wird die Transaktion stets
abgebrochen bzw werden nach dem Neustart des DBMS die Operationen aller nicht vollständig
ausgeführten Transaktionen automatisch rückgängig gemacht