Structured Query Language, SQL Kalkülteil

Werbung
Structured Query Language, SQL
Kalkülteil
•
vom American National Standards Institute, ANSI, genormte
Datenbanksprache.
•
enthält eine Teilsprache, die eine relationale Anfragesprache ist,
•
Mischung von
−
tupelorientierten Relationenkalkül
−
mit einigen algebraischen Elementen,
−
angereichert durch arithmetische und
−
textverarbeitende Elemente.
1. Semantik: erzeuge alle Kombinationen von Tupeln
µ1 aus R1,...,µk aus Rk
(wobei die Ri nicht notwendig verschieden
sein müssen);
Syntax: binde
Tupelvariable µ1 an Relationensymbol R1,...,
Tupelvariable µk an Relationensymbol Rk;
2. Semantik: wähle diejenigen Kombinationen aus, für die
eine Formel Φ mit Prädikatenzeichen für
Komponentenvergleiche wie = oder ≠ gültig
ist;
Syntax: setze aus Tupelvariablen und passenden
Attributen gebildete
Attributterme der Form µ.A
in aussagenlogische Kombination von
Prädikatenzeichen für Vergleiche von Werten
ein;
3. Semantik: liefere dann die Komponenten
µi1(A1),...,µil(Al) dieser Kombinationen;
Syntax: bilde Liste der diese Komponenten
bezeichnenden Attributterme µi1.A1,...,µil.Al.
J. Biskup
Informationssysteme
SQL
24.11.96
11.1
J. Biskup
Informationssysteme
SQL
24.11.96
11.2
Dreischrittverfahren
Vereinfachungen
• algebraisch π{Ri1.A1,..., Ril.Al} (σΦ (R1 × ... × Rk))
• Anstatt in der FROM-Klausel
durch “Ri µi” eine Tupelvariable µi
an das Relationensymbol Ri zu binden,
darf man in der SELECT- und der WHERE-Klausel das
Relationensymbol selbst wie eine Tupelvariable benutzen und
die entsprechende Bindung “Ri Ri” zu “Ri” abkürzen.
• In der SQL-Syntax wird
Teil 1
durch das Schlüsselwort FROM eingeleitet,
Teil 2
durch das Schlüsselwort WHERE eingeleitet,
Teil 3
vorangestellt und durch das Schlüsselwort SELECT
(eigentlich wäre PROJECT angebracht) eingeleitet.
• entsprechender SQL-Ausdruck hat dann folgendes Aussehen:
SELECT DISTINCT µi1.A1,...,µil.Al
• Anstatt eine Komponente µ(A) durch den entsprechenden
vollständigen Attributterm µ.A zu bezeichnen,
darf man auch nur das Attribut A verwenden,
wenn entsprechend der FROM-Klausel und des
Datenbankschemas die fehlende Tupelvariable eindeutig in
Form eines Relationensymbols ergänzt werden kann.
FROM R1 µ1,...,Rk µk
• Enthält die Attributtermliste in der SELECT-Klausel alle
entsprechend der FROM-Klausel bildbaren Attributterme,
so kann sie durch * abgekürzt werden.
WHERE Φ
J. Biskup
Informationssysteme
SQL
24.11.96
11.3
J. Biskup
Informationssysteme
SQL
24.11.96
11.4
Schema:
• Anfragewunsch
“Bestimme für das Kind theresia ihr Geschlecht und ihre
Eltern!”
< PERSON
| {Name, Geschlecht} | >
< BEH
| {Patient, Arzt, ArtPro} | >
< ELT
| {Name, Eltern} | >
• Ausdruck der Relationenalgebra:
σName=theresia (PERSON ELT).
• SQL-Anfrage:
Hypergraph:
SELECT
*
DISTINCT
FROM
PERSON, ELT
PERSON
WHERE
AND
Geschlecht
ELT
PERSON.Name = ELT.Name
PERSON.Name = 'theresia'
Name
Eltern
Patient
Mensch
Arzt
ArtPro
BEH
J. Biskup
Informationssysteme
SQL
24.11.96
11.5
J. Biskup
Informationssysteme
SQL
24.11.96
11.6
• Anfragewunsch:
“Bestimme alle Ärzte, die weibliche Patienten behandeln!”
• Anfragewunsch:
“Bestimme die Großeltern des Kindes theresia!”
• Ausdruck der Relationenalgebra:
• SQL-Anfrage:
πArzt (σGeschlecht = weib (σPatient = Name (BEH
SELECT
PERSON) ) ).
GRAD2.Eltern
FROM
WHERE
• Eine entsprechende SQL-Anfrage:
SELECT
DISTINCT
FROM
GRAD1, ELT
GRAD1.Eltern = GRAD2.Name
AND
Arzt
GRAD2
GRAD1.Name = 'theresia'
BEH, PERSON
WHERE
BEH.Patient = PERSON.Name
AND
J. Biskup
ELT
Informationssysteme
PERSON.Geschlecht = 'weib'
SQL
24.11.96
11.7
J. Biskup
Informationssysteme
SQL
24.11.96
11.8
Kalkülteile von SQL:
Attributtermliste
Attributterm
,
einfache SQL-
SELECT DISTINCT
FROM
WHERE
*
Attributtermliste
Variablenbindungsliste
Tupelvariable
Formel
.
Relationensymbol
Attributterm
Variablenbindungsliste
Attribut
Relationensymbol
Tupelvariable
,
J. Biskup
Informationssysteme
SQL
24.11.96
11.9
J. Biskup
Informationssysteme
SQL
24.11.96
11.10
algebraischer Teil von SQL
Formel
Atomformel
NOT
Formel
SQL-Anfrage
einfache
SQL-Anfrage
AND
Formel
Formel
INTERSECT
OR
(
Formel
UNION
)
SQLAnfrage
MINUS
Atomformel
Term
Vergleichsprädikat
einf. SQL-Anfrage
EXISTS
Term
Term
Attributterm
Konstantenzeichen
Vergleichsprädikat
=
≠
J. Biskup
Informationssysteme
SQL
24.11.96
11.11
J. Biskup
Informationssysteme
SQL
24.11.96
11.12
Natürlicher Verbund:
Der algebraische Teil erlaubt
Seien < R | {A1,..., Ak, B1,..., Bl} | > und
< S | {B1,..., Bl, C1,...,Cm} | >
zwei Relationenschemas.
durch den Kalkülteil gebildete Ergebnisse
mengentheoretisch zu verknüpfen.
Der arithmetische Teil erlaubt,
Der natürliche Verbund von R und S wird bezeichnet
durch
die vier Grundrechenarten mitsamt den arithmetischen
Vergleichsoperationen und
SELECT DISTINCT
in der kommerziellen Datenverarbeitung häufig benötigte
Aggregatfunktionen wie Durchschnitt, Summe, Maximum,
Minimum, Anzahl
R.A1,...,R.Ak,
R.B1,...,R.Bl,
S.C1,...,S.Cm
FROM R, S
innerhalb von SQL zu benutzen.
WHERE R.B1 = S.B1 AND R.B2 = S.B2 ...
AND R.Bl = S.Bl.
Der textverarbeitende Teil erlaubt,
Konstantenzeichen als nichtatomare Zeichenfolgen zu
behandeln,
A=c-Selektion:
die man bezüglich des Vorkommens von Teilworten testen,
konkatenieren usw. kann.
Sei < R | X | > ein Relationenschema mit A ∈ X.
Die A = c-Selektion von R wird bezeichnet durch
weitere Sprachmittel:
SELECT DISTINCT *
• SQL-Anfragen ineinander schachteln,
FROM R
• Entfernung von Duplikaten in Ergebnissen unterdrücken,
• Ergebnisse weiter aufbereiten.
J. Biskup
Informationssysteme
SQL
WHERE A = 'c'.
24.11.96
11.13
J. Biskup
Informationssysteme
SQL
24.11.96
11.14
Projektion:
A=B-Vergleich:
Sei < R | X | > ein Relationenschema und {A1,..., Ak} ⊂ X.
Sei < R | X | > ein Relationenschema mit {A, B} ⊂ X.
Die Projektion von R auf {A1,..., Ak} wird bezeichnet
durch
Der A = B-Vergleich von R wird bezeichnet durch
SELECT DISTINCT *
SELECT DISTINCT A1,...,Ak
FROM R
FROM R.
WHERE A = B.
Vereinigung:
Differenz:
Seien < R | X | > und < S | X | >
vereinigungsverträgliche Relationenschemas.
Seien < R | X | > und < S | X | >
vereinigungsverträgliche Relationenschemas.
Die Vereinigung von R und S wird bezeichnet durch
Die Differenz von R und S wird bezeichnet durch
SELECT DISTINCT *
SELECT DISTINCT *
FROM R
FROM R
UNION
MINUS
SELECT DISTINCT *
SELECT DISTINCT *
FROM S
FROM S.
J. Biskup
Informationssysteme
SQL
24.11.96
11.15
J. Biskup
Informationssysteme
SQL
24.11.96
11.16
Herunterladen