K5 Die Standardsprache SQL Flashcards

1
Q

Sprachentwicklung von SQL

A

SQL wurde „de facto“-Standard in der relationalen Welt (1986 von ANSI, 1987 von ISO akzeptiert)

Wesentliche Stufen der Weiterentwicklung des Standards

  • SQL2 (1992): rein relational
  • (SQL3) SQL:1999: objekt-relational
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Mächtigkeit von SQL

A

Auswahlvermögen umfasst das des Relationenkalküls und der Relationenalgebra: relational vollständig

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Aussprache von SQL

A

Englische Aussprache von SQL

  • SQL kann als Nachfolger von SEQUEL (Structured English Query Language) betrachtet werden und wird daher oft [ˈsiːkwəl] ausgesprochen
  • Speziell im Umfeld von:
    • Oracle
    • Mircosoft
  • Gemäß Standard wird es als [ɛskjuˈː ɛl] ausgesprochen
  • So auch im Umfeld von:
    • MySQL
    • PostgreSQL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

SQL: abbildungsorientierte Sprache

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

SQL92-Syntax:

  • INSERT IN TO
  • DETLETE FROM
  • UPDATE
  • CREATE TABLE
  • CREATE VIEW
  • DROP TABLE
  • DROP VIEW
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

SQL92-Syntax

  • SELECT
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

SQL92-Syntax

  • condition
  • expr
  • predicate
  • comparison
  • arithm.op
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

SQL92-Syntax

  • from
  • function
  • set
  • attr-spec
  • attr-defn
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Anfragen: SELECT-Anweisung

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Anfragen: Untermengenbildung und Benennung von Ergebins-Spalten

Welche Dramen von Goethe wurden nach 1800 uraufgeführt?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Anfragen: Test auf Mengenzugehörigkeit

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Anfragen: Geschachtelte Abbildung

Welche Figuren kommen in Dramen von Schiller oder Goethe vor?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Anfragen: Symmetrische Abbildung und deren Vorteile

  • Finde die Figuren und ihre Autoren, die in Dramen von Schiller oder Goethe vorkommen.
  • Finde die Dichter (AUTOR, G-ORT), deren Dramen von Dichtern mit demselben Geburtsort (G-ORT) kritisiert wurden
  • Finde die Schauspieler (NAME, W-ORT), die bei in Weimar urauf geführten Dramen an ihrem Wohnort als ’Held’ mitgespielt haben.
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Anfragen: Auswertungs-/Erklärungsmodell

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Anfragen: Benutzer-spezifizierte Reihenfolge der Ausgabe

Finde die Schauspieler, die an einem Ort wohnen, an dem sie gespielt haben, sortiert nach Name (aufsteigend), W - Ort (absteigend).

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Anfragen: Aggregatfunktionen

  • Bestimme das Durchschnittsgehalt der Schauspieler, die älter als 50 Jahre sind (GEHALT und ALTER seien Attribute von SCHAUSPIELER).
  • An wievielen (unterschiedlichen) Orten wurden Dramen uraufgeführt (U - Ort)?
  • Welches Drama wurde zuerst aufgeführt ?
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Anfragen: Partitionierung

  • Liste alle Abteilungen und das Durchschnittsgehalt ihrer Angestellten auf (Monatsgehalt).
  • Liste die Abteilungen zwischen K50 und K60 auf, bei denen das Durchschnittsalter ihrer Angestellten kleiner als 30 ist.
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Anfragen: Hierarchische Beziehungen auf einer Relation

Finde die Angestellten, die mehr als ihre (direkten) Manager verdienen (Ausgabe: NAME, GEHALT, NAME des Managers).

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Anfragen: Auswertung von SELECT-Anweisungen – Erklärungsmodell

A
  • Die auszuwertenden Relationen werden durch die FROM-Klausel bestimmt. Alias-Namen erlauben die mehrfache Verwendung derselben Relation.
  • Das Kartesische Produkt aller Relationen der FROM-Klausel wird gebildet.
  • Tupeln werden ausgewählt durch die WHERE-Klausel.
  • Qualifizierte Tupeln werden gemäß der GROUP-BY-Klausel in Gruppen eingeteilt.
  • Gruppen werden ausgewählt, wenn sie die HAVING-Klausel erfüllen. Prädikat in der HAVING-Klausel darf sich nur auf Gruppeneigenschaften beziehen (Attribute der GROUP-BY-Klausel oder Anwendung von Aggregat-Funktionen).
  • Die Ausgabe wird durch die Auswertung der SELECT-Klausel abgeleitet. Wurde eine GROUP-BY-Klausel spezifiziert, dürfen als SELECT-Elemente nur Ausdrücke aufgeführt werden, die für die gesamte Gruppe genau einen Wert ergeben (Attribute der GROUP-BY-Klausel oder Anwendung von AggregatFunktionen).
  • Die Ausgabereihenfolge wird gemäß der ORDER-BY-Klausel hergestellt. Wurde keine ORDER-BY-Klausel angegeben, ist die Ausgabereihenfolge systembestimmt (indeterministisch).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Anfragen: Erklärungsmodell – Die Summe der Gehälter pro Abteilung, in der mindestens ein Mitarbeiter 40 Jahre oder älter ist, soll berechnet werden:

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Anfragen: Suchbedingungen, (Nicht-)quantifizierte Prädikate

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Anfragen: IN-Prädikate

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Anfragen: Ähnlichkeitssuche

A

Unterstützung der Suche nach Objekten, von denen nur Teile des Inhalts bekannt sind oder die einem vorgegebenen Suchkriterium möglichst nahe kommen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Anfragen: Quantifizierung

  • Finde die Manager, die mehr verdienen als alle ihre direkten Untergebenen
  • Finde die Namen der Schauspieler, die mindestens einmal gespielt haben (… nie gespielt haben)
  • Finde die Namen aller Schauspieler, die alle Rollen gespielt haben
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Anfragen: **Prädikate über Nullwerten**
**Attributspezifikation**: Es kann für jedes Attribut festgelegt werden, ob NULL-Werte zugelassen sind oder nicht **Verschiedene Bedeutungen von Nullwerten:** * Datenwert ist momentan nicht bekannt * Attributwert existiert nicht für ein Tupel
26
Anfragen: **Häufige genutzte Alternativen zu Nullwerten**
Häufige genutzte Alternativen zu Nullwerten * Defaultwerte (Risiko: Eingabe eines falschen Wertes) * Leere Zeichenkette, „None“, „Unbekannt“ oder spezielle Symbole wie „-“ oder „#“ bei Stringwerten * „- 1“ bei Attributen mit positiven Zahlen wie z.B. Alter, Gehalt * Untypische Werte wie „01.01.0000“ bei Datumsangaben Generelle Aspekte: * Welche Auswirkungen haben solche Alternativwerte auf Wertvergleiche, Aggregationen oder Statistikanalysen? * Inkonsequente Nutzung führt zu Inkonsistenzen (Konsequente Nutzung kann aber nur begrenzt vom System kontrolliert werden) * Bis auf Defaultwerte nicht auf Fremdschlüsselattribute anwendbar
27
Anfragen: **Alternative Modellierung von optionalen Eigenschaften**
Verwendung eines zusätzlichen Boolschen Attributes pro optionaler Eigenschaft * Belegung mit 1 wenn Eigenschaft existiert * Belegung mit 0 wenn Eigenschaft nicht existiert * Belegung mit Nullwert falls Existenz der Eigenschaft unbekannt ist Anm.: In den beiden letzten Fällen beinhaltet das eigentl. Attribut auch einen Nullwert * **Vorteil**: Löst Konflikt zwischen den Nullwertsemantiken „unbekannt“ und „nicht existent“ * **Nachteil**: Erhöht Komplexität von Schema und Anfragen sowie den Speicherbedarf
28
Anfragen: **Weiteres zu Nullwerten**
29
Anfragen: **Vermeintliche Anfrageäquivalenzen** * Finde alle Abteilungen deren Leiter nicht mehr als 50k verdient * Finde die Person mit dem maximalen Gehalt. * Finde alle Personen aus Abteilung K56 die mehr als 40k verdienen.
30
Anfragen: **Vermeintliche Tautologien** * Finde alle Personen die weniger, gleich oder mehr als 40k verdienen. * Finde alle Personen die entweder in Abteilung K45 oder nicht in Abteilung K45 arbeiten
31
## Footnote **SQL Fiddle**
32
Datenmanipulation: **Einfügen von Tupeln** * Füge den Schauspieler Garfield mit der PNR 4711 ein * Füge die Schauspieler aus HH in die Relation TEMP ein
33
Datenmanipulation: **Löschen von Tupeln mit Hilfe von Suchklauseln** * Lösche den Schauspieler mit der PNR 4711. * Lösche alle Schauspieler, die nie gespielt haben.
34
Datenmanipulation: **Ändern von Tupeln mit Hilfe von Suchklauseln**
35
Datenmanipulation: Um mengenbasierte Änderungen in MySQL auszuführen, muss ‚Safe Updates‘ deaktiviert werden
36
Datendefinition: **Ziel der SQL-Normierung**
* möglichst große Unabhängigkeit der DB-Anwendungen von speziellen DBS * einheitliche Sprachschnittstelle genügt nicht! * Beschreibung der gespeicherten Daten und ihrer Eigenschaften nach einheitlichen und verbindlichen Richtlinien ist genauso wichtig
37
Datendefinition: **Definitionsschema**
38
Datendefinition: **Definition von Schemata**
39
Datendefinition: **Datentypen**
40
Datendefinition: **Definition von Domains**
41
Datendefinition: **Definition von Attributen**
42
Datendefinition: **Erzeugung von Basisrelationen**
43
Beziehungen: **(1:n)-Beziehung**
44
Beziehungen: (1:1)-Beziehung
45
Beziehungen: **Symmetrische (1:1)-Beziehung**
46
Beziehungen: **(n:m)-Beziehung**
47
Beziehungen: **Reflexive (1:n)-Beziehung**
* Mit Hilfe dieser Lösung kann die Personal-Hierarchie eines Unternehmens dargestellt werden; die referentielle Beziehung stellt hier eine partielle Funktion dar, da die „obersten“ Manager einer Hierarchie keinen Manager haben * MNR ... NOT NULL lässt sich nur realisieren, wenn die „obersten“ Manager als ihre eigenen Manager interpretiert werden; dadurch treten jedoch Referenzzyklen auf, was die Frageauswertung und die Konsistenzprüfung erschwert * Welche Beziehungsstruktur erzeugt MNR ... UNIQUE NOT NULL?
48
Abbildung von Beziehungen - Zusammenfassung
* Relationenmodell ‚hat‘ wertbasierte Beziehungen (im Gegensatz hierzu haben objektorientierte Datenmodelle referenzbasierte Beziehungen) * Fremdschlüssel (FS) und zugehöriger Primärschlüssel/Schlüsselkandidat (PS/SK) repräsentieren eine Beziehung (gleiche Wertebereiche!) * Alle Beziehungen (FS ↔ PS/SK) sind binär und symmetrisch * Auflösung einer Beziehung geschieht durch Suche * Es sind i. allg. k (1:n)-Beziehungen zwischen zwei Relationen möglich
49
Datendefinition: **Beispiel** Illustriere DB-Schema
50
Datendefinition: **Beispiel** Definiere Wertebereiche
51
Datendefinition: **Beispiel** Definiere Relationen
52
Wartung von Beziehungen: **Relationale Invarianten / referentielle Integrität**
* **Primärschlüsselbedingung**: Eindeutigkeit, keine Nullwerte! * **Fremdschlüsselbedingung**: Zugehöriger PS (SK) muss existieren
53
Wartung von Beziehungen: **Potentielle Gefährdung**
Operationen in der Sohn-Relation * Einfügen eines Sohn-Tupels * Ändern des FS in einem Sohn-Tupel * Löschen eines Sohn-Tupels * Welche Maßnahmen sind erforderlich? * Beim Einfügen erfolgt eine Prüfung, ob in einem Vater-Tupel ein PS/SK-Wert gleich dem FS-Wert des einzufügenden Tupels existiert * Beim Ändern eines FS-Wertes erfolgt eine analoge Prüfung * Löschen erfordert keine Maßnahme Operationen in der Vater-Relation * Löschen eines Vater-Tupels * Ändern des PS/SK in einem Vater-Tupel * Einfügen eines Vater-Tupels (unproblematisch) * Welche Reaktion ist wann möglich/sinnvoll? * Verbiete Operation * Lösche/ändere rekursiv Tupel mit zugehörigen FS-Werten * Falls Sohn-Tupel erhalten bleiben soll (nicht immer möglich, z.B. bei Existenzabhängigkeit), setze FS-Wert zu NULL oder Default Wie geht man mit NULL-Werten um? (Wdh.) * Spezielle Semantiken von NULL-Werten * Dreiwertige Logik verwirrend: T, F, ? * Setzung: NULL ≠ NULL (z. B. beim Verbund) * bei Operationen: Ignorieren von NULL-Werten
54
Wartung von Beziehungen: **Referentielle Aktionen**
55
Wartung von Beziehungen: Diskussion der Auswirkungen referentieller Aktionen am Beispiel
FOLIEN 102-109
56
Wartung von Beziehungen: **Maßnahmen zur Verhinderung von Reihenfolgeabhängigkeiten**
Statische Schemaanalyse zur Feststellung sicherer DB-Schemata * nur bei einfach strukturierten Schemata effektiv * hohe Komplexität der Analysealgorithmen * bei wertabhängigen Konflikten zu restriktiv (konfliktträchtige Schemata) Dynamische Überwachung der Modifikationsoperationen * durchspielen aller Ausführungsreihenfolgen (können weit mehr als 2 sein!) * hoher Laufzeitaufwand * häufig unnötig, da Reihenfolgeabhängigkeiten eher selten auftreten Vorgehensweisen: 1. Falls Sicherheit eines Schemas festgestellt werden kann, ist keine Laufzeitüberwachung erforderlich 2. Alternative Möglichkeiten zur Behandlung konfliktträchtiger Schemata, nach dem die statische Schemaanalyse die Sicherheit des Schemas nicht feststellen konnte * sie werden verboten, oder * sie werden erlaubt und * die referentiellen Aktionen werden bei jeder Operation dynamisch überwacht * falls ein Konflikt erkannt wird, wird die Operation zurückgesetzt
57
Wartung von Beziehungen: **Durchführung der referentiellen Aktionen**
58
Wartung von Beziehungen: **Zyklische Referenzpfade**
59
Schemaevolution
Wachsender oder sich ändernder Informationsbedarf * Erzeugen/Löschen von Tabellen (und Sichten) * Hinzufügen, Ändern und Löschen von Spalten * Anlegen/Ändern von referentiellen Beziehungen * Hinzufügen, Modifikation, Wegfall von Integritätsbedingungen Hoher Grad an logischer Datenunabhängigkeit ist sehr wichtig! Zusätzliche Änderungen im DB-Schema durch veränderte Anforderungen bei der DB-Nutzung * Dynamisches Anlegen von Zugriffspfaden * Aktualisierung der Zugriffskontrollbedingungen
60
Sichten
**Ziel**: Festlegung * welche Daten Benutzer wie sehen wollen (Vereinfachung, leichtere Benutzung) * welche Daten sie nicht sehen dürfen (Datenschutz) * einer zusätzlichen Abbildung (erhöhte Datenunabhängigkeit) Sicht (View) * mit Namen bezeichnete, aus Tabellen abgeleitete, virtuelle Tabelle (Anfrage) Korrespondenz zum externen Schema bei ANSI/SPARC (Benutzer sieht jedoch i. allg. mehrere Sichten (Views) und Tabellen)
61
Sichten: **Eigenschaften von Sichten**
* Sicht kann wie eine Tabelle behandelt werden * Sichtsemantik: „dynamisches Fenster“ auf zugrundeliegende Tabellen * Sichten auf Sichten sind möglich * eingeschränkte Änderungen: aktualisierbare und nicht-aktualisierbare Sichten
62
Sichten: **Sichtbarkeit von Änderungen**
63
Sichten: **Abbildung von Sicht-Operationen auf Tabellen *(Query Unfolding)***
Sichten werden i. allg. nicht explizit und permanent gespeichert, sondern SichtOperationen werden in äquivalente Operationen auf Tabellen umgesetzt Vorgehen: Sichtname wird durch seine Definition (d.h. eine Anfrage) ersetzt
64
Sichten: **Löschen von Sichten**
65
Sichten: **Änderbarkeit von Sichten**
66
Sichten: **WITH CHECK OPTION**
* Einfügungen und Änderungen müssen das die Sicht definierende Prädikat (WHERE-Klausel der zugehörigen CREATE-VIEW-Anweisung) erfüllen, sonst Zurückweisung * nur auf änderbaren Sichten definierbar Spezifikationsmöglichkeiten * Weglassen der CHECK-Option * WITH CASCADED CHECK OPTION oder äquivalent WITH CHECK OPTION * WITH LOCAL CHECK OPTION Annahmen * Sicht SA mit dem die Sicht definierenden Prädikat VA wird aktualisiert * SI ist die höchste Sicht im Abstammungspfad von SA, die die Option CASCADED besitzt * Oberhalb von SI tritt keine LOCAL-Bedingung auf Aktualisierung von SA * als Prüfbedingung wird von SI aus an SA “vererbt”: V = VI ⋀ VI-1 ⋀ . . . ⋀ V1 * erscheint irgendeine aktualisierte Zeile von SA nicht in SI, so wird die Operation zurückgesetzt * Es ist möglich, dass Zeilen aufgrund von gültigen Einfüge- oder Änderungsoperationen aus SA verschwinden Aktualisierte Sicht besitzt WITH CHECK OPTION * Default ist CASCADED * Als Prüfbedingung bei Aktualisierungen ergibt sich V = VA ⋀ VN ⋀ . . . ⋀ VI ⋀ . . . ⋀ V1 * Zeilen können jetzt aufgrund von gültigen Einfüge- oder Änderungsoperationen nicht aus SA verschwinden LOCAL hat eine undurchsichtige Semantik * wird hier nicht diskutiert * Empfehlung: nur Verwendung von CASCADED
67
Indexierung: **Einsatz von Indexstrukturen**
* Beschleunigung der Suche: Zugriff über Spalten (Schlüsselattribute) * Kontrolle von Integritätsbedingungen (relationale Invarianten) * Zeilenzugriff in der logischen Ordnung der Schlüsselwerte * Gewährleistung der Clustereigenschaft für Tabellen * Aber auch: erhöhter Aktualisierungsaufwand und Speicherplatzbedarf
68
Indexierung: **Einrichtung von Indexstrukturen**
* Phys. Datenunabhängigkeit des Relationenmodells erlaubt ein Hinzufügen und Löschen * jederzeit möglich, um z. B. bei veränderten Benutzerprofilen das Leistungsverhalten zu optimieren * “beliebig” viele Indexstrukturen pro Tabelle und mit unterschiedlichen Spaltenkombinationen als Schlüssel möglich * Steuerung der Eindeutigkeit der Schlüsselwerte und der Clusterbildung * Freiplatzanteil (PCTFREE) in jeder Indexseite beim Anlegen erleichtert das Wachstum * Spezifikation: DBA oder Benutzer
69
Indexierung: **Index mit und ohne Clusterbildung**
70
Indexierung: **Beispiele** * Erzeugung einer Indexstruktur mit Clusterbildung auf der Spalte Anr von Abt * Erzeugung einer Indexstruktur auf den Spalten Anr (absteigend) und Gehalt (aufsteigend) von Pers.
71
Indexierung: **Typische Implementierung eines Index: B\*-Baum**
(wird von meisten DBVS angeboten!) * dynamische Reorganisation durch Aufteilen (Split) und Mischen von Seiten * Wesentliche Funktionen * direkter Schlüsselzugriff auf einen indexierten Satz * sortiert sequentieller Zugriff auf alle Sätze (unterstützt Bereichsanfragen, Verbundoperation usw.) * Balancierte Struktur * unabhängig von Schlüsselmenge * unabhängig von Einfügereihenfolge
72
Zusammenfassung: **SQL-Anfragen, (Mengenorientierte Datenmanipulantion), Datendefinition**
SQL-Anfragen * Mengenorientierte Spezifikation, verschiedene Typen von Anfragen * Vielfalt an Suchprädikaten * Auswahlmächtigkeit von SQL ist höher als die der Relationenalgebra * Erklärungsmodell für die Anfrageauswertung: Festlegung der Semantik von Anfragen mit Hilfe von Grundoperationen * Optimierung der Anfrageauswertung durch das DBS Mengenorientierte Datenmanipulation Datendefinition * CHECK-Bedingungen für Wertebereiche, Attribute und Relationen * Spezifikation des Überprüfungszeitpunktes
73
Zusammenfassung: **Kontrolle von Beziehungen, Wartung der referentiellen Integrität**
Kontrolle von Beziehungen * SQL erlaubt nur die Spezifikation von binären Beziehungen. * Referentielle Integrität von FS --\> PS/SK wird stets gewährleistet. * Rolle von PRIMARY KEY, UNIQUE, NOT NULL * Es ist nur eine eingeschränkte Nachbildung von Kardinalitätsrestriktionen möglich; insbesondere kann nicht spezifiziert werden, dass „ein Vater Söhne haben muss“. Wartung der referentiellen Integrität * SQL2/3 bietet reichhaltige Optionen für referentielle Aktionen * Es sind stets sichere Schemata anzustreben * Falls eine statische Schemaanalyse zu restriktiv für die Zulässigkeit eines Schemas ist, muss für das gewünschte Schema eine Laufzeitüberwachung der referentiellen Aktionen erfolgen.
74
Zusammenfassung: **Schemaevolution, Sichtenkonzept, Indexstrukturen als B\*-Bäume**
Schemaevolution * Änderung/Erweiterung von Spalten, Tabellen, Integritätsbedingungen, ... Sichtenkonzept * Erhöhung der Benutzerfreundlichkeit * Flexibler Datenschutz * Erhöhte Datenunabhängigkeit * Rekursive Anwendbarkeit * Eingeschränkte Aktualisierungsmöglichkeiten Indexstrukturen als B\*-Bäume * direkter Schlüsselzugriff auf einen indexierten Satz * sortiert sequentieller Zugriff auf alle Sätze (unterstützt Bereichsanfragen, Verbundoperation usw.)