Das relationale Modell Beispiel-Datenbank

Werbung
2. Einführung in das Relationale Modell und SQL
2-1
Inhalt
2. Einführung in das Relationale Modell und SQL
2-2
Das relationale Modell
'
$
Das relationale Modell strukturiert die Daten.
1. Relationales Modell, Beispiel-Datenbank
&
%
Ein relationales DB-Schema definiert:
2. Schlüssel
• Den Namen der Tabellen in der Datenbank.
3. Einfache SQL-Anfragen
• Die Spalten jeder Tabelle - jeweils Spalten-Name
und Datentyp.
4. Tupelvariable, Terme, Bedingungen
• Die Integritätsbedingungen.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-3
2. Einführung in das Relationale Modell und SQL
2-4
Beispiel-Datenbank (1)
SID
101
102
103
104
STUDENTEN
VORNAME NACHNAME
Lisa
Weiss
Michael Grau
Daniel Sommer
Iris
Winter
EMAIL
···
NULL
···
···
AUFGABEN
ATYP ANR THEMA MAXPT
H
1 ER
10
H
2 SQL
10
Z
1 SQL
14
S. Brass, A. Herrmann: Datenbanken und WWW
SID
101
101
101
102
102
102
103
103
Beispiel-Datenbank (2)
BEWERTUNGEN
ATYP ANR PUNKTE
H
1
10
H
2
8
Z
1
12
H
1
9
H
2
9
Z
1
10
H
1
5
Z
1
7
• STUDENTEN: enthält eine Zeile für jeden Studenten.
SID: “Studenten-ID” (eindeutige Nummer).
VORNAME, NACHNAME: Vor- und Nachname.
EMAIL: Email-Adresse (kann NULL sein).
• AUFGABEN: enthält eine Zeile für jede Aufgabe.
ATYP: Typ/Kategorie der Aufgabe.
Z.B. ’H’: Hausaufgabe, ’Z’: Zwischenklausur, ’E’: Endklausur.
ANR: Aufgabennummer (innerhalb des Typs).
THEMA: Thema der Aufgabe.
MAXPT: Maximale/volle Punktzahl der Aufgabe.
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-5
2. Einführung in das Relationale Modell und SQL
Beispiel-Datenbank (3)
2-6
Zusammenfassung
• BEWERTUNGEN: enthält eine Zeile für jede abgegebene
Lösung zu einer Aufgabe.
Tabellen-Name
P
PP
PP
SID: Student, der die Lösung abgegeben hat.
PP
PP
q
Spalte
PP
PP
PP
Dies referenziert eine Zeile in STUDENTEN.
A1
a1,1
P
q
ATYP, ANR: Identifikation der Aufgabe.
Zeile
-
Zusammen identifiziert dies eine Zeile in AUFGABEN.
PUNKTE: Punkte, die der Student für die Lösung
bekommen hat.
Zeile
Falls es keinen Eintrag für einen Studenten und
eine Aufgabe gibt: Aufgabe nicht abgegeben.
-
R
···
..
···
..
am,1
···
Spalte
)
An
Tabellen
Eintrag
a1,n)
(Spalten..
Wert)
am,n
Statt Tabelle kann man auch Relation sagen, statt Zeile auch Tupel, und
statt Spalte auch Attribut.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-7
2. Einführung in das Relationale Modell und SQL
2-8
Schlüssel (1)
Inhalt
• Die Spalte SID ist als “Schlüssel” der Tabelle STUDENTEN
deklariert (ein Typ von Integritätsbedingungen).
1. Relationales Modell, Beispiel-Datenbank
'
$
2. Schlüssel
&
• Das bedeutet, daß ein Wert für SID immer eine
einzige Zeile (Tupel) der Tabelle eindeutig identifiziert.
%
3. Einfache SQL-Anfragen
4. Tupelvariable, Terme, Bedingungen
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
SID
101
102
103
104
STUDENTEN
VORNAME NACHNAME
Lisa
Weiss
Michael Grau
Daniel Sommer
Iris
Winter
S. Brass, A. Herrmann: Datenbanken und WWW
EMAIL
···
NULL
···
···
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-9
2. Einführung in das Relationale Modell und SQL
2-10
Fremdschlüssel
• SID in der Tabelle BEWERTUNGEN identifiziert eindeutig
Schlüssel (2)
eine Zeile in der Tabelle STUDENTEN.
• Eine Tabelle kann mehrere Schlüssel haben aber
nur einen Primärschlüssel:
• Der Primärschlüssel kann auch aus der Kombination mehrerer Spalten bestehen.
• SID stellt also einen Verweis auf die andere Tabelle
dar - ein Fremdschlüssel. Man kann die Daten der
beiden Tabellen darüber verknüpfen.
• Das DBMS stellt dann sicher, daß nur Werte in
diese Spalte eingetragen werden können, die auch
tatsächlich in STUDENTEN (in der Spalte SID) auftreten.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-11
2. Einführung in das Relationale Modell und SQL
2-12
Schema-Notation (1)
Schema-Notation (2)
Arten von Notationen für relationale Schemata:
1. SQL-Anweisungen (CREATE TABLE) enthalten alle Details.
2. Tabellen - Schlüsselspalten unterstreichen - Fremdschlüssel durch Pfeile kennzeichnen:
3. Kurznotation
• Tabellen-Name und dahinter in Klammern die
Spalten, z.B.
STUDENTEN(SID, VORNAME, NACHNAME, EMAIL◦)
• Schlüssel: Durch Unterstreichen markiert.
Man kann so nur einen Schlüssel markieren (“Primärschlüssel”):
Falls mehrere Spalten unterstrichen: Kombination ist Schlüssel.
Spalten mit Nullwerten werden mit ◦ markiert.
• Fremdschlüssel: Pfeil und referenzierte Tabelle:
BEWERTUNGEN(SID → STUDENTEN,
(ATYP, ANR) → AUFGABEN, PUNKTE)
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-13
2. Einführung in das Relationale Modell und SQL
2-14
Inhalt
Web-Schnittstelle (1)
SQL-Anfragen kann man in folgendem Webformular
1. Relationales Modell, Beispiel-Datenbank
ausprobieren:
https://dbs.informatik.uni-halle.de/adminer/adminer.php
2. Schlüssel
'
$
Datenbanksystem: Oracle
Server: studdb
3. Einfache SQL-Anfragen
&
%
4. Tupelvariable, Terme, Bedingungen
von zu Hause Server:
verdi.informatik.uni-halle.de:1521/studdb
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-15
2. Einführung in das Relationale Modell und SQL
2-16
Einfache SQL-Anfragen
Web-Schnittstelle (2)
Einfache Ein-Tabellen-Anfragen:
• Eine einfache SQL-Anfrage hat folgende Form:
• Benutzer und Passwort werden zur Verfügung gestellt.
• Die Übungsdatenbanken müssen durch Ausführen
der auf der Webseite stehenden Skripte erstellt werden.
S. Brass, A. Herrmann: Datenbanken und WWW
SELECT Spalten
FROM
Tabelle
WHERE Bedingung
• Z.B. gibt die folgende Anfrage alle Hausaufgabenergebnisse von Studentin 101 aus:
SELECT ANR, PUNKTE
FROM
BEWERTUNGEN
WHERE ATYP = ’H’ AND SID = 101
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
ANR PUNKTE
1
10
2
8
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-17
2. Einführung in das Relationale Modell und SQL
2-18
Syntax (2)
Syntax (1)
Leerplatz ist zwischen Wortsymbolen erlaubt:
SQL ist eine formatfreie Sprache:
• Es ist nicht nötig, daß “SELECT”, “FROM”, “WHERE”
• Leerzeichen (meist auch Tabulator-Zeichen)
am Anfang neuer Zeilen stehen. Man kann auch
• Zeilenumbrüche
die ganze Anfrage auf eine Zeile schreiben.
• Kommentare (Bemerkungen für menschliche Leser,
• Z.B. kann man komplexe Bedingungen auf mehre-
vom DBMS einfach ignoriert):
re Zeilen verteilen und die Struktur mit Hilfe von
• Von “--” bis Zeilenende
Einrückungen deutlich machen.
• Von “/*” bis “*/”
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-19
2. Einführung in das Relationale Modell und SQL
2-20
Zahlen
Zeichenketten
• Numerische Literale sind Konstanten numerischer
Datentypen (Fixpunkt- und Gleitkommazahlen).
Z.B.: 1, +2., -34.5, -.67E-8
• Zahlen stehen nicht in Hochkommas!
• Bei einer Festkommazahl wird mit einer festen Anzahl Stellen vor und nach dem Komma gerechnet.
• Bei Fließkommazahlen wird insgesamt mit einer festen Anzahl Stellen gerechnet, aber die Position des
Kommas ist variabel, je nachdem, ob die Zahlen
• Ein Zeichenketten-Literal (String-Konstante) ist eine Folge von Zeichen, eingeschlossen in Hochkommas, z.B.
’abc’
’Dies ist ein String.’
• Hochkommas in Zeichenketten müssen verdoppelt
werden, z.B. ’Dirk’’s Buch’.
groß oder klein sind.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-21
2. Einführung in das Relationale Modell und SQL
Andere Konstanten
2-22
Bezeichner (1)
• Zeichenketten mit nationalem Zeichensatz
• Wird u.a. als Tabellen- und Spaltennamen verwen-
• Datum, Zeit, Zeitstempel, Datum-/Zeit-Intervall
Datumswerte werden in Oracle folgt geschrieben:’31-OCT-02’ (US),
’31.10.2002’ (D).
• Bit-Strings, binäre Daten
det.
• Kann auch Zahlen enthalten
• beginnt immer mit einem Buchstaben.
• Large Objects (Dateien als Tabelleneintrag)
• Die Syntax der Konstanten dieser Datentypen ist
allgemein sehr systemabhängig.
• als Sonderzeichen ist nur
zugelassen.
• Z.B. Dozenten_Name, X27, aber nicht _XYZ, 12, 2BE.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-23
2. Einführung in das Relationale Modell und SQL
2-24
Bezeichner (2)
Bezeichner (3)
• Bezeichner können bis 18 Zeichen haben (systemabhängig).
• müssen verschieden von reservierten Wörtern sein.
Beispiel:
SELECT VORNAME, NACHNAME
FROM
STUDENTEN
ist äquivalent zu:
Es gibt viele reservierte Wörter, siehe unten. Einbettungen in Programmiersprachen (PL/SQL, Visual Basic) fügen noch mehr hinzu.
• Nationale Zeichen (z.B. Umlaute) zu verwenden,
ist möglich, sollte aber vermieden werden.
• Die Groß-/Kleinschreibung ist bei Bezeichnern und
Schlüsselwörtern egal (sie sind nicht case-sensitiv).
select
Vorname ,
NachNaMe -- huebsch haesslich
From Studenten
Achtung:
Zeichenketten-Vergleiche sind normalerweise case-sensitive:
select x.name from studenten x where x.name = ’lisa’
wird keine Antwort liefern (obwohl es ’Lisa’ gibt).
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-25
2. Einführung in das Relationale Modell und SQL
2-26
Reservierte Wörter - SQL (1)
Reservierte Wörter
Die Schlüsselworte von SQL, z.B. SELECT dürfen nicht
als Bezeichner verwendet werden. Das könnte zu Mißverständnissen führen.
Beispiel:
“SELECT A FROM FROM R”
Das erste FROM ist das Schlüsselwort, das zweite der
Name einer Tabelle.
Fehler!! Eine Tabelle darf nicht FROM heißen.
1
= Oracle 8.0
ARE2
= SQL-92
AS1,2,3
3 = SQL Server 7 ASC1,2,3
ASSERTION2
— A —
AT2
ABSOLUTE2
AUTHORIZATION2,3
ACCESS1
AUDIT1
ACTION2
AVG2,3
ADD1,2,3
— B —
ALL1,2,3
BACKUP3
ALLOCATE2
BEGIN2,3
ALTER1,2,3
BETWEEN1,2,3
AND1,2,3
BIT2
ANY1,2,3
BIT_LENGTH2
2
BOTH2
BREAK3
BROWSE3
BULK3
BY1,2,3
— C —
CASCADE2,3
CASCADED2
CASE2,3
CATALOG2
CHAR1,2
CHARACTER2
CHAR_LENGTH2
CHARACTER_LENGTH2
CHECK1,2,3
CHECKPOINT3
CLOSE2,3
CLUSTER1
CLUSTERED3
COALESCE2,3
COLLATE2
COLLATION2
COLUMN1,3
COMMENT1
COMMIT2,3
COMMITTED3
COMPRESS1
COMPUTE3
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-27
2. Einführung in das Relationale Modell und SQL
2-28
Reservierte Wörter - SQL (2)
CONFIRM3
CONNECT1,2
CONNECTION2
CONSTRAINT2,3
CONSTRAINTS2
CONTAINS3
CONTAINSTABLE3
CONTINUE2,3
CONTROLROW3
CONVERT2,3
CORRESPONDING2
COUNT2,3
CREATE1,2,3
CROSS2,3
CURRENT1,2,3
DECLARE2,3
DEFAULT1,2,3
CURRENT_DATE2,3
CURRENT_TIME2,3
DEFERRABLE2
CURRENT_TIMESTAMP2,3 DEFERRED2
CURRENT_USER2,3
DELETE1,2,3
CURSOR2,3
DENY3
— D —
DESC1,2
DATABASE3
DESCRIBE2
DATE1,2
DESCRIPTOR2
DAY2
DIAGNOSTICS2
DBCC3
DISCONNECT2
DEALLOCATE2,3
DISK3
DEC2
DISTINCT1,2,3
DECIMAL1,2
DISTRIBUTED3
S. Brass, A. Herrmann: Datenbanken und WWW
DOMAIN2
DOUBLE2,3
DROP1,2,3
DUMMY3
DUMP3
— E —
ELSE1,2,3
END2,3
END-EXEC2
ERRLVL3
ERROREXIT3
ESCAPE2,3
EXCEPT2,3
EXCEPTION2
Universität Halle, 2014
Reservierte Wörter - SQL (3)
EXCLUSIVE1
EXEC2,3
EXECUTE2,3
EXISTS1,2,3
EXIT3
EXTERNAL2
EXTRACT2
— F —
FALSE2
FETCH2,3
FILE1,3
FILLFACTOR3
FIRST2
FLOAT1,2
FLOPPY3
FOR1,2,3
FOREIGN2,3
FOUND2
FREETEXT3
FREETEXTTABLE3
FROM1,2,3
FULL2,3
— G —
GET2
GLOBAL2
GO2
GOTO2,3
GRANT1,2,3
GROUP1,2,3
— H —
HAVING1,2,3
HOLDLOCK3
HOUR2
— I —
IDENTITY2,3
IDENTITY_INSERT3
IDENTITYCOL3
IDENTIFIED1
IF3
IMMEDIATE1,2
IN1,2,3
INCREMENT1
S. Brass, A. Herrmann: Datenbanken und WWW
INDEX1,3
INDICATOR2
INITIAL1
INITIALLY2
INNER2,3
INPUT2
INSENSITIVE2
INSERT1,2,3
INT2
INTEGER1,2
INTERSECT1,2,3
INTERVAL2
INTO1,2,3
IS1,2,3
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-29
2. Einführung in das Relationale Modell und SQL
Reservierte Wörter - SQL (5)
Reservierte Wörter - SQL (4)
ISOLATION2,3
— J —
JOIN2,3
— K —
KEY2,3
KILL3
— L —
LANGUAGE2
LAST2
LEADING2
LEFT2,3
LEVEL1,2,3
LIKE1,2,3
LINENO3
LOAD3
LOCAL2
LOCK1
LONG1
LOWER2
— M —
MATCH2
MAX2,3
MAXEXTENTS1
MIN2,3
MINUS1
MINUTE2
MIRROREXIT3
MODE1
MODIFY1
MODULE2
MONTH2
— N —
NAMES2
NATIONAL2,3
NATURAL2
NCHAR2
NETWORK1
NEXT2
NO2
NOAUDIT1
NOCHECK3
NOCOMPRESS1
2-30
ONCE3
ONLINE1
ONLY2,3
OPEN2,3
OPENDATASOURCE3
OPENQUERY3
OPENROWSET3
OPTION1,2,3
OR1,2,3
ORDER1,2,3
OUTER2,3
OUTPUT2
OVER3
OVERLAPS2
NONCLUSTERED3
NOT1,2,3
NOWAIT1
NULL1,2,3
NULLIF2,3
NUMBER1
NUMERIC2
— O —
OCTET_LENGTH2
OF1,2,3
OFF3
OFFLINE1
OFFSETS3
ON1,2,3
— P —
PARTIAL2
PCTFREE1
PERCENT3
PERM3
PERMANENT3
PIPE3
PLAN3
POSITION2
PRECISION2,3
PREPARE2,3
PRESERVE2
PRIMARY2,3
PRINT3
PRIOR1,2
PRIVILEGES1,2,3
PROC3
PROCEDURE2,3
PROCESSEXIT3
PUBLIC1,2,3
— R —
RAISERROR3
RAW1
READ2,3
READTEXT3
REAL2
RECONFIGURE3
REFERENCES2,3
RELATIVE2
RENAME1
REPEATABLE3
REPLICATION3
RESOURCE1
RESTORE3
RESTRICT2,3
RETURN3
REVOKE1,2,3
RIGHT2,3
ROLLBACK2,3
ROW1
ROWCOUNT3
ROWGUIDCOL3
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-31
2. Einführung in das Relationale Modell und SQL
2-32
Reservierte Wörter - SQL (6)
ROWID1
ROWNUM1
ROWS1,2
RULE3
— S —
SAVE3
SCHEMA2,3
SCROLL2
SECOND2
SECTION2
SELECT1,2,3
SERIALIZABLE3
SESSION1,2
SESSION_USER2,3
SET1,2,3
SETUSER3
SHARE1
SHUTDOWN3
SIZE1,2
SMALLINT1,2
SOME2,3
SQL2
SQLCODE2
SQLERROR2
SQLSTATE2
START1
STATISTICS3
SUBSTRING2
SUCCESSFUL1
SUM2,3
SYNONYM1
SYSDATE1
SYSTEM_USER2,3
— T —
TABLE1,2,3
TAPE3
TEMP3
TEMPORARY2,3
TEXTSIZE3
THEN1,2,3
TIME2
TIMESTAMP2
S. Brass, A. Herrmann: Datenbanken und WWW
TIMEZONE_HOUR2
TIMEZONE_MINUTE2
TO1,2,3
TOP3
TRAILING2
TRAN3
TRANSACTION2,3
TRANSLATE2
TRANSLATION2
TRIGGER1,3
TRIM2
TRUE2
TRUNCATE3
TSEQUAL3
Universität Halle, 2014
Reservierte Wörter - SQL (7)
— U —
UID1
UNCOMMITTED3
UNION1,2,3
UNIQUE1,2,3
UNKNOWN2
UPDATE1,2,3
UPDATETEXT3
UPPER2
USAGE2
USE3
USER1,2,3
USING2
— V —
VALIDATE1
VALUE2
VALUES1,2,3
VARCHAR1,2
VARCHAR21
VARYING2,3
VIEW1,2,3
— W —
WAITFOR3
WHEN2,3
WHENEVER1,2
WHERE1,2,3
WHILE3
WITH1,2,3
WORK2,3
WRITE2
WRITETEXT3
— Y —
YEAR2
— Z —
ZONE2
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-33
2. Einführung in das Relationale Modell und SQL
2-34
Apostrophe und Anführungszeichen (2)
Apostrophe und Anführungszeichen (1)
Zeichenkettenkonstanten stehen in einfachen Anführungszeichen (auf der Tastatur über #).
Beispiel:
select x.name from studenten x where x.name = ’Lisa’
• Außerdem gibt es noch “Delimited Identifier”. Sie
werden verwendet, um ausgegebene Spaltennamen
umzubenennen.
Beispiel:
SELECT VORNAME AS "Vorname", NACHNAME "Name"
FROM
STUDENTEN
“AS” ist optional (außer in MS Access).
dagegen würde
select x.name from studenten x where x.name = "Lisa"
einen Fehler erzeugen
• Ist aber der neue Spaltenname ein legaler Bezeichner, sind die Anführungszeichen unnötig:
SELECT VORNAME AS V_NAME, NACHNAME Name
FROM
STUDENTEN
In Oracle wird alles in Großbuchstaben ausgegeben.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-35
2. Einführung in das Relationale Modell und SQL
2-36
Beispiel-Datenbank
Inhalt
SID
101
102
103
104
1. Relationales Modell, Beispiel-Datenbank
2. Schlüssel
3. Einfache SQL-Anfragen
'
$
4. Tupelvariable, Terme, Bedingungen
&
S. Brass, A. Herrmann: Datenbanken und WWW
%
Universität Halle, 2014
STUDENTEN
VORNAME NACHNAME
Lisa
Weiss
Michael Grau
Daniel Sommer
Iris
Winter
EMAIL
···
NULL
···
···
AUFGABEN
ATYP ANR THEMA MAXPT
H
1 ER
10
H
2 SQL
10
Z
1 SQL
14
S. Brass, A. Herrmann: Datenbanken und WWW
SID
101
101
101
102
102
102
103
103
BEWERTUNGEN
ATYP ANR PUNKTE
H
1
10
H
2
8
Z
1
12
H
1
9
H
2
9
Z
1
10
H
1
5
Z
1
7
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-37
2. Einführung in das Relationale Modell und SQL
2-38
Tupelvariablen (2)
Tupelvariablen (1)
• In der FROM-Klausel deklariert man Variablen, die
über alle Tupel (Zeilen) der Relation laufen:
SELECT A.ANR, A.THEMA
FROM
AUFGABEN A
WHERE A.ATYP = ’H’
• “A” steht nacheinander für jede Zeile der Tabelle.
Weil das Tupel sich ändert, für das A steht, heißt A (Tupel-)Variable.
• Auf die Werte der Spalten in der gerade betrachteten Zeile kann man sich mit A.ATYP, A.ANR, A.THEMA
und A.MAXPT beziehen.
• Z.B. könnte A zuerst für die erste Zeile der Tabelle stehen (die genaue Reihenfolge darf das DBMS
wählen, da Relationen Mengen sind):
AUFGABEN
ATYP ANR THEMA MAXPT
A −→ H
1 ER
10
H
2 SQL
10
Z
1 SQL
14
• Nun kann man für Ausdrücke wie A.ATYP jeweils den
konkreten Wert aus der aktuellen (gerade betrachteten) Zeile einsetzen, im Beispiel also ’H’.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-39
2. Einführung in das Relationale Modell und SQL
2-40
Tupelvariablen (3)
Tupelvariablen (4)
• Anfrage und aktuelle Zeile (nochmal):
SELECT A.ANR, A.THEMA
FROM
AUFGABEN A
WHERE A.ATYP = ’H’
ATYP ANR THEMA MAXPT
A −→ H
1 ER
10
• Die WHERE-Bedingung ist für diese Zeile wahr.
• Daher werden die in der SELECT-Klausel angegebenen Werte ausgegeben:
ANR THEMA
1 ER
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
• Anschließend wird die Tupelvariable A eine Zeile
weiter geschaltet:
AUFGABEN
ATYP ANR THEMA MAXPT
H
1 ER
10
A −→ H
2 SQL
10
Z
1 SQL
14
• Die WHERE-Bedingung A.ATYP = ’H’ ist wieder wahr.
• Also erfolgt wieder die Ausgabe der SELECT-Daten:
ANR THEMA
2 SQL
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-41
2. Einführung in das Relationale Modell und SQL
Tupelvariablen (5)
2-42
Tupelvariablen (6)
• Dann wird die Tupelvariable A noch eine Zeile weiter
• Insgesamt ergibt die Anfrage für die geg. Tabelle
geschaltet:
SELECT A.ANR, A.THEMA
FROM
AUFGABEN A
WHERE A.ATYP = ’H’
AUFGABEN
ATYP ANR THEMA MAXPT
H
1 ER
10
H
2 SQL
10
A −→ Z
1 SQL
14
• Die WHERE-Bedingung A.ATYP = ’H’ ist diesmal nicht
AUFGABEN
ATYP ANR THEMA MAXPT
H
1 ER
10
H
2 SQL
10
Z
1 SQL
14
also das Ergebnis:
ANR THEMA
1 ER
2 SQL
erfüllt (falsch).
• In diesem Fall wird nichts ausgegeben.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-43
2. Einführung in das Relationale Modell und SQL
2-44
Abkürzungen (1)
Abkürzungen (2)
• Man kann die Anfrage kürzer schreiben:
SELECT ANR, THEMA
FROM
AUFGABEN
WHERE ATYP = ’H’
• Dies macht Gebrauch von zwei Abkürzungen, die
unabhängig von einander sind:
1. Statt T.S (Tupelvariable.Spalte) kann man auch
einfach S (nur den Namen der Spalte) schreiben,
wenn es nur eine passende Tupelvariable gibt.
2. Wenn man nicht explizit eine Tupelvariable benennt, heißt sie so wie die Tabelle.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
• Eine Tupelvariable wird immer erstellt: Ist kein Name angegeben, erhält sie den Namen der Relation:
SELECT AUFGABEN.ANR, AUFGABEN.THEMA
FROM
AUFGABEN
WHERE AUFGABEN.ATYP = ’H’
• Wenn man also nur FROM AUFGABEN schreibt, wird
dies behandelt wie:
FROM
AUFGABEN AUFGABEN
(Die Tupelvariable namens “AUFGABEN ” läuft über
alle Zeilen der Tabelle “AUFGABEN ”.)
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-45
2. Einführung in das Relationale Modell und SQL
2-46
FROM-Syntax
Abkürzungen (3)
• Nach FROM werden in einer Liste, durch Komma getrennt, die benötigten Tabellennamen mit entsprechenden Tupelvariablen angegeben.
• Wird ein Tupelvariablen-Name angegeben, z.B.
FROM
AUFGABEN A
so ist es ein Fehler, “AUFGABEN.ANR” zu schreiben.
Die Tupelvariable heißt nun “A”, nicht “AUFGABEN”.
• Wenn man will, kann man auch nur in Tabellen und
Spalten denken, und bei “FROM AUFGABEN A” sagen,
daß “A” ein Alias für die Tabelle “AUFGABEN” ist.
• Werden Tabellen eines anderen Nutzers verwendet,
so muß der Nutzername, durch Punkt getrennt, vor
dem Tabellennamen stehen
Beispiel:
FROM HERRMANN.STUDENTEN S, HERRMANN.BEWERTUNGEN B
• In der FROM-Klausel kann auch eine Unterabfrage
stehen.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-47
2. Einführung in das Relationale Modell und SQL
2-48
Terme (2)
Terme (1)
• Ein Term (oder Ausdruck) ist jeder Teil einer SQLAnfrage, der sich zu einem Datenwert (Element ei-
• Terme können aus kleineren Termen zusammengesetzt werden durch
nes Datentyps, z.B. Zeichenkette, Zahl) auswerten
die vier Grundrechenarten +, -, *, / (für Zahlen),
läßt.
|| (String-Konkatenation)
weitere Datentyp-Funktionen (siehe Kapitel 8),
z.B. UPPER, ROUND.
• Terme sind (u.a.):
Spaltenzugriffe, z.B. S.SID.
Konstanten/Literale, z.B. ’Lisa’.
Zusammengesetzte/geschachtelte Terme,
z.B. (B.PUNKTE/A.MAXPT)*100.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
• Die Argumente (Eingabewerte) eines Operators
(wie “||”) oder einer Funktion wie “UPPER” müssen
den richtigen Datentyp haben (im Beispiel Zeichenketten sein, keine Zahlen).
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-49
2. Einführung in das Relationale Modell und SQL
2-50
Terme (3)
Zusammengesetzte Terme
• Terme verwendet man in Bedingungen, z.B. enthält
• SQL kennt die übliche Vorrangregel “Punktrech-
B.PUNKTE > A.MAXPT * 0.8
nung vor Strichrechnung”, z.B. bedeutet A+B*C:
die Terme “B.PUNKTE” und “A.MAXPT * 0.8”.
• Auch SELECT-Liste kann beliebige Terme enthalten:
A+(B*C),
und nicht
SELECT NACHNAME || ’, ’ || VORNAME
FROM STUDENTEN
(A+B)*C.
...
Weiss, Lisa
Grau, Michael
Sommer, Daniel
Winter, Iris
• Klammern (...) können verwendet werden, um eine bestimmte Struktur zu erzwingen.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-51
2. Einführung in das Relationale Modell und SQL
2-52
Terme: Syntax
Atomare Formeln (1)
Spalten-Zugriff: Tupelvariable.Spaltenname
• Die Tupelvariable muß unter FROM deklariert sein
(eventuell implizit der unter FROM angegebene Tabellenname).
• Die Relation, über der die Tupelvariable läuft, muß
eine Spalte mit dem Namen haben.
• Die Tupelvariable darf weggelassen werden, wenn
nur eine Tupelvariable deklariert ist, die über einer
Relation mit einer solchen Spalte läuft.
• Bedingungen in SQL (u.a. in der WHERE-Klausel)
sind logische Formeln.
• Logische Formeln bestehen aus atomaren Formeln,
die mit “und”, “oder”, “nicht” verknüpft werden
(in SQL: AND, OR, NOT).
• Die wichtigste Art von atomarer Formel ist der Vergleich, z.B. SID = 101 oder PUNKTE > 8.
• Binäre Operatoren: + - * / ||
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-53
2. Einführung in das Relationale Modell und SQL
2-54
Einfache Bedingungen (1)
Atomare Formeln (2)
• Alle Daten der Klausur von “BEWERTUNGEN”:
• Vergleichsoperatoren in SQL:
SELECT * FROM BEWERTUNGEN WHERE ATYP = ’Z’
=
: “ist gleich”
<>
: “ist verschieden von”
<
: “ist kleiner als”
<=
: “ist kleiner oder gleich”
• Zeichenketten (Strings) werden mit ’...’ markiert.
>
: “ist größer als”
>=
: “ist größer oder gleich”
• In Zeichenketten ist die Groß- und Kleinschreibung
wichtig (je nach DBMS und Konfiguration). Folgende Anfrage liefert also 0 Zeilen (leere Menge):
SID
101
102
103
• Diese Vergleichsoperatoren können sowohl für Zahlen als auch für Zeichenketten verwendet werden.
ATYP
Z
Z
Z
ANR
1
1
1
PUNKTE
12
10
7
SELECT * FROM BEWERTUNGEN WHERE ATYP = ’z’
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-55
2. Einführung in das Relationale Modell und SQL
2-56
Einfache Bedingungen (2)
• Drucke Thema, AufgabenNr, Typ und Maximalpunktzahl aller Aufgaben, deren Maximalpunktzahl
• Man muß Spalten, die in Bedingungen verwendet
werden, nicht unbedingt ausdrucken.
WHERE wird vor SELECT ausgewertet.
größer als 10 ist.:
SELECT THEMA, ANR, ATYP, MAXPT
FROM
AUFGABEN
WHERE MAXPT > 10
THEMA
SQL
Einfache Bedingungen (3)
ANR
1
ATYP
Z
MAXPT
14
• Zahlen werden nicht in ’...’ eingeschlossen!
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
• Z.B.: Drucke Aufgabennummer und Thema aller
Hausaufgaben:
SELECT ANR, THEMA
FROM
AUFGABEN
WHERE ATYP = ’H’
ANR
1
2
THEMA
ER
SQL
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-57
Bedingungen (1)
2. Einführung in das Relationale Modell und SQL
2-58
Bedingungen (2)
• Aus den atomaren Formeln kann man nun komplexere Formeln (Bedingungen) aufbauen, indem man
zwei Formeln mit AND (“und”) verknüpft,
z.B. ATYP = ’H’ AND ANR = 1
• Die WHERE-Bedingung wird für jede Kombination von
Zeilen der unter FROM stehenden Tabellen ausgewertet. Ist sie wahr, wird die SELECT-Liste ausgegeben.
• Eine AND-Bed. ist wahr, wenn beide Teile wahr sind,
zwei Formeln mit OR (“oder”) verknüpft,
z.B. ANR = 1 OR ANR = 2
eine OR-Bed. ist wahr, wenn ein Teil wahr ist:
eine Formel mit NOT (“nicht”) negiert,
z.B. NOT ATYP = ’H’
• Da das Ergebnis wieder eine Formel ist, kann man
daraus dann noch komplexere Formeln aufbauen.
B1
B2
B1 and B2 B1 or B2 not B1
falsch falsch
falsch
falsch
wahr
falsch wahr
falsch
wahr
wahr
wahr falsch
falsch
wahr
falsch
wahr wahr
wahr
wahr
falsch
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-59
2. Einführung in das Relationale Modell und SQL
2-60
Bedingungen (3)
Bedingungen (4)
• “Geben Sie die SIDs von Lisa und Iris aus”.
SELECT SID
FROM
STUDENTEN
Falsch!
WHERE VORNAME = ’Lisa’ AND VORNAME = ’Iris’
STUDENTEN
SID VORNAME NACHNAME
101 Lisa
Weiss
102 Michael Grau
103 Daniel Sommer
104 Iris
Winter
VORN.=’Lisa’ VORN.=’Iris’
wahr
falsch
falsch
falsch
falsch
falsch
falsch
wahr
WHERE
falsch
falsch
falsch
falsch
• Die Bedingung ist immer falsch (inkonsistent).
Hier muß “OR” verwendet werden, nicht “AND”.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
• Um die syntaktische Struktur komplexerer Formeln
eindeutig zu machen, gibt es für AND, OR, NOT wie
bei “+” und “* Vorrangregeln:
NOT hat höchste Priorität,
AND hat mittlere Priorität (wie “*”),
OR hat niedrigste Priorität (wie “+”).
• Weil AND stärker als OR bindet, wird
ATYP = ’H’ AND ANR = 1 OR ANR = 2
implizit so geklammert:
(ATYP = ’H’ AND ANR = 1) OR ANR = 2
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-61
Bedingungen (5)
2. Einführung in das Relationale Modell und SQL
2-62
Rechnen in SQL
• AND und OR müssen auf beiden Seiten vollständige
logische Bedingungen haben (etwas, das wahr oder
falsch ist).
• Somit ist Folgendes ein Syntaxfehler, obwohl es in
der natürlichen Sprache erlaubt wäre:
SELECT DISTINCT SID
Falsch!
FROM
BEWERTUNGEN
WHERE ATYP = ’H’ AND PUNKTE >= 9
AND
ANR = 1 OR 2
• Ausnahme: ... BETWEEN ... AND ...
Hier bezeichnet das Wort AND keinen logischen Operator.
• Man kann Spalten und/oder Konstanten mit den
vier Grundrechenarten verknüpfen.
• Z.B. AufgabenNr und 80% der Max-Punktz. der
SQL-Aufgaben:
ANR MAXPKT * 0.8
SELECT ANR, MAXPKT * 0.8
2
8
FROM
AUFGABEN
1
11.2
WHERE THEMA = ’SQL’
• Zeichenketten können in den meisten Systemen mit
dem Operator || verknüpft (konkateniert) werden
(Folie 49).
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-63
2. Einführung in das Relationale Modell und SQL
2-64
Duplikat-Eliminierung (2)
Duplikat-Eliminierung (1)
• Anfragen können u.U. die gleiche Ergebnis-Zeile
mehrfach liefern.
• Z.B.: “Gib die Themen aller Aufgaben aus.”
SELECT THEMA
FROM
AUFGABEN
THEMA
ER
SQL
SQL
• Schreibt man “SELECT DISTINCT” statt “SELECT”, so
werden Duplikate eliminiert:
SELECT DISTINCT THEMA
FROM
AUFGABEN
THEMA
ER
SQL
• Auch wenn man mehrere Spalten ausgibt, schreibt
man DISTINCT nur einmal:
SELECT DISTINCT ANR, THEMA
FROM
AUFGABEN
Der Grund ist, daß sich DISTINCT auf ganze Zeilen bezieht, die also in
allen Spalten identisch sind. Nur partiell gleiche Zeilen sind wichtig.
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-65
• Die Reihenfolge, in der die Ausgabezeilen gedruckt
werden, ist nicht vorhersehbar, wenn man nicht ex• Z.B. Studenten mit SID,
sortiert nach Nachnamen:
SID
VORNAME
SELECT
SID, VORNAME, NACHNAME 102 Michael
103 Daniel
FROM
STUDENTEN
101 Lisa
ORDER BY NACHNAME
104 Iris
105
Anton
NACHNAME
Grau
Sommer
Weiß
Winter
Winter
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
2. Einführung in das Relationale Modell und SQL
2-67
Sortierung (3)
• Die Reihenfolge der Zeilen für Anton Winter und
Iris Winter ist bei der Sortierung nach Nachnamen
so nicht festgelegt.
• Ein zweites Sortierkriterium ist nötig, das nur relevant ist, wenn die Sortierkriterien davor keine Entscheidung bringen:
SID
102
103
101
104
105
VORNAME
Michael
Daniel
Lisa
Anton
Iris
• Beispiel: Gleiche Anfrage, aber Sortierung nach SID,
und zwar in umgekehrter Reihenfolge
(von groß nach klein: “descending”/“absteigend”):
plizit eine Sortierung verlangt (mit ORDER BY).
S. Brass, A. Herrmann: Datenbanken und WWW
2-66
Sortierung (2)
Sortierung (1)
SELECT
SID, VORNAME, NACHNAME
FROM
STUDENTEN
ORDER BY NACHNAME, VORNAME
2. Einführung in das Relationale Modell und SQL
NACHNAME
Grau
Sommer
Weiß
Winter
Winter
Universität Halle, 2014
SELECT
SID, VORNAME, NACHNAME SID VORNAME
105 Anton
FROM
STUDENTEN
104 Iris
ORDER BY SID DESC
103 Daniel
102
101
Michael
Lisa
NACHNAME
Winter
Winter
Sommer
Grau
Weiß
• Ohne das Schlüsselwort DESC bekommt man aufsteigende Sortierung (von kleinen zu großen Werten).
S. Brass, A. Herrmann: Datenbanken und WWW
Universität Halle, 2014
Herunterladen