Relationale Algebra-SQL

Werbung
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 1
Lehrveranstaltung DM/DB
Datenmodellierung und Datenbanksysteme
• Kennenlernen, wie man Daten
in einer Datenbank manipuliert
und wiederfindet.
Wir klären Grundbegriffe der
relationalen Algebra und des
relationalen Tupelkalküls;
Wir lernen die Datenbanksprache
SQL kennen und lösen typische
SQL-Aufgaben mit den BasisStatements. Dies wird im
Folgesemester erweitert
fortgesetzt.
Schritt 2
(Grundlegende Folien für die Wiederholung sind mit
gekennzeichnet!)
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 2
Relationale Algebra
Im Gegensatz zur Normalisierung, die auf die Verbesserung der Qualität
des Speichermodells zielt, zielt die relationale Algebra (wie auch das
relationale Tupelkalkül) auf die Verbesserung der Qualität der
Datenpräsentation.
Wir speichern
redundanzfrei,
Datenbank
aber denken
redundant !
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 3
Virtuelle Denormalisierung durch die relationale Algebra
Die durch Normalisierung auf mehrere Relationen verteilten semantisch
zusammengehörigen Informationen sollen in einer einheitlichen Sicht
präsentiert werden.
A
präsentierte Sicht
B
X
Literatur: Schubert, Datenbanken, B. G. Teubner Verlag 2005, Kapitel 7
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
Relationale Algebra und
(05)Relationale Algebra-SQL.ppt
SQL
Theorie
(Relationale Algebra und
relationales Tupelkalkül)
Praxis
(SQL)
logisches Fundament
+ Praxisanforderungen
= handhabbare
Datenbanksprache
Der Sprachumfang von SQL übersteigt in Folge ergänzender praktischer
Anforderungen die Ausdrucksmöglichkeiten der relationalen Algebra.
Folie 4
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL die standardisierte DB-Sprache
Structured Query Language = Standardisierte deskriptive Datenbanksprache für
relationale Datenbanken, zunächst Sequel (Structured English Query Language), 1986
unter Federführung der ISO fertig gestellt
ISO 9075:1989 Database Language SQL auch SQL-86;
ISO 9075:1990 Database Language SQL 2 auch SQL-92;
SQL 3: 2000 Erweiterung u. a. um objektorientierte Konzepte.
Grundfunktionen:
- Datenbank erstellen,
- Schema und Katalog erstellen,
- Tabellen erstellen und ändern,
- Views erstellen und ändern,
- Dateien indizieren,
- Daten schützen,
- Datenbankdaten aktualisieren,
- Daten selektieren,
- Sortieren,
- Transaktionen formulieren.
Grundlage ist das Relationenkalkül
D
D
L
D
M
L
WAS ist zu tun, nicht WIE !
Folie 5
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 6
Es gibt auch alternative DB-Sprachen, z. B. QBE
Query By Example = Grafische deskriptive Datenbank-Anfragesprache für relationale
Datenbanken, von IBM Research parallel zu SQL entwickelt.
Beispiel MS-SQL-Server:
Aber auch QBE
fußt auf SQL
und hat nur
eingeschränkte
Ausdrucksmöglichkeiten.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 7
Relationale Algebra und SQL
Ausgangspunkt ist die
Menge
(1) Eine Relation (Tabelle) wird beschrieben durch
- ihren Namen, z. B. Artikel und
- die Namen der Attribute (Spalten), z. B. Anzahl.
(2) Alle Operationen beziehen sich auf die gesamte
Menge.
Wir wollen zunächst die grundlegenden logischen Operationen über
Mengen kennenlernen. Die Darstellung in SQL dient dabei vorerst nur
zum "Eingewöhnen".
Erst danach betrachten wir SQL als Programmiersprache und lernen in
den Übungen SQL programmieren.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Grundoperationen über Relationen
SQL
1. Projektion (Auswahl von Spalten)
PersNr
Name
Vorname
023
Muh
145
Personal
Geschlecht
Abt
Magda
w
34
Wau
Harald
m
34
437
Miau
Irene
w
56
759
Quak
Andre
m
56
854
Piep
Ursel
w
78
PersNr
Name
Vorname
023
Muh
Magda
Definition: π A (r)
145
Wau
Harald
π PersNr, Name, Vorname (Personal)
437
Miau
Irene
759
Quak
Andre
854
Piep
Ursel
Beispiel:
Auswahl der ersten
drei Spalten für eine
externe Sicht!
Beispiel: Anzeige ausgewählter Personaldaten
SQL: Select PersNr, Name,
Vorname from Personal
Folie 8
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Grundoperationen über Relationen
Folie 9
SQL
2. Selektion [auch Restriktion] (Auswahl von Zeilen)
PersNr
Name
Vorname
Geschlecht
Abt
023
Muh
Magda
w
34
145
Wau
Harald
m
34
437
Miau
Irene
w
56
759
Quak
Andre
m
56
854
Piep
Ursel
w
78
PersNr
Name
Vorname
Geschlecht
Abt
023
Muh
Magda
w
34
437
Miau
Irene
w
56
854
Piep
Ursel
w
78
Personal
Beispiel: Auswahl aller
Personen weiblichen
Geschlechts
( Geschlecht = "w" )
Definition:
σ P(r)
σ Geschlecht='w' (Personal)
SQL: Select * from Personal where Geschlecht = 'w'
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 10
Grundoperationen über Relationen
3. [natürlicher] Join (Verbund von zwei oder mehr Tabellen)
PersNr
Name
Vorname
023
Muh
Magda
145
Wau
Harald
437
Miau
Irene
759
Quak
Andre
854
Piep
Ursel
PersNr
Name
Vorname
023
Muh
023
Sprache
Grad
Magda
engl
2
Muh
Magda
franz
1
437
Miau
Irene
engl
2
437
Miau
Irene
russ
3
759
Quak
Andre
engl
3
854
Piep
Ursel
franz
2
PersNr
Sprache
Grad
023
engl
2
023
franz
1
437
engl
2
437
russ
3
759
engl
3
854
franz
2
Verbunden über die Felder PersNr
in beiden Tabellen.
Beispiel: Anzeige der Sprachkenntnisse
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 11
Grundoperationen über Relationen
3. [natürlicher] Join (Verbund von zwei oder mehr Tabellen)
Sprachen
Personal
PersNr
Sprache
Grad
023
engl
2
023
franz
1
437
engl
2
437
russ
3
Andre
759
engl
3
Piep
Ursel
854
franz
2
PersNr
Name
Vorname
023
Muh
023
PersNr
Name
Vorname
023
Muh
Magda
145
Wau
Harald
437
Miau
Irene
759
Quak
854
Sprache
Grad
Magda
engl
2
Muh
Magda
franz
1
437
Miau
Irene
engl
2
437
Miau
Irene
russ
3
759
Quak
Andre
engl
3
854
Piep
Ursel
franz
2
Achten Sie darauf, dass in der
Ergebnis-Tabelle nur die Zeilen
verbunden wurden, bei denen die
PersNr gleich ist!
Die Zeile mit der PersNr=145 aus
der Tabelle Personal fehlt z. B. im
Ergebnis.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Grundoperationen über Relationen
Folie 12
SQL
3. [natürlicher] Join (Verbund von zwei oder mehr Tabellen)
Sprachen
Personal
PersNr
Name
Vorname
023
Muh
Magda
145
Wau
Harald
437
Miau
Irene
759
Quak
Andre
854
Piep
Ursel
PersNr
Sprache
Grad
023
engl
2
023
franz
1
437
engl
2
437
russ
3
759
engl
3
854
franz
2
Beispiel: Anzeige der Sprachkenntnisse
Definition: r1 P r2
PersNr
Name
Vorname
Sprache
Grad
023
Muh
Magda
engl
2
023
Muh
Magda
franz
1
437
Miau
Irene
engl
2
437
Miau
Irene
russ
3
759
Quak
Andre
engl
3
854
Piep
Ursel
franz
2
Personal
Personal
PersNr=PersNr Sprachen
oder
Sprachen
SQL:
Select PersNr, Name, Vorname,
Sprache, Grad from Personal
inner Join Sprachen on
(Personal.PersNr = Sprachen.PersNr)
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 13
Grundoperationen über Relationen
3. [natürlicher] Join (Verbund von zwei oder mehr Tabellen)
PersNr
Sprache
Grad
34
023
engl
2
m
34
023
franz
1
Irene
w
56
437
engl
2
Quak
Andre
m
56
437
russ
3
Piep
Ursel
w
78
759
engl
3
854
franz
2
PersNr
Name
Vorname
023
Muh
023
PersNr
Name
Vorname
Geschlecht
023
Muh
Magda
w
145
Wau
Harald
437
Miau
759
854
Abt
Sprache
Grad
Magda
engl
2
Muh
Magda
franz
1
437
Miau
Irene
engl
2
437
Miau
Irene
russ
3
759
Quak
Andre
engl
3
854
Piep
Ursel
franz
2
Verbunden über die Felder PersNr
in beiden Tabellen.
Beispiel: Anzeige der Sprachkenntnisse
Anmerkung: Projektion, Selektion
und Verbund können kombiniert
angewendet werden.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 14
Grundoperationen über Relationen
Join (Verbund von zwei oder mehr Tabellen)
Der Join (Verbund, Verknüpfung, Verkettung ) ermöglicht die Ableitung einer
Relation R(A1, ... An) aus der tupelweisen Verknüpfung zweier Relationen
R1(B1, ..., Bi) x R2(C1, ..., Cj)
kartesisches Produkt.
Durch spezielle Formen des Joins werden Einschränkungen definiert:
1. Theta-Join:
Selektion der Tupel aus dem Produkt zweier Relationen auf
Grund eines Prädikates P (z. B. Ai>Bj).
2. Equi-Join:
Selektion der Tupel aus dem Produkt zweier Relationen,
bei Gleichheit des Inhalts von ausgewählten in Semantik
und Wertebereich (Domäne) gleichen Attributen.
3. Natürlicher Join: Equi-Join mit Elimination der doppelt auftretenden Attribute.
4. Outer-Join:
Übernahme aller Tupel der ersten Relation R1 und
natürlicher Join mit den Tupeln der zweiten Relation R2
(auch Semi-Join; bzw. Left-Join und Right-Join).
Anmerkung: Für die Wirtschaftsinformatik sind insbesondere
der natürliche und der Outer-Join bedeutsam.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 15
Grundoperationen über Relationen (1)
ergänzende Operationen
Neben den für die Datenbanktechnologie bedeutendsten Operationen Selection,
Projektion und Joining sind prinzipiell alle definierten Mengenfunktionen auf
Relationen anwendbar. Praktisch sind das insbesondere die Operationen
• UNION (Vereinigung) zur Ausgabe n strukturgleicher Relationen in einer
gemeinsamen Relation;
Beispiel: Anzeige der Artikel mit allen jeweils gültigen Angebotspreisen,
berechnet aus den Relationen Angebot-Aktuell und -Archiv.
• INTERSECTION (Durchschnitt) zur Ermittlung der gemeinsamen Schnittmenge zweier Union-kompatibler Relationen;
Beispiel: Anzeige der Adressen der Firmen, die sowohl Kunde als auch
Lieferant sind.
• DIFFERENCE (Differenz) zur Bildung einer Relation mit allen Tupeln der
ersten Relation, die nicht in einer zweiten Relation enthalten sind;
Beispiel: Anzeige der Adressen der Firmen, die kein Lieferant sind.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 16
Grundoperationen über Relationen (2)
ergänzende Operationen
Neben den für die Datenbanktechnologie bedeutendsten Operationen Selection,
Projektion und Joining sind prinzipiell alle definierten Mengenfunktionen auf
Relationen anwendbar. Praktisch sind das insbesondere die Operationen
• DIVIDE (Division) zur Auswahl von Tupeln einer Relation (dem Zähler) mit
Hilfe einer anderen Relation (dem Nenner);
Beispiel: Anzeige nur der Lieferanten, die alle im Angebot enthaltenen
Artikel anbieten.
• UMBENNEN von Spalten zur Zuordnung eines Resultates zu einer neu
strukturierten Menge.
*) gehört nicht zu den von E. F. Codd definierten Operatoren.
Das Relationenkalkül (auch relationales Tupel-Kalkül) ist eine im Gegensatz zur
funktional orientierten Relationenalgebra eine deklarative formal logische
Sprache zur Formulierung von Aussagen über Relationen
SQL !
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 17
Zusatzoperationen über Relationen
Aggregatfunktionen und Gruppierung
Einige für kommerzielle DBMS notwendige Operationen lassen sich nicht mit
den Grundoperationen der relationalen Algebra formulieren. Sie sind jedoch
unentbehrlich für professionelle Datenbankauswertungen.
Aggregatfunktionen berechnen Werte über alle Tupel (Zeilen)
einer Relation (Tabelle), wenn kein Gruppierungsmerkmal existiert
ODER
einer Gruppe von Tupeln (Zeilen) einer Tabelle, wenn ein
Gruppierungsmerkmal existiert.
Grundlegende Aggregatfunktionen sind:
SUM (Summierung), COUNT (Anzahl), AVG (Durchschnitt),
MIN (Minimum), MAX (Maximum)
Eine Gruppe kann eine oder mehrere Attribute (Spalten) einer Relation
(Tabelle) umfassen und wird durch die Gleichheit der gespeicherten Daten
in diesen Attributen definiert.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 18
Zusatzoperationen über Relationen
Rekursive Abschlussoperationen
Einige für kommerzielle DBMS notwendige Operationen lassen sich nicht mit
den Grundoperationen der relationalen Algebra formulieren. Sie sind jedoch
unentbehrlich für professionelle Datenbankauswertungen.
Die rekursive Hülle (Recursive Closure) wird als Operation auf eine rekursive Beziehung zwischen Tupeln des gleichen Typs angewandt.
Beispiel: PERSONAL(PersNr, Name, …, LeiterPersNr)
Die Attribute PersNr und LeiterPersNr basieren auf der gleichen
Domäne, jedoch PersNr in der Rolle des Angestellten und
LeiterPersNr in der Rolle des Vorgesetzten.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 19
Zusammenfassung
Bis mindestens zur
3NF normalisierte
Tabellen dienen zur
qualitätsgerechten
(redundanzfreien,
konsistenten)
Datenspeicherung.
Nach den Regeln der
relationalen Algebra
präsentierte Daten dienen
der optimalen Darstellung
der Ergebnisse von
Datenbankauswertungen.
… und nun geht es richtig los mit SQL!
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – der relationale Datenbankstandard
Sequel ist recht
umfangreich,
aber wir
betrachten in
diesem Semester
nur die
Grundfunktionen
(Standard-SQL)!
Folie 20
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 21
Nochmals zur Wiederholung: SQL – Grundfunktionalität (Folie 5)
•
•
•
•
•
•
•
•
•
•
Datenbank erstellen (Create Database) und löschen,
Tabellen erstellen (Create Table), löschen und ändern,
Views erstellen (Create View), löschen und ändern,
Stored Procedure und Trigger erstellen, löschen und ändern,
Dateien indizieren,
Daten schützen,
Datenbank aktualisieren (Insert, Update, Delete)
Daten selektieren (Select) und ggf. sortieren,
Stored Procedures ausführen,
Transaktionen definieren und ausführen.
DDL = Data Definition Language
DML = Data Manipulation Language
DCL = Data Control Language
In diesem Semester behandelt
SQL dient also nicht
nur der Datenpräsentation, sondern ist
eine allumfassende
DatenbankProgrammiersprache
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 22
SQL - Mengenorientierung (1)
Datenbank
als Menge
Bei Bedarf grundsätzlich strukturiert nach der Zugehörigkeit zu einem Schema
und/oder Eigner (Schema- bzw. Owner-Name)
erst ab SQL2
Für jedes Schema (Owner) strukturiert durch benannte Teilmengen Table
(Table-Namen), vertikal strukturiert innerhalb der Tables durch benannte
Column (Spaltennamen).
Präsentiert ferner durch berechnete externe Sichten (Views) mit Spaltennamen.
Informationsdefinition innerhalb einer Table bzw. View als Row (Zeile) durch
Bedingungen. Dabei werden leere Werte (null) logisch von true und false
unterschieden.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 23
SQL - Mengenorientierung (2)
Datenbank
als Menge
Die vollständige Bezeichnung eines gespeicherten Datenbankwertes besteht
also aus
Datenbankname.Schemaname.Tabellenname.Spaltenname bzw.
Datenbankname.Schemaname.Viewname.Spaltenname.
Jedoch können
die Präfixe bei Eindeutigkeit weggelassen,
die Spalten als Gesamtheit mit dem Platzhalter * benannt
werden.
Beachte: Eine SQL-Operation bezieht sich immer auf die Gesamtheit der
benannten Teilmengen.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 24
SQL – grundsätzlicher Syntax
SQL ist eine formatfreie Sprache
•
•
•
Groß- und Kleinschreibung beliebig;
1 bis n Leerzeichen als Trennzeichen;
Zeilentrennung beliebig, aber nicht
innerhalb von Schlüsselworten.
SQL-Anweisungen müssen
separiert werden
•
•
Vor dem zweiten und jedem weiteren
SQL-Statement einer SQL-Folge
steht ein Separator;
Typische Separatoren sind ; oder GO
•
•
•
Schlüsselwörter
Eigennamen (für Tabellen, Spalten, ...)
Konstanten
SQL benutzt Sprachelemente
SQL-Kommentare werden in der Regel mit zwei Minuszeichen
gekennzeichnet und gelten bis zum Zeilenende.
-- Beispiel einer gültigen SQL-Anweisungsfolge
Insert into Noten values ('0502347', 'GRDL-DBA', 2.3) ;
Select * from noten
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 25
SQL – Aufgabenschritte - Befehlsfolge
Aufgabe (Auswahl)
SQL-Statements
Datenbank anlegen
Tabelle anlegen
…
ändern
…
löschen
Create Database datenbankname
Create Table tabellenname
Alter Table tabellenname
Drop Table tabellenname
Daten in Tabelle einfügen
…
ändern
…
löschen
Insert into tabellenname
Update tabellenname set …
Delete from tabellenname
Daten in Tabelle suchen
Select … from tabellenname where …
Externe Sicht
…
Create View viewname
Drop view viewname
Recht vergeben
Recht entziehen
anlegen
löschen
Grant recht on … to nutzer | rolle
Revoke recht on … from nutzer | rolle
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 26
SQL – Beispielrelationen
Für die nachfolgenden Beispiele wird eine Datenbank mit folgenden Relationen
benutzt. Sie können diese Datenbank lesend nutzen. Sie liegt auf den Servern
SqlServer\Lehre2,1123 und heißt [Vorlesung DMDB]. Die Zugangsdaten sowie
einen Ausdruck der DB-Diagramme erhalten Sie in der Vorlesung.
Diagramm Hochschule:
• LV(LNR, Fach, DozNr, Semester, Jahr, FG) Lehrveranstaltungen
• Studierende(Mnr,Fname,Vname,Geschl,SG,Immatrikulationsdatum)
• Dozenten(DozNr, DozTitel, DoznName, Lehrgebiet)
• Fachgebiet(FG, FGBez)
• Noten(Mnr, Fach, Note, LNR)
Diagramm Adressen:
• Adressen(regnr, name, plz, ort, str, telefon, mail)
• Kunden(regnr, KTyp, VDatum, Boni, Erstkauf, Kommentar)
• Liefer(regnr, Typ, Spez)
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 27
SQL – Beispiel der Definition einer Tabelle (Relation)
Beachten Sie!
Für jeden der nachfolgenden SQL-Statements (Befehle) müssen folgende
Bedingungen erfüllt sein:
Der Nutzer muss eine Zugriffsberechtigung für das DBMS haben.
Der Nutzer muss eine entsprechende Zugriffsberechtigung auf die
Datenbank haben.
Im SQL-Editor muss die entsprechende Datenbank aktiviert sein
(z. B. use [Vorlesung DMDB]).
CREATE TABLE dbo. Studierende
( Mnr char (4) NOT NULL,
Fname varchar (50) NOT NULL,
Vname varchar (50) NULL,
Geschl char (1) NULL DEFAULT ('w'),
SG varchar (2) NULL,
Immatrikulationsdatum datetime NULL,
CONSTRAINT PK_Studierende PRIMARY KEY (Mnr ) )
Spalte darf keine
NULL-Werte
enthalten
Spalte besitzt den
Vorgabewert 'w'
PrimärschlüsselDefinition
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 28
SQL – Beispiel der Definition einer referentiellen Integrität
CREATE TABLE Studierende
( Mnr char (4) NOT NULL,
Fname varchar (50) NOT NULL
Vname varchar (50) NULL,
Geschl char (1) NULL DEFAULT ('w'),
SG varchar (2) NULL,
Immatrikulationsdatum datetime NULL,
CONSTRAINT PK_Studierende PRIMARY KEY (Mnr ) )
CREATE TABLE Noten
( Mnr char (4) NOT NULL,
Fach char (5) NOT NULL
Note numeric (2,1) NOT NULL,
CONSTRAINT PK_Noten PRIMARY KEY (Mnr, Fach ) )
ALTER TABLE Noten
ADD CONSTRAINT FK_NoSTu
FOREIGN KEY (Mnr) REFERENCES Studierende(Mnr)
beide Tabellen
sollen bereits in der
Datenbank
existieren
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Beispiel der Definition eines CHECK-Constraints
CREATE TABLE Studierende
( Mnr char (4) NOT NULL,
Fname char (50) NOT NULL
Vname varchar (50) NULL,
Geschl char (1) NULL DEFAULT ('w'),
SG varchar (2) NULL,
Immatrikulationsdatum datetime NULL,
CONSTRAINT PK_Studierende PRIMARY KEY (Mnr ) )
Die Tabelle soll
bereits in der
Datenbank
existieren
ALTER TABLE Studierende
ADD CONSTRAINT PrufGeschl
CHECK (Geschl IN ('w','m'))
Es wird bei Eingabe (Insert) oder Änderung (Update) geprüft, dass nur
die Werte 'w' oder 'm' in der Spalte Geschl stehen dürfen.
Folie 29
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Beispiele für das Löschen von Datenbankobjekten
Generell werden Datenbankobjekte wie z. B. die gesamte Datenbank, eine
Tabelle, eine View usw. mit der Operation DROP gelöscht.
Das Löschen der Tabelle Studierende erfolgt dem entsprechend mit:
Drop Table Studierende
Teile von Objekten, wie z. B. eine Spalte einer Tabelle werden hingegen mit
der ALTER-Anweisung (Ändere …) und dem Unterparameter DROP
gelöscht.
Das Löschen der Spalte Geschl in der Tabelle Studierende erfolgt also mit:
ALTER TABLE Studierende DROP Geschl
Hinweis: Beim Löschen eines Datenbankobjektes werden auch sämtliche
Daten gelöscht.
Verwechseln Sie aber niemals das Löschen eines
Datenbankobjektes (DROP) mit dem Löschen nur von Daten
(DELETE).
Folie 30
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 31
SQL – Beispiel der Manipulation von Daten in eine Tabelle
INSERT – das Einfügen von Daten
z. B. INSERT INTO Fachgebiet
-- einfügen in Tabelle
VALUES ('PM', 'Programmmanagement') -- die Werte
oder SELECT …. (eine Select-Anweisung als Datenquelle)
UPDATE – das Ändern von Daten
z. B. UPDATE Fachgebiet
SET FGBez = 'Projektmanagement'
WHERE FG = 'PM'
-- ändern in Tabelle
-- der geänderte Wert
-- die zu ändernde(n) Zeile(n)
DELETE – das Löschen von Daten
z. B. DELETE FROM Fachgebiet
WHERE FG = 'PM'
-- löschen aus Tabelle
-- die zu löschende(n) Zeile(n)
Bitte beachten Sie unbedingt, dass dies nur einfachste Beispiele aus der
Befehlsgruppe sind. Der volle Befehlsumfang ist
wesentlich leistungsstärker.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Select - Das Basis-Statement für die Datenpräsentation
SELECT ausgabespaltenliste FROM tabellen [ WHERE bedingung ]
Liste der Spalten in der Ergebnistabelle
Liste der in die Suche einbezogenen Tabellen
wahlweise Angabe einer Vergleichsbedingung
Beispiele:
• Gib alle Spalten der Tabelle STUDIERENDE aus
Select * from Studierende
• Gibt den Familien- und Vornamen der Studentinnen aus
Select Fname, Vname from Studierende where Geschl='w'
• Gib alle Studierende mit ihren Noten (stehen in Tabelle NOTEN) aus
Select Fname, Vname, Fach, Note
from Studierende, Noten
where Studierende.Mnr = Noten.Mnr
Folie 32
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Grundstruktur der Select-Anweisung
(1) Eine bis n (reale oder virtuelle) Tabellen bilden die Datenquelle.
(2) Mit der Auswahl von Spalten (Projektion) können die Attribute
ausgewählt werden, die in das Datenziel übernommen werden.
(3) Mit 0 bis n Auswahlbedingungen (Selection) können die Zeilen
ausgewählt werden, die aus den Tabellen selektiert werden.
(4) Bei Bedarf können mehrere Zeilen zu einer Gruppe zusammengefasst werden (Aggregation). Mit einer Gruppenauswahlbedingung
können die Gruppen ausgewählt werden, deren Daten in das
Datenziel übernommen werden.
(5) Das Datenziel ist immer genau eine Tabelle.
Nach der Art und Weise der Datenauswahl und gegebenenfalls
Gruppierung
Tabelle 1 unterscheidet man
• einfache,
Auswahl
Ergebnis
Tabelle
2
• verschachtelte
Das wird nun im Einzelnen erklärt!
Gruppierung
• gruppierte
Tabelle n
SQL-Anweisungen.
Folie 33
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – einfache Select-Anweisung
Daten aus einer oder mehreren Tabellen werden aus der Datenquelle
ausgewählt.
Das Resultat wird in die Ergebnistabelle (Datenziel) geschrieben.
Logischer Ablauf:
(1) Eine Zeile wird aus der Datenquelle gelesen.
(2) Die Auswahlbedingung wird auf die Zeile angewandt.
(3) Ist die Auswahlbedingung erfüllt (true), wird die Zeile in das
Datenziel übernommen.
Beispiele:
Auflistung aller Noten ohne Bedingung
Select Mnr, Lnr, Note from Noten
Auflistung der Noten nur für die Lehrveranstaltungen (Lnr) 10 und 11
Select Mnr, Lnr, Note from Noten where Lnr=10 or Lnr=11
Folie 34
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 35
Ein weiteres Beispiel für eine einfache Select-Anweisung
Aus der nachfolgend beschriebenen Tabelle STUDIERENDE sollen
ausgewählte Spalten (Matrikelnummer, Vorname, Familienname, Geschlecht,
Studiengang) in die Ergebnistabelle geschrieben werden, aber nur unter der
Bedingung, dass die Zeile eine Studentin betrifft.
Beispiel: STUDIERENDE(Mnr, Fname, Vname, Geschl, SG)
Select Mnr, Vname, Fname, SG as Studiengang
from Studierende
where Geschl = 'w'
Das Resultat dieser Select-Anweisung liefert die Daten aller
Studentinnen unter der Voraussetzung, dass die Codierung des
Geschlechts in der Spalte Geschl durch den Wert "w" erfolgt.
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 36
SQL – Select kann auch rechnen und Funktionen nutzen
Neben dem Selektieren von Informationen kann der Informationswert durch
Berechnungen (4-Grundrechenarten) und Anwendung von Funktionen
erhöht werden. Zum Beispiel ist das Rechnen mit Datumswerten eine Stärke
von SQL.
Beispiel: STUDIERENDE(Mnr, Fname, Vname, Geschl, SG, Immatrikulationsjahr)
Select Mnr, Vname, Fname, SG
from Studierende
where Immatrikulationsjahr = Year(Getdate())
Das Resultat dieser Select-Anweisung liefert die Daten aller
Studierenden, die im aktuellen Kalenderjahr immatrikuliert wurden.
Beachten Sie hier unbedingt die Modifikation Immatrikulationsjahr
gegenüber Immatrikulationsdatum in der Tabelle STUDIERENDE!
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Select über mehrere Tabellen (Joining)
Eine SQL-Anweisung über mehrere Tabellen (Joining) wird logisch durch
Bildung des kartesischen Produktes und Streichung aller Zeilen der
Ergebnistabelle, für die die Where-Klausel den Wert false liefert, realisiert.
Beispiel: STUDIERENDE(Mnr, Fname, Vorname, Geschl, SG)
NOTEN(Mnr, Fach, Note)
Select Studierende.Mnr, Fname, Fach, Note
from Studierende, Noten where
Studierende.Mnr=Noten.Mnr
Die Realisierung erfolgt logisch durch die Bildung von n * m Zeilen, die
jede der n Zeilen der Tabelle Studierende mit den m Zeilen der Tabelle
Noten über die ausgewählten Spalten verknüpft. Danach werden alle
Zeilen eliminiert, für die die Matrikelnummer nicht gleich ist.
Folie 37
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 38
SQL – Select aus logischer Sicht (Beispiel)
Select * from Studierende, Noten where Studierende.Mnr = Noten.Mnr
Studierende
Noten
Mnr
Fname
Vname
Geschl
SG
Mnr
Fach
Note
0100
Zobel
Zacharias
m
WI
0100
DB
3
0200
Adler
Anna
w
WI
0200
DB
1,7
0200
SE
2
Resultat der Select-Anweisung
Mnr
Fname
Vname
Geschl
SG
Mnr
Fach
Note
0100
Zobel
Zacharias
m
WI
0100
DB
3
100=100
true
0100
Zobel
Zacharias
m
WI
0200
DB
1,7
100=200
false
0100
Zobel
Zacharias
m
WI
0200
SE
2
100=200
false
0200
Adler
Anna
w
WI
0100
DB
3
0200
Adler
Anna
w
WI
0200
DB
1,7
200=100
200=200
false
true
0200
Adler
Anna
w
WI
0200
SE
2
200=200
true
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Joining über komplexe Modelle (1)
Mehrfaches Joining erhöht schnell die Komplexität, ist aber oft erforderlich !
Beispiel: Ausweis aller Noten mit Lehrveranstaltung und Dozent (SQL-89)
Select Noten.Mnr, Vname, Fname, LV.Fach, Dozname , Note
from Studierende, LV, Dozenten, Noten
where Studierende.Mnr = Noten.Mnr AND
Noten.LNR = LV.LNR AND
LV.DozNr = Dozenten.DozNr
Beachte: Im Regelfall müssen alle nach FROM aufgelisteten Tabellen im
Joining angesprochen werden.
Alle referentiellen Abhängigkeiten sind Kandidaten für ein
Joining, das Joining ist aber umfassender !!!
Folie 39
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 40
SQL – Joining über komplexe Modelle (2)
Mehrfaches Joining erhöht schnell die Komplexität, ist aber oft erforderlich !
Beispiel: Ausweis aller Noten mit Lehrveranstaltung und Dozent (SQL-92)
Select Noten.Mnr, Vname, Fname, LV.Fach, Dozname, Note
from Studierende INNER JOIN Noten
ON Studierende.Mnr = Noten.Mnr
INNER JOIN LV
ON LV.LNR = Noten.LNR
INNER JOIN Dozenten
ON LV.DozNr = Dozenten.Doznr
Hier wird das Joining exakt auf die referentiellen Beziehungen zwischen
den Tabellen abgebildet.
Aber: Welcher Dozent ist für sein Lehrgebiet eingesetzt ?
Select LV.Doznr, DozTitel, DozName, LV.FG
from Dozenten INNER JOIN LV ON (Dozenten.Doznr = LV.Doznr)
AND (Dozenten.Lehrgebiet = LV.FG)
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – verschachtelte Select-Anweisung (Subquery)
Daten aus einer oder mehreren Tabellen werden aus der Datenquelle
ausgewählt.
Die Datenauswahl kann in Form einer Sub-Select-Anweisung erfolgen und
zwar, in der Liste der Spalten für die Ergebnistabelle und/oder in der Auswahlbedingung und/oder als Datenquelle.
Das Resultat wird in die Ergebnistabelle (Datenziel) geschrieben.
Logischer Ablauf:
(1) Eine Zeile wird aus der Datenquelle gelesen, dabei wird die
Sub-Select-Anweisung für jede Zeile neu berechnet.
(2) Die Auswahlbedingung wird auf die Zeile angewandt.
(3) Ist die Auswahlbedingung erfüllt (true), wird die Zeile in das
Datenziel übernommen.
Beispiel: Gesucht sind alle Studierende, die eine Note 5 haben
Select * from Studierende where
5 = some (Select Note from Noten where Studierende.mnr =Noten.mnr)
(some oder auch any bedeutet "irgendein“)
Folie 41
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Subquery aus logischer Sicht
Eine Unter- (auch Sub-) Select-Anweisung wird logisch als Joining jeder
einzelnen Ergebniszeile der (Haupt-) Select-Anweisung mit den in der SubSelect-Anweisung enthaltenen Tabellen realisiert.
Beispiel: -- Gesucht werden alle Studierenden ohne Noten
STUDIERENDE(Mnr, Fname, Vname, Geschl, SG)
NOTEN(Mnr, Fach, Note)
Select Mnr, Fname from Studierende where
not exists (Select * from Noten where
Studierende.Mnr = Noten.Mnr)
Die Realisierung erfolgt logisch durch die Existenzprüfung (exists), ob das
in der Sub-Select-Anweisung beschriebene Joining mindestens eine
Ergebniszeile hat. In das Joining einbezogen wird jedoch immer nur die
(eine) aktuelle Zeile der (Haupt-) Select-Anweisung.
Folie 42
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 43
SQL – Subquery aus logischer Sicht (Beispiel - 1)
Select Mnr, Fname from Studierende where not exists
(Select * from Noten where Studierende.Mnr = Noten.Mnr)
Studierende
Noten
Mnr
Fname
Vname
Geschl
SG
Mnr
Fach
Note
0100
Zobel
Zacharias
m
WI
0100
DB
3
0300
Bär
Berta
w
WI
0200
DB
1,7
0200
SE
2
Zwischen-Resultat der Select-Anweisung
Mnr
Fname
Vname
Geschl
SG
Mnr
Fach
Note
0100
Zobel
Zacharias
m
WI
0100
DB
3
0100
Zobel
Zacharias
m
WI
0200
DB
1,7
0100
Zobel
Zacharias
m
WI
0200
SE
2
0300
Bär
Berta
w
WI
0100
DB
3
0300
Bär
Berta
w
WI
0200
DB
1,7
0300
Bär
Berta
w
WI
0200
SE
2
1. Zeile
exists = true
2. Zeile
exists =false
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 44
SQL – Subquery aus logischer Sicht (Beispiel - 2)
Select Mnr, Fname from Studierende where not exists
(Select * from Noten where Studierende.Mnr = Noten.Mnr)
Zwischen-Resultat der Select-Anweisung
Mnr
Fname
Vname
Geschl
SG
Mnr
Fach
Note
0100
Zobel
Zacharias
m
WI
0100
DB
3
0100
Zobel
Zacharias
m
WI
0200
DB
1,7
0100
Zobel
Zacharias
m
WI
0200
SE
2
0300
Bär
Berta
w
WI
0100
DB
3
0300
Bär
Berta
w
WI
0200
DB
1,7
0300
Bär
Berta
w
WI
0200
SE
2
Resultat der Select-Anweisung
Mnr
Fname
Vname
Geschl
SG
0300
Bär
Berta
w
WI
1. Zeile
exists = true
2. Zeile
exists =false
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 45
SQL – Subquery (Beispiel - 3)
Sie Sub-Select-Anweisung ist aber noch universeller und kann z. B. auch
in der Ausgabespaltenliste oder in der Tabellenliste nach FROM
eingesetzt werden.
Beispiel: STUDIERENDE(Mnr, Fname, Vname, Geschl, SG)
NOTEN(Mnr, Fach, Note)
Select Mnr, Fname,
(Select avg(Note) from Noten
where Noten.Mnr = Studierende.Mnr) as Durchschnitt
from Studierende
Allerdings ist das Beispiel erst verständlich, wenn wir die Aggregatfunktion
kennen ;-)
Deshalb schauen wir uns nun diese an
nächste Folie
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – gruppierte Select-Anweisung
Daten aus einer oder mehreren Tabellen werden aus der Datenquelle
ausgewählt und zu einer Gruppe zusammengefasst.
Das Resultat wird in die Ergebnistabelle (Datenziel) geschrieben.
Logischer Ablauf:
(1) Eine Zeile wird aus der Datenquelle gelesen und einer Gruppe
zugeordnet.
(2) Die Auswahlbedingung wird auf die Zeile angewandt.
(3) Ist die Auswahlbedingung erfüllt (true), wird die Zeile in die Gruppe
übernommen.
(4) Sind alle Zeilen einer Gruppe bearbeitet, wird die Gruppenauswahlbedingung auf das Gruppenergebnis angewandt.
(5) Ist die Gruppenauswahlbedingung erfüllt (true), wird das Gruppenergebnis
in das Datenziel übernommen.
Beispiel: Berechnung der Anzahl der Studierenden je Studiengang
Select SG as Studiengang, Count(*) as Anzahl from Studierende
group by SG
Folie 46
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Select mit Aggregation (1)
(1) Die Aggregation bildet einen Wert über eine Gruppe von Zeilen.
(2) Aggregate können sein,
- die Summe über eine numerische Spalte (SUM),
- der Durchschnitt über eine numerische Spalte (AVG),
- die Anzahl von Zeilen über die gesamte Gruppe (COUNT (*)),
- das Minimum über eine Spalte (MIN),
- das Maximum über eine Spalte (MAX).
(3) Eine Gruppe von Zeilen wird gebildet durch
- alle Zeilen einer Tabelle,
- eine bestimmte Menge von Zeilen, die ein gleiches Gruppenmerkmal
besitzt.
(4) Ein Gruppenmerkmal wird gebildet, durch den Inhalt einer bis n Spalten.
Beispiel: Es soll der Durchschnitt aller Noten gebildet werden
Select avg(Note) as Notendurchschnitt from Noten
Folie 47
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Select mit Aggregation (2)
Beispiel: Es soll der Durchschnitt aller Noten, gruppiert nach
Studiengängen gebildet werden.
Select SG as Studiengang, avg(Note) as Notendurchschnitt from
Noten inner join Studierende on Noten.Mnr = Studierende.Mnr
group by SG
Group by SG bezeichnet den Inhalt der Spalte SG (Studiengang) als
Gruppierungsmerkmal.
Avg(Noten) ist die Aggregatfunktion zur Berechnung des
Notendurchschnitts.
as Notendurchschnitt benennt die durch eine Funktion berechnete
Spalte in der Ergebnistabelle.
Folie 48
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 49
SQL – Select wird also verwendet …
• Zur Auflistung von Datenbankinhalten mit und ohne Such-Bedingung.
• Zur Präsentation der Daten in einer bestimmten Sortierfolge.
• Als Sub-Select-Anweisung zur Verknüpfung einer Tabellenzeile mit einer
Auflistung von Datenbankinhalten (Rekursion möglich).
• Zur Formulierung des Joinings (direkt in SQL-92 bzw. indirekt in SQL-89).
• Zur Berechnung von Aggregaten über eine Gruppe von Zeilen.
• Zur Formulierung von Views.
• Und ferner als Anweisungsteil des Insert-, Delete- und Update-Statements,
• sowie in modifizierter Form zur Bereicherung der Programmiermöglichkeiten in Stored Procedures, Trigger und Funktionen.
Das Select-Statement ist damit das grundlegende SQL-Statement
zur Realisierung der Selection (Auswahl von Daten aus der
Datengesamtheit einer Datenbank).
Dazu noch einige Erweiterungen auf den Folgefolien
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
SQL – Select mit Rekursion
Beispiel: Es sollen alle Studierenden ermittelt werden, deren Notendurchschnitt besser als der generelle Notendurchschnitt ist.
Select Studierende.fname, avg(Note) as Durchschnittsnote
from Noten as NoteST inner join Studierende
on NoteST.Mnr = Studierende.Mnr
group by fname
having avg(Note) < (Select avg(Note) from Noten)
Group by fname bezeichnet den Inhalt der Spalte Fname
(Familienname) als Gruppierungsmerkmal.
Noten as NoteST benennt die Tabelle Noten virtuell um, damit sie
von dem Zugriff auf die gleiche Tabelle in der Sub-Select-Anweisung
unterschieden werden kann.
having avg(Note) ist die Bedingungsklausel für die Einbeziehung von
Aggregaten in Vergleiche (WHERE bezieht sich immer nur auf eine
Zeile einer Tabelle)
Folie 50
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Spezielle Ausprägungen des Select-Statements (1)
UNION – die logische Vereinigung mehrerer Ergebnistabellen
Beispiel:
Select Studierende.Mnr, Fname, Vname,
cast(avg(Note) as varchar) as Durchschnittsnote
from Studierende inner join Noten on Studierende.Mnr=Noten.Mnr
group by Studierende.Mnr, Fname, Vname
UNION
select Studierende.Mnr,Fname,Vname,'keine Note' from Studierende
where Mnr not in (Select distinct Mnr from Noten)
Wozu braucht man das?
Mehrere ähnliche Ergebnistabellen, die sich jedoch in der Herkunft
einzelner Spalten unterscheiden, können in eine gemeinsame
Ergebnistabelle gespeichert und sortiert werden.
Folie 51
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Spezielle Ausprägungen des Select-Statements (2)
INTERSECT – der logische Durchschnitt mehrerer Tabellen
Beispiel: Wer ist sowohl Kunde als Lieferant
Select regnr from Kunden
INTERSECT
Select regnr from Liefer
order by regnr
Wozu braucht man das?
Man kann aus ähnlichen Tabellen (insbesondere bei der Spezialisierung von Tabellen <Vererbung> ) ermitteln, welche Objekte in
beiden Kategorien anzutreffen sind.
Folie 52
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Spezielle Ausprägungen des Select-Statements (3)
EXCEPT – die logische Mengendifferenz mehrerer Tabellen
Beispiel: Wer ist Kunde aber nicht Lieferant
Select regnr from Kunden
EXCEPT
Select regnr from Liefer
order by regnr
Wozu braucht man das?
auf alle Fälle nur sehr selten ☺, aber man kann damit ermitteln, wer
nur Mitglied einer bestimmten Teilmenge ist.
Eine logisch gleichwertige Lösung wäre
Select regnr from Kunden
where regnr not in (Select regnr from liefer)
order by regnr
Folie 53
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Die VIEW – eine materialisierte Select-Anweisung (1)
Externe Sichten (Views) verkörpern als Baustein die "Intelligenz" der
Datenpräsentation.
Beispiel: Es soll der Durchschnitt aller Noten, gruppiert nach
Studiengängen gebildet werden, formuliert als View !
Create View DNoten (Studiengang, Notendurchschnitt)
As Select SG , round(avg(Note),1) from Noten
inner join Studierende on Noten.Mnr = Studierende.Mnr
group by SG
Diese als virtuelle Tabelle (Berechnungsvorschrift) gespeicherte View
wird bei jedem Aufruf neu berechnet. Sie kann als Projektbaustein
benutzt werden.
Folie 54
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 55
Die VIEW – eine materialisierte Select-Anweisung (2)
Externe Sichten (Views) verkörpern als Baustein die "Intelligenz" der
Datenpräsentation.
Beispiel: Es sollen alle Studierenden mit ihrem Notendurchschnitt ausgewiesen werden, die besser oder gleich dem Durchschnitt ihres
Studienganges sind.
Die als virtuelle Tabelle (Berechnungsvorschrift) gespeicherte View DNoten
wird bei jedem Aufruf neu berechnet. Sie kann als Projektbaustein benutzt
werden.
Select Noten.Mnr, Fname, Vname, avg(Note) as DurchschnNote
from Studierende, Noten, DNoten
Where Studierende.Mnr = Noten.Mnr AND
Studierende.SG = DNoten.Studiengang
group by Noten.Mnr, Fname, Vname, Notendurchschnitt
having avg(Note) <= Notendurchschnitt
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Dynamisches SQL – eine etwas komplizierte Praxisanforderung
Häufig werden in der Praxis SQL-Statements benutzt, die sich für verschiedenartigsten Anwendungsfälle nur durch die Änderung einer Konstanten unterscheiden.
Beispiel: Es sollen alle Lehrveranstaltungen einer Dozentin oder eines
Dozenten ermittelt werden.
Die dazu erforderliche SQL-Anweisung beibt immer gleich, es ändert sich
nur die jeweils gefragte Dozentennummer.
Um dieses Problem zu lösen, gibt es mehrere Möglichkeiten.
SQL bietet hierzu z. B. die Prozedur sp_executesql.
Mehr dazu in den Übungen!
Folie 56
HTW Berlin Prof. Dr. Zschockelt
Datenmodellierung/Datenbanken
(05)Relationale Algebra-SQL.ppt
Folie 57
Zum Abschluss: SQL in der Praxis …
… wird in verschiedenen Gebieten der (Wirtschafts-)
Informatik gebraucht. Die wichtigsten sind:
• Datenbankentwicklung (Tabellen, Sichten, Rechte usw. erstellen
und warten.
• Applikationsentwicklung (vor allem Daten manipulieren und präsentieren).
• Dynamische Web-Seiten (Zugriff mittels Skriptsprachen ASP.NET, PHP …).
• Betriebliches Informationsmanagement im weitesten Sinne.
• Business Intelligence (Entscheidungsunterstützung) usw.
Die Anwendung erfolgt häufig in Mischform mit DatenbankVerwaltungstools. Beispielsweise werden das Anlegen einer neuen
Datenbank, das Erteilen und Entziehen von Rechten und ähnliches häufig
direkt über Verwaltungstools realisiert und erst von diesen in SQLAnweisungen übersetzt.
Herunterladen