Datenbankanfragen - Deklarative Anfragen
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 93 | |
Author | ||
License | CC Attribution 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/64043 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
Datenbanken1 / 93
3
16
19
20
28
32
39
40
41
49
52
54
58
62
66
70
74
81
83
86
00:00
SQLTupleASCIIInverter (logic gate)Query languageTable (information)Function (mathematics)Set (mathematics)Operator (mathematics)String (computer science)ORACLSNumberAttribute grammarAlgebraTable (information)Query languageTupleAttributwertProjektion <Mathematik>Regular expressionComputer animation
Transcript: German(auto-generated)
00:00
Hallo. In diesem Video geht es um die Formulierung von deklarativen Anfragen in SQL. Die Basis dafür bilden die Operatoren der relationalen Algebra. In diesem Video wird gezeigt, wie die Projektion,
00:21
die Umbenennung und die Selektion in SQL formuliert wird. Durch eine deklarative Anfrage wird formuliert, was gemacht werden soll. Beispielsweise, dass eine Liste erstellt werden soll, der Nachnamen der Kunden Meitner und Meyer. In der Ausgabe sollen die ausgewählten Attribute umbenannt werden,
00:44
Kundennummer in ID und Nachname in Name. Dies ist eine reine deklarative Beschreibung, also was soll gemacht werden. Das ist das, was eine SQL-Anfrage liefert. Durch einen Operatorbaum kann beschrieben
01:04
werden, wie diese Abfrage ausgeführt werden kann. In diesem Fall wird ausgehend von der Basistabelle Kunde zunächst eine Selektion gemacht, dann die benötigten Attribute herausprojiziert. Anschließend
01:21
werden die verbleibenden Tupel sortiert und die Attributbezeichnung umbenannt. In diesem Operatorbaum könnte jetzt die Selektion und die Projektion vertauscht werden, ohne dass sich die Ergebnismenge ändert. Daher können zu einer deklarativen Anfrage unterschiedliche
01:42
Operatorbäume existieren. Die Auswahl eines geeigneten Operatorbaums erfolgt durch das Datenmarktmanagement-System. Aus der Menge der Operatorbäume, die eine deklarative Anfrage umsetzen, wählt das Datenmarktmanagement-System den Operatorbaum aus, der die beste Performance
02:04
verspricht. Das wird als Anfrageoptimierung bezeichnet. Durch die deklarative Anfrage muss dem Datemanagement-System nur mitgeteilt werden, welche relationalen Operatoren ausgeführt werden
02:22
sollen. In der deklarativen Anfrage muss also beschrieben werden, was gesucht wird, also die Attribute, in welchen Relationen gesucht werden muss, welche Auswahlbedingungen erfüllt sein müssen und ob eine Umbenennung oder Sortierung erfolgen soll. In einer SQL-Anfrage werden Schlüsselwörter
02:45
verwendet, um die einzelnen Operatoren voneinander zu trennen. In der Select-Klausel findet sich die Projektion, in der From-Klausel die Angabe der Relation, in der Wer-Klausel die Selektionsbedingung,
03:00
also die Auswahlbedingung, in der Order-By-Klausel die Sortierung der Tupel. Die Umbenennung von Attributbezeichnung ist in die Select-Klausel mit integriert. Schauen wir uns das an dem Beispiel einmal an. Die Attribute Kundennummer und Nachname werden herausprojiziert und umbenannt in ID und
03:29
Name. Beides wird in der Select-Klausel formuliert, schieben wir also die Umbenennung einmal nach oben. In der From-Klausel werden die Datenbanktabellen und Benutzersichten angegeben, die für die
03:45
Bearbeitung der Anfrage erforderlich sind. In unserem Beispiel ist das die Datenbanktabelle Kunde. In der Wer-Klausel finden sich die Auswahlbedingungen, die sich auf die in der
04:00
From-Klausel angegebenen Tabellen und Sichten beziehen. Eine Sortierung der Ergebnismenge wird in der Order-By-Klausel formuliert. In einer SQL-Abfrage werden die einzelnen Relationaloperatoren durch die Schlüsselwörter gekennzeichnet. Daher können die Symbole der
04:24
Relationaloperatoren entfallen. Damit erhalten wir einen ersten SQL-Befehl. Wir müssen uns jetzt noch um die Umbenennung der Attribute kümmern. Die Umbenennung wird über das Schlüsselwort asked getkennzeichnet. Dies wird hinter das umzubenennende Attribut geschrieben zusammen
04:46
mit der neuen Bezeichnung. Diese neue Bezeichnung wird auch als Spalten alias bezeichnet. Neben Spalten gibt es auch Tabellen alias. Der Tabellen alias ist eine Kurzbezeichnung für eine Tabelle,
05:03
die in der From-Klausel definiert wird. In diesem Beispiel wird die Kurzbezeichnung k für Kunde eingeführt. Das ist der Tabellen alias. Der Tabellen alias kann dann in den anderen Klauseln
05:21
des SQL-Statements verwendet werden. Über einen Tabellen alias kann damit eine Attributbezeichnung eindeutig einer Tabelle zugeordnet werden. Das ist dann wichtig, wenn in der From-Klausel mehrere Tabellen auftauchen, die gleiche Attributbezeichnung verwenden. Damit haben
05:45
wir ein SQL-Statement formuliert für unser Ausgangsbeispiel. Wir können diese SQL-Abfrage aber auch anders formulieren. Das ist möglich, weil es sich um eine deklarative Anfragesprache
06:00
handelt. In diesem SQL-Statement werden die Kunden selektiert über die Angabe der zu gehörenden Kundennummern. Dabei können mehrere Auswahlbedingungen durch logische Operatoren miteinander verknüpft werden. In diesem Beispiel erfolgte dies durch eine Oder-Verknüpfung.
06:24
Alternativ kann auch eine Menge angegeben werden von Kundennummern. Das wird mit dem In-Operator umgesetzt. Der In-Operator prüft auf Gleichheit, ob das Attribut, was vor dem In-Operator steht, ein Wert hat, welches in der nachfolgenden Menge enthalten ist.
06:45
Anstelle der Kundennummer kann auch der Nachname verwendet werden, um die Tupel auszuwählen. Für den Vergleich von Zeichenketten können Wildcards genutzt werden. Das wird mit dem
07:02
Like-Operator gemacht. Das Prozentzeichen bezeichnet kein oder beliebig viele Zeichen, während der Unterstrich genau für ein Zeichen steht als Platzhalter. Funktionen können ebenfalls genutzt werden, um Auswahlbedingungen zu formulieren. Bei Oracle kann beispielsweise
07:26
die Apper-Funktion genutzt werden, um den Nachnamen in Großbuchstaben zu konvertieren. Hierdurch kann der Vergleich der Zeichenkette unabhängig von der Groß- und Kleinsteigung von Namensbestandteilen erfolgen. Natürlich muss die Zeichenkette, mit der verglichen
07:45
wird, auch großgeschrieben sein. Durch das nachfolgende Prozentzeichen werden auch nachfolgende Leerzeichen ignoriert. Es können auch reguläre Ausdrücke verwendet werden. Hier sehen Sie zwei Beispiele. In dem ersten Beispiel wird geprüft, ob die Kundennummer nur aus Zahlen
08:05
besteht und im zweiten Beispiel wird geprüft, ob der Nachname nur aus Buchstaben besteht. Bei Oracle wird das durch die Funktion Reguläre Expression Like durchgeführt. Diese Funktion hat zwei Parameter, einmal die Zeichenkette und den regulären Ausdruck. Ein regulärer
08:26
Ausdruck beginnt dabei mit einem Dachsymbol und endet mit dem Dollarzeichen. Die Zeichenkette muss geprüft werden, ob es dem regulären Ausdruck entspricht. Beim regulären Ausdruck
08:41
erfolgt die Prüfung immer gegenüber einem vorhandenen Attributwert. Wir können aber auch prüfen, ob ein Wert vorhanden ist oder nicht. In dem Beispiel sind die beiden Vornamen der Kunden Meier und Meitner bekannt, während der Vorname des Kunden Schmitz unbekannt ist. Der Vorname des Kunden Schmitz ist vielleicht nicht bekannt oder nicht sinnvoll, wenn es
09:05
sich zum Beispiel um ein Unternehmen handelt, also eine juristische Person. Ein unbekannter Wert wird durch den Wert Null gekennzeichnet. Eine Prüfung auf Gleichheit kann aber nicht mit einem unbekannten Wert durchgeführt werden. Eine Prüfung auf einen unbekannten Wert erfolgt
09:26
damit immer mit der Klausel isNull oder isNotNull. Die Kunden, deren Vornamen bekannt ist, können wir jetzt mit der Auswahlbedingung Vorname isNotNull ermitteln. Zur Ermittlung der Tupel,
09:43
deren Vorname unbekannt ist, müssen wir die Negation in dieser Auswahlbedingung weglassen. In diesem Fall erhalten wir nur noch den Kunden Schmitz. Diese Abfrage liefert eine andere Ergebnismenge als die vorherige. Daher sind diese beiden Abfragen nicht semantisch äquivalent
10:05
zueinander. Damit haben wir diese Grundform einer SQL-Abfrage. In der Select-Klausel wird spezifiziert, was gesucht wird. Das heißt, hier sind die Projektionen und die Umbenennung
10:21
enthalten. Der Schlüsselwort distinct ist optional und entfernt doppelt auftretende Tupel, also Duplikate. In der From-Klausel werden die Tabellen und Benutzersichten angegeben, aus denen die Daten gelesen werden sollen. Die Auswahlbedingungen werden in der Were-Klausel
10:45
formuliert und anschließend tut sich die Order-By-Klausel, die für die Sortierung der Tupel in der Ergebnismenge zuständig ist. Die Sortiereinfolge kann einmal aufsteigend erfolgen, escending
11:02
oder absteigend descending. Das ist jetzt die Grundform einer SQL-Abfrage. Natürlich gibt es noch weitere Schlüsselwörter, die genutzt werden können. Da geht es dann in den nächsten Video drum.