Datenbanksysteme

Werbung
BWL Datenbanksysteme
Dozent
Mohamed Naji
[email protected]
http://iba-nuernberg.fu-academy.de
http://www.naji.net16.net
http://infonaji.comlu.com
19. Oktober 2016
Internationale Berufsakademie (IBA)
der F+U Unternehmensgruppe gGmbH
University of Cooperative Education
Vorwort
Jedes Kapitel enthält eine Vielzahl von Beispielen und Aufgaben mit Lösungen, die das Gefühl für die Beherrschung und die
Anwendbarkeit des fachlichen Kernstoffes stärken sollen. In vielen Fällen werden nur die Grundideen einer Lösung vorgestellt.
Die fehlende Vorführung soll ein Anreiz für die Studierenden sein, sich diese selbst zu überlegen. Studieren bedeutet ja,
eigenständig (unter Anleitung) Problemlösungsideen zu verstehen, anzuwenden und weiter zu entwickeln
Zuhören bzw. das Lehrbuch lesen und Verstehen ist zwar wichtig, aber der Vorlesungsstoff anhand von Aufgaben selber
machen und einüben ist noch viel wichtiger. Im Vergleich: Wenn Sie die Linksdrehung beim Tangotanzen lernen wollen,
brauchen Sie jemanden, der Ihnen zeigt, wie’s geht und auf was es ankommt, aber Sie werden es nur durch viel eigenes Üben
lernen und mit dem Vorlesungsstoff ist es genauso. Die Vorlesung macht nur die Tür auf zum Selbststudium.
An den Hausaufgaben üben Sie nicht nur Begriffe, Konstruktionen und Konzepte der Vorlesung ein, Sie trainieren auch
Ihre Problemlösefähigkeiten und das Übertragen von Lösungsstrategien aus einem Problemfeld in ein anderes, vornehm
ausgedrückt den Transfer. Ganz wichtig auch: Richtiges Formulieren erwirbt man nicht allein durch Zuschauen, es muss durch
eigenes Versuchen gelernt werden.
Deswegen sollten Sie zwar mit anderen über den Vorlesungsstoff kommunizieren (das müssen Sie Ihr ganzes Leben lang
tun), aber anschliessend müssen Sie selbständig und alleine Ihre Aufgaben aufschreiben.
Im Vorlesungsstoff gibt es zwischen Unverständnis und Verständnis kaum Zwischenstufen. Ein Problem verursacht entweder Panik oder ist trivial, ein von Studenten häufig benutztes Wort. In vielen Fällen führt ein gutes Beispiel, aber vor allem ein
selber gelöstes Problem, plötzlich zu einem grossen Fortschritt im Verständnis. Deswegen sind Übungsaufgaben zusammen mit
Hilfen zur Lösung so wichtig für das Studium. Und: Sie dürfen sich nicht daran stören, wenn die Übungsaufgaben zu einfach
sind. Das zeigt doch nur, das Sie bis jetzt über den Berg sind und sich die Bemerkung trivial erlauben können. Für andere ist
dasselbe Problem ein Albtraum.
Seien Sie ehrlich mit sich selber und lügen Sie sich nicht an, indem Sie sich vorgaukeln, die Aufgaben vollständig verstanden zu haben, obwohl Sie einen Lösungsweg „nur“nachvollzogen haben. Sie sind aus dem Sammler– und Jäger–Zeitalter
heraus. Heutzutage wird entdeckt und entwickelt. Als zukünftiger Absolvent werden Sie entwickeln müssen und nicht nur
nachlesen, was andere vor Ihnen bereits herausgefunden haben.
Weiter möchte ich Sie auffordern, immer dann Fragen zu stellen, wenn Sie etwas nicht mehr verstehen. Sie müssen wissen, dass nur diejenigen, die auch etwas begreifen, Fragen stellen. Ich gehe davon aus, dass die Umkehrung dieser Aussage auch
zutrifft.
Berechnungen und Konstruktionen werden überwiegend mit Softwarewerkzeugen durchgeführt. Dadurch steht die Vermittlung von Rechenschemata und Rechentricks heute nicht mehr im Vordergrund. Computer machen den Stoff aber nicht
überflüssig, im Gegenteil: Das Kapital des Studiums liegt im Verständnis des Lehrstoffs. Das Wissen über die Modellierung
und die Kenntnis unterschiedlicher Berechnungsverfahren sowie die Fähigkeit zu einer souveränen Interpretation der Ergebnisse
I
zeichnen einen guten Absolventen aus.
„Die Gesetze der Natur sind in der Sprache der Mathematik geschrieben.“(Galileo Galilei)
Um die Lesbarkeit des Textes zu verbessern, wurde die äussere Form strukturiert:
Definitionen, Sätze, Beispiele, Bemerkungen, Korollare, Lemmata und Propositionen sind in jedem erststelligen Unterkapitel ohne Rücksicht auf den Typ fortlaufend durchnummeriert. So folgen in Unterkapitel 2.3 nacheinander Beispiel 2.3.1,
Bemerkung 2.3.2, Definition 2.3.3 usw.
Formeln, Gleichungen, Tabellen, Algorithmen und Abbildungen sind fortlaufend durchnummeriert und zwar mit Rücksicht auf deren Typ und deren Unterkapitel.
Zahlen in eckigen Klammern beziehen sich auf das Literaturverzeichnis am Schluss.
ferner gelten die folgenden Typografische Konventionen:
Zitaten und Aussagen sind Schräggestellt.
Eigennamen z.B. von Personen werden in serifenlose Schrift gekennzeichnet.
Schlüsselwörter und <tags> sind fett gedruckt.
Kapitälchen Schrift wird verwendet für
• Klassen– und methodenNamen
• Pfad–, Datei–, Tool–, Firmen– und Programmnamen
• Attributen–, Domain–, Variablen– und Packetnamen, Datenbanken, Datentypen, Umgebungsvariablen, Tags und Anweisungen
kursive Schrift wird verwendet für
• Neue Begriffe, die definiert werden
• Betonungen im Fliesstext
Schreibmaschinenschrift (also tt = Teletyper = Fernschreiber) wird verwendet für
• Kommandozeilen und Optionen, die wörtlich eingetippt werden sollen
• Erzeugte Ausgabe einer zuvor gemachten Eingabe oder eines erstellten Programms.
externe Links z.B. zu einer Website sind in dieser Farbe markiert.
.
Im Symbolverzeichnis im Kapitel 56 ab Seite 193 sind viele Symbole auf einen Blick aufgelistet.
im Kapitel Personverzeichnis habe ich die Geburts– und Todesjahre einiger bedeutender Mathematiker, Informatiker,
Physiker, Chemiker, Wirtschaftler, Statistiker und anderer Wissenschaftler aufgelistet, die Sie von Zeit zu Zeit in diesem
Skriptum finden werden. Damit haben Sie die Möglichkeit, sich ein Bild von der historischen Abfolge wissenschaftlicher
Entdeckungen machen zu können.
Auf der sehr interessanten Seite http://www-gap.dcs.st-and.ac.uk/~history/BiogIndex.html finden sich auch zahlreiche
biografische Angaben zu den meisten berühmten Mathematikern.
Viele Informatiker sind unter http://de.wikipedia.org/w/index.php?title=Kategorie:Informatiker zu finden
Einige muslimische Wissenschaftler sind unter https://en.wikipedia.org/wiki/List_of_Muslim_scientists zu finden
und noch ein Hinweis: Das Skriptum begleitet die Vorlesung, aber es soll sie nicht ersetzen.
Die Hinweise vieler Leserinnen und Leser auf Fehler und Verbesserungsmöglichkeiten waren für mich sehr wertvoll. Oft
existieren auch noch Schreibfehler, welche zu Verwechselungen führen können (z.B. w statt ω bzw. x1 statt x1 ). Da ich
allerdings damit rechnen muss, dass trotz aller Sorgfalt der Fehlerteufel nicht untätig geblieben ist, danke ich schon jetzt allen
Leserinnen und Lesern für entsprechende Korrekturhinweise, konstruktive Kritik oder Verbesserungsvorschläge, z.B. per Email
([email protected]).
Als Textverarbeitung wurde eine LATEX-version (MikTex) eingesetzt.
Inhaltsverzeichnis
Vorwort . . . . . . . . . . . . . . . . . . . . . . . .
Inhaltsverzeichnis . . . . . . . . . . . . . . . . . .
Abbildungsverzeichnis . . . . . . . . . . . . . . . .
Tabellenverzeichnis . . . . . . . . . . . . . . . . . .
Listings . . . . . . . . . . . . . . . . . . . . . . . .
1
Datenbankentwicklung . . . . . . . . . . .
1.1
Der erste Versuch . . . . . . . . . . . . .
1.2
die erste Normalform 1NF . . . . . . . . .
1.3
die zweite Normalform 2NF . . . . . . . .
1.4
die dritte Normalform 3NF . . . . . . . .
1.5
kompletter Entwurf der Datenbanken . . .
1.6
Datenbankschema . . . . . . . . . . . . .
1.7
Zusammenfassung . . . . . . . . . . . . .
1.8
Vorteile und Grenzen der Normalisierung .
3
xampp . . . . . . . . . . . . . . . . . . .
3.1
Installation . . . . . . . . . . . . . . . . .
3.2
XAMPP starten . . . . . . . . . . . . . .
3.3
Datenbank anlegen . . . . . . . . . . . . .
3.4
Tabellen in Datenbank anlegen . . . . . .
3.5
Tabellen mit Daten füllen . . . . . . . . .
3.6
Exportieren . . . . . . . . . . . . . . . . .
3.7
Importieren . . . . . . . . . . . . . . . . .
3.8
Daten manipulieren . . . . . . . . . . . .
3.9
Abfrageergebnisse in einer Datei umleiten
4
Datenbanken über xampp . . . . . . . . .
4.1
Tabellen in Datenbank anlegen . . . . . .
4.2
Tabellen mit Daten füllen . . . . . . . . .
4.3
Exportieren . . . . . . . . . . . . . . . . .
4.4
Importieren . . . . . . . . . . . . . . . . .
4.5
Daten manipulieren . . . . . . . . . . . .
12
Tabellentypen (Storage–Engines) . . . . .
12.1
Einführung . . . . . . . . . . . . . . . . .
13
Datentypen . . . . . . . . . . . . . . . . .
13.1
Numerische Typen . . . . . . . . . . . . .
13.1.1 Ganze Zahlen . . . . . . . . . . . . . . .
13.1.2 Fliess– und Festkommazahlen . . . . . . .
13.2
Datum und Uhrzeit . . . . . . . . . . . . .
13.2.1 DATE . . . . . . . . . . . . . . . . . . . .
13.2.2 TIME . . . . . . . . . . . . . . . . . . . .
13.2.3 DATETIME/TIMESTAMP . . . . . . . .
13.2.4 YEAR . . . . . . . . . . . . . . . . . . .
13.3
Zeichenkette . . . . . . . . . . . . . . . .
13.3.1 CHAR . . . . . . . . . . . . . . . . . . .
13.3.2 VARCHAR . . . . . . . . . . . . . . . . .
13.3.3 TEXT . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
IV
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
III
IV
VII
VIII
IX
1
1
16
21
24
26
29
29
29
31
31
39
42
44
49
52
55
57
57
60
60
64
67
70
72
73
73
75
75
75
75
75
75
75
75
75
76
76
76
76
13.4
13.5
13.6
13.7
13.8
19
19.1
19.2
19.3
19.4
19.5
19.6
19.7
19.8
19.9
19.10
19.11
20
20.1
20.2
21
21.1
21.2
21.3
21.4
21.5
21.6
21.7
21.8
25
25.1
25.2
26
26.1
26.2
26.3
26.4
26.5
27
27.1
27.2
28
28.1
28.2
29
29.1
29.2
29.3
29.4
29.5
30
30.1
30.2
30.3
30.4
30.5
Binärdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ENUMs und SETs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Geometrieobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nullwerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenbankstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabellenanlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erlaubte Zeichen und Namenslänge . . . . . . . . . . . . . . . . . . . . . . . .
Gross- und Kleinschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konventionen zur Namenvereibarungen . . . . . . . . . . . . . . . . . . . . . .
Tabellenstruktur abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine Spalte in einer Tabelle hinzufügen, ändern, entfernen . . . . . . . . . . . .
Tabelle kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Typ der Tabelle ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabelle leeren, löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabelle prüfen und reparieren . . . . . . . . . . . . . . . . . . . . . . . . . . .
ganze Datenbank löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Primärschlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Primärschlüssel über mehrere Spalten . . . . . . . . . . . . . . . . . . . . . . .
Referenzielle Integrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Foreign–Key–Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
INSERT und Referenzielle Integrität . . . . . . . . . . . . . . . . . . . . . . .
UPDATE und Referenzielle Integrität . . . . . . . . . . . . . . . . . . . . . . .
DELETE und Referenzielle Integrität . . . . . . . . . . . . . . . . . . . . . . .
INSERT und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
UPDATE und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
DELETE und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
Wirkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mathematical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfragen mit Bezug zu einer Tabelle verwenden . . . . . . . . . . . . . . . . .
Date Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfragen ohne Bezug zu einer Tabelle verwenden . . . . . . . . . . . . . . . .
Abfragen mit Bezug zu einer Tabelle verwenden . . . . . . . . . . . . . . . . .
Formatierungsfunktionen von Datum . . . . . . . . . . . . . . . . . . . . . . .
Datum mit Formatierungsfunktionen zerlegen . . . . . . . . . . . . . . . . . .
Datum mit String–Funktionen zerlegen . . . . . . . . . . . . . . . . . . . . . .
Time Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfragen ohne Bezug zu einer Tabelle verwenden . . . . . . . . . . . . . . . .
Uhrzeiten und Sekunden ineinander konvertieren . . . . . . . . . . . . . . . . .
String-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
REPLACE und Co . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abfragen mit Bezug zu einer Tabelle verwenden . . . . . . . . . . . . . . . . .
Statistische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Berechnung deskriptiver Statistiken . . . . . . . . . . . . . . . . . . . . . . . .
Gruppenbezogene deskriptive Statistiken . . . . . . . . . . . . . . . . . . . . .
Generierung von Häufigkeitsverteilungen . . . . . . . . . . . . . . . . . . . . .
Berechnung linerarer Regression . . . . . . . . . . . . . . . . . . . . . . . . .
Kurze SQL–Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alle Zeilen einer Tabelle anzeigen . . . . . . . . . . . . . . . . . . . . . . . . .
Spalten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhaltlich gleiche Zeilen von der Ausgabe ausschliessen . . . . . . . . . . . . .
Spalten mit NULL–Werten abfragen . . . . . . . . . . . . . . . . . . . . . . .
Spalten mit Leerzeichen abfragen . . . . . . . . . . . . . . . . . . . . . . . . .
V
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
76
77
77
77
77
79
79
79
80
81
82
83
83
87
88
88
89
90
90
91
92
92
93
95
99
99
101
102
103
112
112
113
115
115
118
118
120
121
123
123
123
125
125
128
130
130
130
132
134
137
139
139
140
140
140
143
30.6
Zeilen mit einer Bedingung auswählen . . . . .
30.7
Zeilen mit verbundenen Bedingungen auswählen
30.8
SELECT und Variablen . . . . . . . . . . . . .
30.9
SELECT . . . INTO–Anweisung . . . . . . . . .
31
Datensätze sortieren (ORDER BY) . . . . . . .
31.1
Einführung . . . . . . . . . . . . . . . . . . . .
31.2
ORDER BY und CONCAT . . . . . . . . . . .
31.3
ORDER BY und FIND_IN_SET . . . . . . . .
31.4
Sortieren mit Ausdrücken . . . . . . . . . . . .
31.5
Sortieren nach numerischen Platzhaltern . . . .
41
GROUP BY und Aggregatfunktionen . . . . . .
41.1
COUNT() . . . . . . . . . . . . . . . . . . . .
41.2
MIN() und MAX() . . . . . . . . . . . . . . . .
41.3
AVG() und STDDEV() . . . . . . . . . . . . . .
41.4
GROUP BY bei mehreren Spalten . . . . . . . .
41.5
Mehrere COUNT–Abfragen mit einer Abfrage .
41.6
GROUP BY Clause . . . . . . . . . . . . . . .
51
CROSS JOIN . . . . . . . . . . . . . . . . . . .
51.1
Einführung . . . . . . . . . . . . . . . . . . . .
51.2
Anwendung . . . . . . . . . . . . . . . . . . .
51.3
GROUP BY in JOIN . . . . . . . . . . . . . . .
51.4
HAVING in JOIN . . . . . . . . . . . . . . . .
52
NATURAL JOIN . . . . . . . . . . . . . . . . .
52.1
Einführung . . . . . . . . . . . . . . . . . . . .
52.2
Anwendung . . . . . . . . . . . . . . . . . . .
52.3
GROUP BY in JOIN . . . . . . . . . . . . . . .
52.4
HAVING in JOIN . . . . . . . . . . . . . . . .
53
INNER JOIN . . . . . . . . . . . . . . . . . . .
53.1
Einführung . . . . . . . . . . . . . . . . . . . .
53.2
Anwendung . . . . . . . . . . . . . . . . . . .
53.3
GROUP BY in JOIN . . . . . . . . . . . . . . .
53.4
HAVING in JOIN . . . . . . . . . . . . . . . .
54
LEFT OUTER JOIN . . . . . . . . . . . . . . .
54.1
Einführung . . . . . . . . . . . . . . . . . . . .
54.2
Anwendung . . . . . . . . . . . . . . . . . . .
54.3
GROUP BY in JOIN . . . . . . . . . . . . . . .
54.4
HAVING in JOIN . . . . . . . . . . . . . . . .
55
RIGHT OUTER JOIN . . . . . . . . . . . . . .
55.1
Einführung . . . . . . . . . . . . . . . . . . . .
55.2
Anwendung . . . . . . . . . . . . . . . . . . .
55.3
GROUP BY in JOIN . . . . . . . . . . . . . . .
55.4
HAVING in JOIN . . . . . . . . . . . . . . . .
Literaturverzeichnis . . . . . . . . . . . . . . . . . . . .
56
Symbolverzeichnis . . . . . . . . . . . . . . . .
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . .
Personverzeichnis . . . . . . . . . . . . . . . . . . . . .
VI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
144
145
146
146
147
147
149
151
153
154
155
155
156
156
157
158
158
159
159
159
167
167
168
168
168
169
169
170
170
170
176
176
177
177
177
183
184
185
185
185
191
191
192
193
204
205
Abbildungsverzeichnis
1.6.0.1
UML universitaet_nf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.0.1
3.1.0.2
3.1.0.3
3.1.0.4
3.1.0.5
3.1.0.6
3.1.0.7
3.1.0.8
3.2.0.1
3.2.0.2
3.2.0.3
3.3.0.1
3.3.0.2
3.4.0.1
3.4.0.2
3.4.0.3
3.4.0.4
3.4.0.5
3.5.0.1
3.5.0.2
3.5.0.3
3.6.0.1
3.6.0.2
3.6.0.3
3.7.0.1
3.7.0.2
3.9.0.1
3.9.0.2
bild0020.eps .
bild0021.eps .
bild0022.eps .
bild0023.eps .
bild0024.eps .
bild0025.eps .
bild0026.eps .
bild0027.eps .
xampp001.eps
xampp002.eps
xampp003.eps
xampp004.eps
xampp005.eps
xampp006.eps
xampp007.eps
xampp008.eps
xampp009.eps
xampp010.eps
xampp011.eps
xampp012.eps
xampp013.eps
xampp014.eps
xampp015.eps
xampp016.eps
xampp017.eps
xampp018.eps
bild0310.eps .
bild0311.eps .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
4.1.0.1
4.1.0.2
4.1.0.3
4.1.0.4
4.1.0.5
4.2.0.1
4.2.0.2
4.2.0.3
4.3.0.1
4.3.0.2
4.3.0.3
4.4.0.1
4.4.0.2
xampp006.eps
xampp007.eps
xampp008.eps
xampp009.eps
xampp010.eps
xampp011.eps
xampp012.eps
xampp013.eps
xampp014.eps
xampp015.eps
xampp016.eps
xampp017.eps
xampp018.eps
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
60
61
62
63
64
65
66
67
68
69
70
71
72
VII
Tabellenverzeichnis
1.1.0.1
1.2.0.1
1.3.0.1
1.3.0.2
1.3.0.3
1.4.0.1
1.4.0.2
1.5.0.1
1.5.0.2
1.5.0.3
1.5.0.4
Kommiliton 0NF . .
Kommiliton 1NF . .
Kommiliton Ort 2NF
Veranstaltung 2NF .
Besucht 2NF . . . .
Kommiliton 3NF . .
Ort 3NF . . . . . . .
Kommiliton . . . . .
Ort . . . . . . . . .
Veranstaltung 2NF .
Besucht . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19.2.0.1
19.3.0.1
Einige MySQL reservierte Wörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Gross- und Kleinschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
41.6.0.1
Operatoren und Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
56.0.0.1
Notationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
VIII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
20
22
23
24
25
25
26
26
27
28
Listings
21.1 universitaet.sql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
IX
Kapitel 1
Datenbankentwicklung
Herr S. Tudent möchte einige Informationen über eine paar Mitstudenten EDVmässig speichern. Sein Ziel ist es, eine kleine
Datenbank zu erstellen, in der Daten über Studenten gespeichert werden: Name, Geburtsdatum und PLZ (inkl. geographische
Breite und Länge) des Studenten sowie die Veranstaltungen mit Arbeitsform und Wahlpflichtfach WPF, die jedes Studenten
besucht.
1.1 Der erste Versuch
Diese Daten können natürlich ganz ohne Datenbank gespeichert werden; in einer einfachen Liste im Textformat, wie Sie im
folgenden Beispiel finden:
• Kommiliton 1
◦ anrede: Herr
◦ vorname: Adhelm
◦ nachname: Kirch
◦ geburtsDatum:
◦ Veranstaltung 1
⋄ bezeichnung: Gestaltung
⋄ arbeitsform: Kolloqium
⋄ wpf: Gast
◦ Veranstaltung 2
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf: Wahlfach
◦ Veranstaltung 3
⋄ bezeichnung: Psychologie
⋄ arbeitsform: Seminar
⋄ wpf: Wahlfach
◦ Ort
⋄ plz: D-91256
⋄ geoBreite: -19.425000
⋄ geoLaenge: -39.261200
• Kommiliton 2
1
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ anrede: Herr
◦ vorname: Apo
◦ nachname: Kohlund
◦ geburtsDatum: 1991-09-22
◦ Veranstaltung 1
⋄ bezeichnung: Drucktechnik
⋄ arbeitsform: Vorlesung
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: Mechanik
⋄ arbeitsform: Seminar
⋄ wpf: Pflichtfach
◦ Veranstaltung 3
⋄ bezeichnung: Simulation Methods in Physics II
⋄ arbeitsform: Hauptseminar
⋄ wpf: Gast
◦ Ort
⋄ plz: D-25970
⋄ geoBreite: -37.366800
⋄ geoLaenge: -36.139400
• Kommiliton 3
◦ anrede: Frau
◦ vorname: Ayan Sibel
◦ nachname: Maika
◦ geburtsDatum: 1992-12-11
◦ Veranstaltung 1
⋄ bezeichnung: Biochemie
⋄ arbeitsform: Kolloqium
⋄ wpf: Gast
◦ Veranstaltung 2
⋄ bezeichnung: formale Sprachen
⋄ arbeitsform: Hauptseminar
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Maschinenbau
⋄ arbeitsform: Vorbereitungs-kurs
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-25970
⋄ geoBreite: -37.366800
⋄ geoLaenge: -36.139400
• Kommiliton 4
2
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ anrede: Herr
◦ vorname: Bent
◦ nachname: Chevi
◦ geburtsDatum: 1997-10-08
◦ Veranstaltung 1
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf: Wahlfach
◦ Veranstaltung 2
⋄ bezeichnung: Gestaltung
⋄ arbeitsform: Kolloqium
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf:
◦ Ort
⋄ plz: D-93754
⋄ geoBreite: -46.817700
⋄ geoLaenge: -36.168500
• Kommiliton 5
◦ anrede: Herr
◦ vorname: Borck
◦ nachname: Teufel
◦ geburtsDatum: 1995-03-06
◦ Veranstaltung 1
⋄ bezeichnung: formale Sprachen
⋄ arbeitsform: Hauptseminar
⋄ wpf: Pflichtfach
◦ Veranstaltung 2
⋄ bezeichnung: Gestaltung
⋄ arbeitsform: Kolloqium
⋄ wpf: Gast
◦ Ort
⋄ plz: D-25970
⋄ geoBreite: -37.366800
⋄ geoLaenge: -36.139400
• Kommiliton 6
◦ anrede: Frau
◦ vorname: Branwen
◦ nachname: Schulte
3
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum: 1996-07-19
◦ Veranstaltung 1
⋄ bezeichnung: BWL
⋄ arbeitsform: Proseminar
⋄ wpf: Pflichtfach
◦ Veranstaltung 2
⋄ bezeichnung: Mechanik
⋄ arbeitsform: Seminar
⋄ wpf: Wahlfach
◦ Veranstaltung 3
⋄ bezeichnung: Lineare Algebra
⋄ arbeitsform: Hauptseminar
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-31281
⋄ geoBreite: -40.981100
⋄ geoLaenge: -43.268900
• Kommiliton 7
◦ anrede: Frau
◦ vorname: Branwen
◦ nachname: Schulte
◦ geburtsDatum: 1987-10-23
◦ Veranstaltung 1
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: Physik II
⋄ arbeitsform: Kolloqium
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Forstwirtschaft
⋄ arbeitsform: Kolloqium
⋄ wpf: Wahlfach
◦ Ort
⋄ plz: D-80765
⋄ geoBreite: -19.459100
⋄ geoLaenge: -25.092300
• Kommiliton 8
◦ anrede: Herr
◦ vorname: Gerasim
◦ nachname: Quack
4
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum:
◦ Veranstaltung 1
⋄ bezeichnung: Analysis 1
⋄ arbeitsform: Kolloqium
⋄ wpf: Pflichtfach
◦ Veranstaltung 2
⋄ bezeichnung: Lineare Algebra
⋄ arbeitsform: Hauptseminar
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Java
⋄ arbeitsform: Praktikum
⋄ wpf: Wahlfach
◦ Ort
⋄ plz: D-93754
⋄ geoBreite: -46.817700
⋄ geoLaenge: -36.168500
• Kommiliton 9
◦ anrede: Frau
◦ vorname: Gondeline
◦ nachname: Bert
◦ geburtsDatum: 1989-03-20
◦ Veranstaltung 1
⋄ bezeichnung: Physik II
⋄ arbeitsform: Kolloqium
⋄ wpf: Gast
◦ Veranstaltung 2
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf: Wahlfach
◦ Veranstaltung 3
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-80765
⋄ geoBreite: -19.459100
⋄ geoLaenge: -25.092300
• Kommiliton 10
◦ anrede: Frau
◦ vorname: Heimgard
◦ nachname: Wunder
5
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum: 1997-09-21
◦ Veranstaltung 1
⋄ bezeichnung: Drucktechnik
⋄ arbeitsform: Vorlesung
⋄ wpf: Wahlfach
◦ Veranstaltung 2
⋄ bezeichnung: Simulation Methods in Physics II
⋄ arbeitsform: Vorlesung
⋄ wpf: Pflichtfach
◦ Veranstaltung 3
⋄ bezeichnung: Statistik I
⋄ arbeitsform: Vorlesung
⋄ wpf: Wahlfach
◦ Ort
⋄ plz: D-93754
⋄ geoBreite: -46.817700
⋄ geoLaenge: -36.168500
• Kommiliton 11
◦ anrede: Herr
◦ vorname: Jack
◦ nachname: Mortimar Hahn
◦ geburtsDatum: 1988-11-17
◦ Veranstaltung 1
⋄ bezeichnung: Biochemie
⋄ arbeitsform: Kolloqium
⋄ wpf: Wahlfach
◦ Veranstaltung 2
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf: Gast
◦ Veranstaltung 3
⋄ bezeichnung: Statistik I
⋄ arbeitsform: Vorlesung
⋄ wpf: Gast
◦ Ort
⋄ plz: D-31281
⋄ geoBreite: -40.981100
⋄ geoLaenge: -43.268900
• Kommiliton 12
◦ anrede: Frau
◦ vorname: Jocelin
◦ nachname: Leon Bardot
6
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum: 1997-02-08
◦ Veranstaltung 1
⋄ bezeichnung: Maschinenbau
⋄ arbeitsform: Vorbereitungs-kurs
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Mechanik
⋄ arbeitsform: Seminar
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-91256
⋄ geoBreite: -19.425000
⋄ geoLaenge: -39.261200
• Kommiliton 13
◦ anrede: Herr
◦ vorname: Joseph
◦ nachname: Cheree
◦ geburtsDatum: 1990-06-26
◦ Veranstaltung 1
⋄ bezeichnung: English I
⋄ arbeitsform: Tutorium
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: Lineare Algebra
⋄ arbeitsform: Hauptseminar
⋄ wpf: Gast
◦ Veranstaltung 3
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-31281
⋄ geoBreite: -40.981100
⋄ geoLaenge: -43.268900
• Kommiliton 14
◦ anrede: Frau
◦ vorname: Mechtild
◦ nachname: Lehner
7
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum: 1997-09-08
◦ Veranstaltung 1
⋄ bezeichnung: Mechanik
⋄ arbeitsform: Seminar
⋄ wpf: Wahlfach
◦ Veranstaltung 2
⋄ bezeichnung: Simulation Methods in Physics II
⋄ arbeitsform: Hauptseminar
⋄ wpf: Wahlfach
◦ Veranstaltung 3
⋄ bezeichnung: Psychologie
⋄ arbeitsform: Seminar
⋄ wpf:
◦ Ort
⋄ plz: D-91256
⋄ geoBreite: -19.425000
⋄ geoLaenge: -39.261200
• Kommiliton 15
◦ anrede: Herr
◦ vorname: Ruthard Alfrad
◦ nachname: Nieminen
◦ geburtsDatum: 1996-05-10
◦ Veranstaltung 1
⋄ bezeichnung: Drucktechnik
⋄ arbeitsform: Vorlesung
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf: Gast
◦ Veranstaltung 3
⋄ bezeichnung: Maschinenbau
⋄ arbeitsform: Vorbereitungs-kurs
⋄ wpf:
◦ Ort
⋄ plz: D-31281
⋄ geoBreite: -40.981100
⋄ geoLaenge: -43.268900
• Kommiliton 16
◦ anrede: Herr
◦ vorname: Sieghelm
◦ nachname: Schilling
8
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
◦ geburtsDatum: 1989-10-23
◦ Veranstaltung 1
⋄ bezeichnung: Analysis 1
⋄ arbeitsform: Kolloqium
⋄ wpf:
◦ Veranstaltung 2
⋄ bezeichnung: VWL
⋄ arbeitsform: Tutorium
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Lineare Algebra
⋄ arbeitsform: Hauptseminar
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-91256
⋄ geoBreite: -19.425000
⋄ geoLaenge: -39.261200
• Kommiliton 17
◦ anrede: Herr
◦ vorname: Sieghelm
◦ nachname: Schilling
◦ geburtsDatum: 1989-12-07
◦ Veranstaltung 1
⋄ bezeichnung: Biochemie
⋄ arbeitsform: Kolloqium
⋄ wpf: Wahlfach
◦ Veranstaltung 2
⋄ bezeichnung: formale Sprachen
⋄ arbeitsform: Hauptseminar
⋄ wpf: Gast
◦ Veranstaltung 3
⋄ bezeichnung: Forstwirtschaft
⋄ arbeitsform: Kolloqium
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-33229
⋄ geoBreite: -45.098800
⋄ geoLaenge: -24.101100
• Kommiliton 18
◦ anrede: Frau
◦ vorname: Sieglinde
◦ nachname: Schmidtke
9
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
10
◦ geburtsDatum: 1989-01-12
◦ Veranstaltung 1
⋄ bezeichnung: Simulation Methods in Physics II
⋄ arbeitsform: Vorlesung
⋄ wpf: Pflichtfach
◦ Veranstaltung 2
⋄ bezeichnung: BWL
⋄ arbeitsform: Proseminar
⋄ wpf: Pflichtfach
◦ Veranstaltung 3
⋄ bezeichnung: Psychologie
⋄ arbeitsform: Seminar
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-91256
⋄ geoBreite: -19.425000
⋄ geoLaenge: -39.261200
• Kommiliton 19
◦ anrede: Herr
◦ vorname: Uke
◦ nachname: Schmieder
◦ geburtsDatum: 1989-12-08
◦ Veranstaltung 1
⋄ bezeichnung: Gestaltung
⋄ arbeitsform: Kolloqium
⋄ wpf: Pflichtfach
◦ Veranstaltung 2
⋄ bezeichnung: BWL
⋄ arbeitsform: Proseminar
⋄ wpf:
◦ Veranstaltung 3
⋄ bezeichnung: Stochastik
⋄ arbeitsform: Vorkurs
⋄ wpf: Pflichtfach
◦ Ort
⋄ plz: D-25970
⋄ geoBreite: -37.366800
⋄ geoLaenge: -36.139400
An sich enthält solch eine Liste erforderlichen Informationen. Warum sollten Wir sich also überhaupt die Mühe machen, den
Text in einer Datenbank umzuwandeln?
Nun, es gibt eine Menge Gründe. Die Liste ermöglichst zwar ein einfaches Suchen, es ist aber nicht möglich, die Daten
anders zu organisieren: beispielsweise um eine Teilliste aller Veranstaltungen des Studenten X zu erstellen oder die Liste nach
Vornamen des Studenten zu sortieren. Die Liste wird einfach in einer Tabelle umgewandelt:
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Kommiliton
anrede: Herr
vorname: Adhelm
nachname: Kirch
geburtsDatum:
anrede: Herr
vorname: Apo
nachname: Kohlund
geburtsDatum: 199109-22
Veranstaltung 1
Veranstaltung 2
Veranstaltung 3
11
Ort
• bezeichnung:
Gestaltung
• bezeichnung:
Stochastik
• bezeichnung:
Psychologie
• arbeitsform:
Kolloqium
• arbeitsform:
Vorkurs
• arbeitsform:
Seminar
• wpf: Gast
• wpf: Wahlfach
• wpf: Wahlfach
• bezeichnung:
Drucktechnik
• bezeichnung:
Mechanik
• plz: D-25970
• arbeitsform:
Vorlesung
• arbeitsform:
Seminar
• bezeichnung:
Simulation
Methods
in
Physics II
• wpf:
• wpf:
fach
• arbeitsform:
Hauptseminar
• geoLaenge:
-36.139400
Pflicht-
• plz: D-91256
• geoBreite:
-19.425000
• geoLaenge:
-39.261200
• geoBreite:
-37.366800
• wpf: Gast
anrede: Frau
vorname: Ayan Sibel
nachname: Maika
geburtsDatum: 199212-11
• bezeichnung:
Biochemie
• arbeitsform:
Kolloqium
• bezeichnung:
formale Sprachen
• arbeitsform:
Hauptseminar
• bezeichnung:
Maschinenbau
• arbeitsform:
Vorbereitungskurs
• wpf: Gast
anrede: Herr
vorname: Bent
nachname: Chevi
geburtsDatum: 199710-08
• wpf:
• wpf:
fach
• bezeichnung:
VWL
• bezeichnung:
Gestaltung
• bezeichnung:
Stochastik
• arbeitsform:
Tutorium
• arbeitsform:
Kolloqium
• arbeitsform:
Vorkurs
• wpf: Wahlfach
• wpf:
• wpf:
• plz: D-25970
• geoBreite:
-37.366800
• geoLaenge:
-36.139400
Pflicht-
• plz: D-93754
• geoBreite:
-46.817700
• geoLaenge:
-36.168500
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
anrede: Herr
vorname: Borck
nachname: Teufel
geburtsDatum: 199503-06
• bezeichnung:
formale Sprachen
• arbeitsform:
Hauptseminar
• bezeichnung:
Gestaltung
• plz: D-25970
• geoBreite:
-37.366800
• arbeitsform:
Kolloqium
• geoLaenge:
-36.139400
• wpf: Gast
• wpf:
fach
anrede: Frau
vorname: Branwen
nachname: Schulte
geburtsDatum: 199607-19
anrede: Frau
vorname: Branwen
nachname: Schulte
geburtsDatum: 198710-23
anrede: Herr
vorname: Gerasim
nachname: Quack
geburtsDatum:
Pflicht-
• bezeichnung:
BWL
• bezeichnung:
Mechanik
• arbeitsform:
Proseminar
• arbeitsform:
Seminar
• wpf:
fach
• wpf: Wahlfach
Pflicht-
• arbeitsform:
Hauptseminar
• wpf:
fach
• bezeichnung:
Forstwirtschaft
• arbeitsform:
Tutorium
• arbeitsform:
Kolloqium
• arbeitsform:
Kolloqium
• wpf:
• wpf:
• wpf: Wahlfach
• bezeichnung:
Analysis 1
• bezeichnung:
Lineare Algebra
• bezeichnung:
Java
• arbeitsform:
Hauptseminar
• arbeitsform:
Praktikum
• wpf: Wahlfach
Pflicht-
• plz: D-31281
• geoBreite:
-40.981100
• geoLaenge:
-43.268900
Pflicht-
• bezeichnung:
Physik II
• arbeitsform:
Kolloqium
anrede: Frau
vorname: Gondeline
nachname: Bert
geburtsDatum: 198903-20
• bezeichnung:
Lineare Algebra
• bezeichnung:
VWL
• wpf:
fach
12
• plz: D-80765
• geoBreite:
-19.459100
• geoLaenge:
-25.092300
• plz: D-93754
• geoBreite:
-46.817700
• geoLaenge:
-36.168500
• wpf:
• bezeichnung:
Physik II
• bezeichnung:
Stochastik
• bezeichnung:
VWL
• arbeitsform:
Kolloqium
• arbeitsform:
Vorkurs
• arbeitsform:
Tutorium
• wpf: Gast
• wpf: Wahlfach
• wpf:
fach
Pflicht-
• plz: D-80765
• geoBreite:
-19.459100
• geoLaenge:
-25.092300
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
anrede: Frau
vorname: Heimgard
nachname: Wunder
geburtsDatum: 199709-21
• bezeichnung:
Drucktechnik
• arbeitsform:
Vorlesung
• wpf: Wahlfach
• bezeichnung:
Simulation
Methods
in
Physics II
• arbeitsform:
Vorlesung
• wpf:
fach
anrede: Herr
vorname: Jack
nachname: Mortimar
Hahn
geburtsDatum: 198811-17
anrede: Frau
vorname: Jocelin
nachname: Leon Bardot
geburtsDatum: 199702-08
• arbeitsform:
Vorlesung
• wpf: Wahlfach
• bezeichnung:
Biochemie
• bezeichnung:
VWL
• bezeichnung:
Statistik I
• arbeitsform:
Kolloqium
• arbeitsform:
Tutorium
• arbeitsform:
Vorlesung
• wpf: Wahlfach
• wpf: Gast
• wpf: Gast
• bezeichnung:
Maschinenbau
• bezeichnung:
VWL
• bezeichnung:
Mechanik
• arbeitsform:
Vorbereitungskurs
• arbeitsform:
Tutorium
• arbeitsform:
Seminar
• wpf:
• wpf:
fach
• bezeichnung:
Lineare Algebra
• bezeichnung:
Stochastik
• bezeichnung:
English I
• arbeitsform:
Tutorium
• plz: D-93754
• geoBreite:
-46.817700
• geoLaenge:
-36.168500
Pflicht-
• wpf:
anrede: Herr
vorname: Joseph
nachname: Cheree
geburtsDatum: 199006-26
• bezeichnung:
Statistik I
13
• arbeitsform:
Hauptseminar
• wpf:
• wpf: Gast
Pflicht-
• arbeitsform:
Vorkurs
• wpf:
fach
Pflicht-
• plz: D-31281
• geoBreite:
-40.981100
• geoLaenge:
-43.268900
• plz: D-91256
• geoBreite:
-19.425000
• geoLaenge:
-39.261200
• plz: D-31281
• geoBreite:
-40.981100
• geoLaenge:
-43.268900
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
anrede: Frau
vorname: Mechtild
nachname: Lehner
geburtsDatum: 199709-08
• bezeichnung:
Mechanik
• arbeitsform:
Seminar
• wpf: Wahlfach
• bezeichnung:
Simulation
Methods
in
Physics II
• arbeitsform:
Hauptseminar
• bezeichnung:
Psychologie
• arbeitsform:
Seminar
14
• plz: D-91256
• geoBreite:
-19.425000
• geoLaenge:
-39.261200
• wpf:
• wpf: Wahlfach
anrede: Herr
vorname: Ruthard Alfrad
nachname: Nieminen
geburtsDatum: 199605-10
• bezeichnung:
Drucktechnik
• bezeichnung:
Stochastik
• bezeichnung:
Maschinenbau
• arbeitsform:
Vorlesung
• arbeitsform:
Vorkurs
• arbeitsform:
Vorbereitungskurs
• wpf:
• wpf: Gast
• plz: D-31281
• geoBreite:
-40.981100
• geoLaenge:
-43.268900
• wpf:
anrede: Herr
vorname: Sieghelm
nachname: Schilling
geburtsDatum: 198910-23
• bezeichnung:
Analysis 1
• bezeichnung:
VWL
• arbeitsform:
Kolloqium
• arbeitsform:
Tutorium
• wpf:
• wpf:
• bezeichnung:
Lineare Algebra
• arbeitsform:
Hauptseminar
• wpf:
fach
anrede: Herr
vorname: Sieghelm
nachname: Schilling
geburtsDatum: 198912-07
• bezeichnung:
Biochemie
• arbeitsform:
Kolloqium
• bezeichnung:
formale Sprachen
• arbeitsform:
Hauptseminar
• wpf: Wahlfach
• wpf: Gast
• geoBreite:
-19.425000
• geoLaenge:
-39.261200
Pflicht-
• bezeichnung:
Forstwirtschaft
• arbeitsform:
Kolloqium
• wpf:
fach
• plz: D-91256
Pflicht-
• plz: D-33229
• geoBreite:
-45.098800
• geoLaenge:
-24.101100
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
anrede: Frau
vorname: Sieglinde
nachname: Schmidtke
geburtsDatum: 198901-12
• bezeichnung:
Simulation
Methods
in
Physics II
• arbeitsform:
Vorlesung
• wpf:
fach
anrede: Herr
vorname: Uke
nachname: Schmieder
geburtsDatum: 198912-08
• bezeichnung:
BWL
• bezeichnung:
Psychologie
• arbeitsform:
Proseminar
• arbeitsform:
Seminar
• wpf:
fach
• wpf:
fach
Pflicht-
Pflicht-
15
• plz: D-91256
• geoBreite:
-19.425000
• geoLaenge:
-39.261200
Pflicht-
• bezeichnung:
Gestaltung
• bezeichnung:
BWL
• bezeichnung:
Stochastik
• arbeitsform:
Kolloqium
• arbeitsform:
Proseminar
• arbeitsform:
Vorkurs
• wpf:
fach
• wpf:
• wpf:
fach
Pflicht-
Pflicht-
• plz: D-25970
• geoBreite:
-37.366800
• geoLaenge:
-36.139400
Tabelle 1.1.0.1: Kommiliton 0NF
Diese Tabelle ist offensichtlich problematisch: Schon auf den ersten Blick fällt auf, dass die Limitierung auf drei Veranstaltungen pro Student willkürlich ist, Was tun Wir mit einem Student, der vier oder mehr Veranstaltungen besucht? Einfach immer
mehr Veranstaltung–Spalten einfügen, von denen dann die meisten leer bleiben?
Ferner ist der vollständiger Name (Anrede, Nachname und Vorname) jedes Student steht in einer einzigen Spalte. Wir
sollten Nachname, Vorname, eventuell Namenszusatz (. . . van der . . . ) in ein eigenes Feld trennen, also Vergrösserung der Zahl
der Spalten. Wird beim Namenszusatz auf eine eigene Spalte verzichtet, so kann es später zu inkonsistenten Einträgen kommen.
Einmal wird der Vorname um den Namenszusatz ergänzt (Schmidt, Sybille van der), andere Varianten sind (van der Schmidt,
Sybille) oder (Schmidt van der, Sybille). In sämtlichen Fällen können bei Suchabfragen nach (Schmidt) oder (Sybille) Zeilen
ignoriert werden, so dass der Datensatz nicht gefunden und ein zweites Mal eingetragen wird.
Es gibt verschiedenen Personen mit dem gleichen Vornamen und Nachname
Es ist auch üblich, dass viele Vorname auch als Nachname vorkommen, wie etwa Alexander Albrecht, Julia Otto, Thomas Christian, Frank Walter, Walter Otto, Ralf Bastian
Bei vielen Personen (z.B. aus Südamerika) besteht der Name aus mehreren Wörtern, so dass fremde nicht den Vorname
und den Nachname eingrenzen können. Beispiele sind: Poliesportiu Juan Antonio Samaranch, Joan Antoni Samaranch i Torelló,
Samaranch Garcia Perez Del Ingerto Jose Luis, Jose Luis Resendez, Gabriel García Márquez, Javier Pérez de Cuéllar, Alejandro
González Iñárritu
Es gibt auch viele Geschlechtslose Namen (Kim, Michelle, Sascha, René, Maria, Robin , Ashley, Avery, Alex, Sam, Eike)
Einige Namen enthalten Sonderzeichen: Dragoş Grigore, Matúš Kozác̆ikký, Zdzisław Styczeń, Gergő Lovrencsics, Noël
Le Graët, Łukasz Podolski, Bärbel, Käthe, Lätizia, Jürgen, Jörg, Eyüp, Gül, Jérôme, Léo, Codruţa
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
16
1.2 die erste Normalform 1NF
Die Regeln für die erste Normalform lauten (aus der Sprache der Theoretiker in verständliches Deutsch übersetzt):
1. Spalten mit gleichartigem Inhalt müssen entfernt werden. Wiederholende Gruppen, also mehrwertige Relationen, sind
in eine eigene Tabelle auszulagern und zu verknüpfen. Bsp: Schauspieler zu einem Film, an einem Projekt beteiligte
Mitarbeiter, Etagen in einem Haus, Zimmer einer Etage: Eine handschriftliche Aufzeichnung würde die beteiligten Personen / Etagen / Zimmer der Reihe nach aufführen, sie damit alle in eine Zelle schreiben. Die Lösung, mehrere Spalten
für mehrere Teilnehmer usw. anzufügen, ist ungeeignet, da entweder zu viele Zellen leer bleiben oder zu wenige Spalten vorhanden sind. Also wird eine Detailtabelle (Mitwirkende, Projektbeteiligte, Etagen, Zimmer) erstellt, die in einer
n:1 - Beziehung zur Grundtabelle (Filme, Projekte, Häuser, Etagen) steht. Die Gruppe dieser gleichartig strukturierten
Detail-Informationen wird in diese Detail-Tabelle ausgelagert.
2. Attribute müssen atomar sein
✄
3. Jeder Datensatz muss durch einen so genannten Primärschlüssel (mit pp gekennzeichnet) eindeutig identifizierbar sein.
✂ ✁
Die erste Regel bezieht sich offensichtlich auf die Spalten Veranstaltungen und Semester der Tabelle 1.1.0.1 auf Seite 15
Die zweite Regel bezieht sich offensichtlich auf die Spalte Student. Die wird atomarisiert: nur atomare Werte zulassen
Als Primärschlüssel dient das Paar KommilitonID und VeranstaltungID
✄
pp
✂ ✁
1019
✄
pp
✂ ✁
1019
✄
pp
✂ ✁
1019
✄
pp
✂ ✁
1018
✄
pp
✂ ✁
1018
✄
pp
✂ ✁
1018
✄
pp
✂ ✁
1004
✄
pp
✂ ✁
1004
✄
pp
✂ ✁
1011
anrede
vorname
nachname
Herr
Adhelm
Kirch
Herr
Adhelm
Herr
geburtsDatum
Veranstaltung
ID
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Publikation
ID
✄
pp
✂ ✁
1005
✄
pp
✂ ✁
1005
✄
pp
✂ ✁
1005
✄
pp
✂ ✁
1015
✄
pp
✂ ✁
1015
✄
pp
✂ ✁
1015
bezeichnung
arbeitsform
wpf
plz
geoBreite
geoLaenge
✄
pp 21
✂ ✁
Gestaltung
Kolloqium
Gast
D91256
19.425000
39.261200
Kirch
✄
pp 30
✂ ✁
Stochastik
Vorkurs
Wahlfach
D91256
19.425000
39.261200
Adhelm
Kirch
✄
pp 33
✂ ✁
Psychologie
Seminar
Wahlfach
D91256
19.425000
39.261200
Herr
Apo
Kohlund
1991-09-22
✄
pp 11
✂ ✁
Drucktechnik
Vorlesung
D25970
37.366800
36.139400
Herr
Apo
Kohlund
1991-09-22
✄
pp 19
✂ ✁
Mechanik
Seminar
Pflichtfach
D25970
37.366800
36.139400
Herr
Apo
Kohlund
1991-09-22
✄
pp 28
✂ ✁
Simulation Methods in Physics II
Hauptseminar
Gast
D25970
37.366800
36.139400
Frau
Ayan Sibel
Maika
1992-12-11
✄
pp 13
✂ ✁
Biochemie
Kolloqium
Gast
D25970
37.366800
36.139400
Frau
Ayan Sibel
Maika
1992-12-11
✄
pp 23
✂ ✁
formale Sprachen
Hauptseminar
D25970
37.366800
36.139400
Frau
Ayan Sibel
Maika
1992-12-11
✄
pp 31
✂ ✁
Maschinenbau
Vorbereitungskurs
Pflichtfach
D25970
37.366800
36.139400
Herr
Bent
Chevi
1997-10-08
✄
pp 15
✂ ✁
VWL
Tutorium
Wahlfach
D93754
46.817700
36.168500
Herr
Bent
Chevi
1997-10-08
✄
pp 21
✂ ✁
Gestaltung
Kolloqium
D93754
46.817700
36.168500
Herr
Bent
Chevi
1997-10-08
✄
pp 30
✂ ✁
Stochastik
Vorkurs
D93754
46.817700
36.168500
Herr
Borck
Teufel
1995-03-06
✄
pp 23
✂ ✁
formale Sprachen
Hauptseminar
Pflichtfach
D25970
37.366800
36.139400
Herr
Borck
Teufel
1995-03-06
✄
pp 21
✂ ✁
Gestaltung
Kolloqium
Gast
D25970
37.366800
36.139400
Frau
Branwen
Schulte
1996-07-19
✄
pp 16
✂ ✁
BWL
Proseminar
Pflichtfach
D31281
40.981100
43.268900
17
✄
pp
✂ ✁
1009
✄
pp
✂ ✁
1001
✄
pp
✂ ✁
1001
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
pp
✂ ✁
1011
✄
pp
✂ ✁
1011
✄
pp
✂ ✁
1002
✄
pp
✂ ✁
1002
✄
pp
✂ ✁
1002
✄
pp
✂ ✁
1016
✄
pp
✂ ✁
1016
✄
pp
✂ ✁
1016
✄
pp
✂ ✁
1012
✄
pp
✂ ✁
1012
✄
pp
✂ ✁
1012
✄
pp
✂ ✁
1009
✄
pp
✂ ✁
1009
Frau
Branwen
Schulte
1996-07-19
✄
pp 19
✂ ✁
Mechanik
Seminar
Wahlfach
D31281
40.981100
43.268900
Frau
Branwen
Schulte
1996-07-19
✄
pp 22
✂ ✁
Lineare Algebra
Hauptseminar
Pflichtfach
D31281
40.981100
43.268900
Frau
Branwen
Schulte
1987-10-23
✄
pp 15
✂ ✁
VWL
Tutorium
D80765
19.459100
25.092300
Frau
Branwen
Schulte
1987-10-23
✄
pp 20
✂ ✁
Physik II
Kolloqium
D80765
19.459100
25.092300
Frau
Branwen
Schulte
1987-10-23
✄
pp 27
✂ ✁
Forstwirtschaft
Kolloqium
Wahlfach
D80765
19.459100
25.092300
Herr
Gerasim
Quack
✄
pp 12
✂ ✁
Analysis 1
Kolloqium
Pflichtfach
D93754
46.817700
36.168500
Herr
Gerasim
Quack
✄
pp 22
✂ ✁
Lineare Algebra
Hauptseminar
D93754
46.817700
36.168500
Herr
Gerasim
Quack
✄
pp 29
✂ ✁
Java
Praktikum
Wahlfach
D93754
46.817700
36.168500
Frau
Gondeline
Bert
1989-03-20
✄
pp 20
✂ ✁
Physik II
Kolloqium
Gast
D80765
19.459100
25.092300
Frau
Gondeline
Bert
1989-03-20
✄
pp 30
✂ ✁
Stochastik
Vorkurs
Wahlfach
D80765
19.459100
25.092300
Frau
Gondeline
Bert
1989-03-20
✄
pp 15
✂ ✁
VWL
Tutorium
Pflichtfach
D80765
19.459100
25.092300
Frau
Heimgard
Wunder
1997-09-21
✄
pp 11
✂ ✁
Drucktechnik
Vorlesung
Wahlfach
D93754
46.817700
36.168500
Frau
Heimgard
Wunder
1997-09-21
✄
pp 14
✂ ✁
Simulation Methods in Physics II
Vorlesung
Pflichtfach
D93754
46.817700
36.168500
Frau
Heimgard
Wunder
1997-09-21
✄
pp 24
✂ ✁
Statistik I
Vorlesung
Wahlfach
D93754
46.817700
36.168500
Herr
Jack
Mortimar
Hahn
1988-11-17
✄
pp 13
✂ ✁
Biochemie
Kolloqium
Wahlfach
D31281
40.981100
43.268900
Herr
Jack
Mortimar
Hahn
1988-11-17
✄
pp 15
✂ ✁
VWL
Tutorium
Gast
D31281
40.981100
43.268900
18
✄
pp
✂ ✁
1014
✄
pp
✂ ✁
1008
✄
pp
✂ ✁
1008
✄
pp
✂ ✁
1008
✄
pp
✂ ✁
1007
✄
pp
✂ ✁
1007
✄
pp
✂ ✁
1007
Herr
Jack
Mortimar
Hahn
1988-11-17
✄
pp 24
✂ ✁
Statistik I
Vorlesung
Frau
Jocelin
Leon
Bardot
1997-02-08
✄
pp 31
✂ ✁
Maschinenbau
Frau
Jocelin
Leon
Bardot
1997-02-08
✄
pp 15
✂ ✁
Frau
Jocelin
Leon
Bardot
1997-02-08
Herr
Joseph
Cheree
Herr
Joseph
Herr
Gast
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
pp
✂ ✁
1001
✄
pp
✂ ✁
1017
✄
pp
✂ ✁
1017
✄
pp
✂ ✁
1017
✄
pp
✂ ✁
1013
✄
pp
✂ ✁
1013
✄
pp
✂ ✁
1013
✄
pp
✂ ✁
1014
✄
pp
✂ ✁
1014
D31281
40.981100
43.268900
Vorbereitungskurs
D91256
19.425000
39.261200
VWL
Tutorium
D91256
19.425000
39.261200
✄
pp 19
✂ ✁
Mechanik
Seminar
D91256
19.425000
39.261200
1990-06-26
✄
pp 18
✂ ✁
English I
Tutorium
D31281
40.981100
43.268900
Cheree
1990-06-26
✄
pp 22
✂ ✁
Lineare Algebra
Hauptseminar
Gast
D31281
40.981100
43.268900
Joseph
Cheree
1990-06-26
✄
pp 30
✂ ✁
Stochastik
Vorkurs
Pflichtfach
D31281
40.981100
43.268900
Frau
Mechtild
Lehner
1997-09-08
✄
pp 19
✂ ✁
Mechanik
Seminar
Wahlfach
D91256
19.425000
39.261200
Frau
Mechtild
Lehner
1997-09-08
✄
pp 28
✂ ✁
Simulation Methods in Physics II
Hauptseminar
Wahlfach
D91256
19.425000
39.261200
Frau
Mechtild
Lehner
1997-09-08
✄
pp 33
✂ ✁
Psychologie
Seminar
D91256
19.425000
39.261200
Herr
Ruthard
Alfrad
Nieminen
1996-05-10
✄
pp 11
✂ ✁
Drucktechnik
Vorlesung
D31281
40.981100
43.268900
Herr
Ruthard
Alfrad
Nieminen
1996-05-10
✄
pp 30
✂ ✁
Stochastik
Vorkurs
D31281
40.981100
43.268900
Herr
Ruthard
Alfrad
Nieminen
1996-05-10
✄
pp 31
✂ ✁
Maschinenbau
Vorbereitungskurs
D31281
40.981100
43.268900
Herr
Sieghelm
Schilling
1989-10-23
✄
pp 12
✂ ✁
Analysis 1
Kolloqium
D91256
19.425000
39.261200
Herr
Sieghelm
Schilling
1989-10-23
✄
pp 15
✂ ✁
VWL
Tutorium
D91256
19.425000
39.261200
Herr
Sieghelm
Schilling
1989-10-23
✄
pp 22
✂ ✁
Lineare Algebra
Hauptseminar
D91256
19.425000
39.261200
Pflichtfach
Gast
Pflichtfach
19
✄
pp
✂ ✁
1010
✄
pp
✂ ✁
1010
✄
pp
✂ ✁
1006
✄
pp
✂ ✁
1006
✄
pp
✂ ✁
1006
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
pp
✂ ✁
1003
✄
pp
✂ ✁
1003
✄
pp
✂ ✁
1003
✄
pp
✂ ✁
1010
Herr
Sieghelm
Schilling
1989-12-07
✄
pp 13
✂ ✁
Biochemie
Kolloqium
Wahlfach
D33229
45.098800
24.101100
Herr
Sieghelm
Schilling
1989-12-07
✄
pp 23
✂ ✁
formale Sprachen
Hauptseminar
Gast
D33229
45.098800
24.101100
Herr
Sieghelm
Schilling
1989-12-07
✄
pp 27
✂ ✁
Forstwirtschaft
Kolloqium
Pflichtfach
D33229
45.098800
24.101100
Frau
Sieglinde
Schmidtke 1989-01-12
✄
pp 14
✂ ✁
Simulation Methods in Physics II
Vorlesung
Pflichtfach
D91256
19.425000
39.261200
Frau
Sieglinde
Schmidtke 1989-01-12
✄
pp 16
✂ ✁
BWL
Proseminar
Pflichtfach
D91256
19.425000
39.261200
Frau
Sieglinde
Schmidtke 1989-01-12
✄
pp 33
✂ ✁
Psychologie
Seminar
Pflichtfach
D91256
19.425000
39.261200
Herr
Uke
Schmieder 1989-12-08
✄
pp 21
✂ ✁
Gestaltung
Kolloqium
Pflichtfach
D25970
37.366800
36.139400
Herr
Uke
Schmieder 1989-12-08
✄
pp 16
✂ ✁
BWL
Proseminar
D25970
37.366800
36.139400
Herr
Uke
Schmieder 1989-12-08
✄
pp 30
✂ ✁
Stochastik
Vorkurs
D25970
37.366800
36.139400
Tabelle 1.2.0.1: Kommiliton 1NF
Pflichtfach
20
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
21
Diese Relation ist jedoch redundant, weil die Daten zu den Veranstaltungen für jeden Student (der die Veranstaltung besucht)
repliziert werden. Dadurch können Anomalien auftreten:
• Update–Anomalien: wenn man die Bezeichnung einer Veranstaltung ändern will, muss man diese Änderungen an alle
Tupel für Studenten dieser Veranstaltung weitergeben. Andersfalls wird die Datenbank inkonsistent.
• Einfüge–Anomalien: nehmen wir an, dass einen Student namens Eppler in der Tabelle 1.2.0.1 auf Seite 20 aufgenommen
werden soll, man kann dies in der Tabelle 1.2.0.1 auf Seite 20 einfügen, wenn es eine Veranstaltung gibt, die vom Student
Eppler besucht wird.
• Lösch–Anomalien: Ein der grössten Probleme der Tabelle 1.2.0.1 auf Seite 20 besteht darin, dass sie für die Studenten
ohne Veranstaltungen keine Daten enthält. Würde man die Veranstaltung mit der Bezeichnung Mathematik 1 löschen,
würde alle Informationen über die Studenten, die gerade diese Veranstaltung besuchten, verloren gehen.
1. Minimaler Einsatz von Null–Werten. Für ein Veranstaltung kann kein Student eingetragen werden. Selbst wenn man von der
Redundanz absieht, sind Null–Werte in relationalen Datenbanken problematisch, weil ihre exakte Bedeutung nicht zu ermitteln
ist. Gibt es für diese Veranstaltung keinen Student, oder ist der Name des Student einfach unbekannt ist, so das das Attribut
hier keine Bedeutung hat? Diese Schwierigkeiten bei der Interpretation lassen es wünschenswert erscheinen, den Einsatz von
Null–Werten zu minimieren.
2. Prozessdaten sind Daten, die durch einen Rechenprozess aus gespeicherten Attributen gewonnen werden. Folgendes
einfaches Beispiel: Neben dem Geburtsdatum wird auch noch das Alter gespeichert. Spätestens nach einem Jahr ist dieser
Eintrag falsch. Deshalb sollten diese Prozessdaten bei jeder Abfrage neu errechnet werden.
Das Problem mit der Tabelle 1.2.0.1 auf Seite 20 ist vor allem darauf zurückzuführen, dass die Tabelle 1.2.0.1 auf Seite 20 mit mehr als eine Sache (einer Entity) gleichzeitig zu tun hat. Die Tabelle 1.2.0.1 auf Seite 20 verzeichnet einerseits die
Veranstaltungen und andererseits die Studenten, die die Veranstaltungen besuchen. Man kann sich intuitiv dafür entscheiden,
die Daten in zwei Relationen umzusetzen: Auf der einen Seite die Relation Veranstaltung, die die Informationen zu allen
Veranstaltungen enthält, und auf der anderen Seite die Relation Studenten, die die Veranstaltungen besuchen.
1.3 die zweite Normalform 2NF
Eine Relation ist in der Zweiten Normalform, wenn sie in der Ersten Normalform ist und jedes Nicht–Schlüsselattribut von
jedem Schlüsselkandidaten vollständig funktional abhängig ist.
Eigentlich spielt die 2NF nur dann eine Rolle, wenn der Primärschlüssel einer Tabelle aus mehreren Spalten zusammengesetzt ist. Besteht der Primärschlüssel nur aus einer Spalte, so erfüllt die Tabelle immer die 2NF.
Die zu speichernden Daten sind so in Tabellen aufzuteilen, dass jedes Nichtschlüsselattribut voll von einem Primärschlüssel
abhängig ist
Studenten und Veranstaltungen werden in eigenen Tabellen ausgelagert.
Nun aber weis man nicht: Welche Student welche Veranstaltung besucht.
✄
Daher sollte man ein sog. Fremdschlüssel einführen. Man würde „Fremdschlüssel (mit ✂F ✁ gekennzeichnet)“wohl besser
mit „Querverweis“übersetzen: Es handelt sich ganz einfach um einen Verweis auf eine Zeile in einer anderen Tabelle. man erhält
die folgenden Tabellen
Publikation
ID
anrede
vorname
nachname
geburtsDatum
plz
geoBreite
geoLaenge
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂P ✁
1005
✄
✂P ✁
1015
✄
✂P ✁
1019
✄
✂P ✁
1018
✄
✂P ✁
1004
✄
✂P ✁
1011
✄
✂P ✁
1002
✄
✂P ✁
1016
✄
✂P ✁
1012
✄
✂P ✁
1009
✄
✂P ✁
1001
✄
✂P ✁
1017
✄
✂P ✁
1013
✄
✂P ✁
1014
✄
✂P ✁
1008
✄
✂P ✁
1007
✄
✂P ✁
1003
✄
✂P ✁
1010
✄
✂P ✁
1006
Herr
Adhelm
Kirch
D91256
19.425000
39.261200
Herr
Apo
Kohlund
1991-09-22
D25970
37.366800
36.139400
Frau
Ayan Sibel
Maika
1992-12-11
D25970
37.366800
36.139400
Herr
Bent
Chevi
1997-10-08
D93754
46.817700
36.168500
Herr
Borck
Teufel
1995-03-06
D25970
37.366800
36.139400
Frau
Branwen
Schulte
1996-07-19
D31281
40.981100
43.268900
Frau
Branwen
Schulte
1987-10-23
D80765
19.459100
25.092300
Herr
Gerasim
Quack
D93754
46.817700
36.168500
Frau
Gondeline
Bert
1989-03-20
D80765
19.459100
25.092300
Frau
Heimgard
Wunder
1997-09-21
D93754
46.817700
36.168500
Herr
Jack
Mortimar
Hahn
1988-11-17
D31281
40.981100
43.268900
Frau
Jocelin
Leon
Bardot
1997-02-08
D91256
19.425000
39.261200
Herr
Joseph
Cheree
1990-06-26
D31281
40.981100
43.268900
Frau
Mechtild
Lehner
1997-09-08
D91256
19.425000
39.261200
Herr
Ruthard
Alfrad
Nieminen
1996-05-10
D31281
40.981100
43.268900
Herr
Sieghelm
Schilling
1989-10-23
D91256
19.425000
39.261200
Herr
Sieghelm
Schilling
1989-12-07
D33229
45.098800
24.101100
Frau
Sieglinde
Schmidtke 1989-01-12
D91256
19.425000
39.261200
Herr
Uke
Schmieder 1989-12-08
D25970
37.366800
36.139400
Tabelle 1.3.0.1: Kommiliton Ort 2NF
Veranstaltung ID
✄
P 21
✄✂ ✁
P 30
✄✂ ✁
P 33
✄✂ ✁
P 11
✄✂ ✁
✂P ✁19
bezeichnung
arbeitsform
Gestaltung
Kolloqium
Stochastik
Vorkurs
Psychologie
Seminar
Drucktechnik
Vorlesung
Mechanik
Seminar
22
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂P ✁28
✄
P 13
✄✂ ✁
P 23
✄✂ ✁
P 31
✄✂ ✁
✂✄P ✁15
✂✄P ✁16
✂✄P ✁22
✂✄P ✁20
✂✄P ✁27
P 12
✄✂ ✁
P 29
✄✂ ✁
✂P ✁14
✄
✂✄P ✁24
✂P ✁18
Simulation Methods in Physics II
Hauptseminar
Biochemie
Kolloqium
formale Sprachen
Hauptseminar
Maschinenbau
Vorbereitungs-kurs
VWL
Tutorium
BWL
Proseminar
Lineare Algebra
Hauptseminar
Physik II
Kolloqium
Forstwirtschaft
Kolloqium
Analysis 1
Kolloqium
Java
Praktikum
Simulation Methods in Physics II
Vorlesung
Statistik I
Vorlesung
English I
Tutorium
Tabelle 1.3.0.2: Veranstaltung 2NF
Besucht ID
✄
✂✄P ✁1000101
✂✄P ✁1000102
P 1000103
✄✂ ✁
P 1000201
✄✂ ✁
P 1000202
✄✂ ✁
P 1000203
✄✂ ✁
✂✄P ✁1000301
✂✄P ✁1000302
✂✄P ✁1000303
✂✄P ✁1000401
P 1000402
✄✂ ✁
P 1000403
✄✂ ✁
P 1000501
✄✂ ✁
P 1000502
✄✂ ✁
✂✄P ✁1000601
✂✄P ✁1000602
✂✄P ✁1000603
✂✄P ✁1000701
✂✄P ✁1000702
P 1000703
✄✂ ✁
P 1000801
✄✂ ✁
✂P ✁1000802
kommilitonID
✄
✂✄F ✁1005
✂✄F ✁1005
F 1005
✄✂ ✁
F 1015
✄✂ ✁
F 1015
✄✂ ✁
F 1015
✄✂ ✁
✂✄F ✁1019
✂✄F ✁1019
✂✄F ✁1019
✂✄F ✁1018
F 1018
✄✂ ✁
F 1018
✄✂ ✁
F 1004
✄✂ ✁
F 1004
✄✂ ✁
✂✄F ✁1011
✂✄F ✁1011
✂✄F ✁1011
✂✄F ✁1002
✂✄F ✁1002
F 1002
✄✂ ✁
F 1016
✄✂ ✁
✂F ✁1016
Veranstaltung ID
✄
✂✄F ✁21
✂✄F ✁30
F 33
✄✂ ✁
F 11
✄✂ ✁
F 19
✄✂ ✁
F 28
✄✂ ✁
✂✄F ✁13
✂✄F ✁23
✂✄F ✁31
✂✄F ✁15
F 21
✄✂ ✁
F 30
✄✂ ✁
F 23
✄✂ ✁
F 21
✄✂ ✁
✂✄F ✁16
✂✄F ✁19
✂✄F ✁22
✂✄F ✁15
✂✄F ✁20
F 27
✄✂ ✁
F 12
✄✂ ✁
✂F ✁22
wpf
Gast
Wahlfach
Wahlfach
Pflichtfach
Gast
Gast
Pflichtfach
Wahlfach
Pflichtfach
Gast
Pflichtfach
Wahlfach
Pflichtfach
Wahlfach
Pflichtfach
23
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂✄P ✁1000803
P 1000901
✄✂ ✁
P 1000902
✄✂ ✁
P 1000903
✄✂ ✁
P 1001001
✄✂ ✁
✂✄P ✁1001002
✂✄P ✁1001003
✂✄P ✁1001101
✂✄P ✁1001102
P 1001103
✄✂ ✁
P 1001201
✄✂ ✁
P 1001202
✄✂ ✁
P 1001203
✄✂ ✁
P 1001301
✄✂ ✁
✂✄P ✁1001302
✂✄P ✁1001303
✂✄P ✁1001401
✂✄P ✁1001402
P 1001403
✄✂ ✁
P 1001501
✄✂ ✁
P 1001502
✄✂ ✁
P 1001503
✄✂ ✁
✂✄P ✁1001601
✂✄P ✁1001602
✂✄P ✁1001603
✂✄P ✁1001701
✂✄P ✁1001702
P 1001703
✄✂ ✁
P 1001801
✄✂ ✁
P 1001802
✄✂ ✁
P 1001803
✄✂ ✁
✂✄P ✁1001901
✂✄P ✁1001902
✂P ✁1001903
✄
✂✄F ✁1016
F 1012
✄✂ ✁
F 1012
✄✂ ✁
F 1012
✄✂ ✁
F 1009
✄✂ ✁
✂✄F ✁1009
✂✄F ✁1009
✂✄F ✁1001
✂✄F ✁1001
F 1001
✄✂ ✁
F 1017
✄✂ ✁
F 1017
✄✂ ✁
F 1017
✄✂ ✁
F 1013
✄✂ ✁
✂✄F ✁1013
✂✄F ✁1013
✂✄F ✁1014
✂✄F ✁1014
F 1014
✄✂ ✁
F 1008
✄✂ ✁
F 1008
✄✂ ✁
F 1008
✄✂ ✁
✂✄F ✁1007
✂✄F ✁1007
✂✄F ✁1007
✂✄F ✁1003
✂✄F ✁1003
F 1003
✄✂ ✁
F 1010
✄✂ ✁
F 1010
✄✂ ✁
F 1010
✄✂ ✁
✂✄F ✁1006
✂✄F ✁1006
✂F ✁1006
✄
✂✄F ✁29
F 20
✄✂ ✁
F 30
✄✂ ✁
F 15
✄✂ ✁
F 11
✄✂ ✁
✂✄F ✁14
✂✄F ✁24
✂✄F ✁13
✂✄F ✁15
F 24
✄✂ ✁
F 31
✄✂ ✁
F 15
✄✂ ✁
F 19
✄✂ ✁
F 18
✄✂ ✁
✂✄F ✁22
✂✄F ✁30
✂✄F ✁19
✂✄F ✁28
F 33
✄✂ ✁
F 11
✄✂ ✁
F 30
✄✂ ✁
F 31
✄✂ ✁
✂✄F ✁12
✂✄F ✁15
✂✄F ✁22
✂✄F ✁13
✂✄F ✁23
F 27
✄✂ ✁
F 14
✄✂ ✁
F 16
✄✂ ✁
F 33
✄✂ ✁
✂✄F ✁21
✂✄F ✁16
✂F ✁30
24
Wahlfach
Gast
Wahlfach
Pflichtfach
Wahlfach
Pflichtfach
Wahlfach
Wahlfach
Gast
Gast
Pflichtfach
Gast
Pflichtfach
Wahlfach
Wahlfach
Gast
Pflichtfach
Wahlfach
Gast
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
Tabelle 1.3.0.3: Besucht 2NF
1.4 die dritte Normalform 3NF
Offensichtlich lässt sich die geographische Breite und Länge aus der PLZ bestimmen. Das Problem ist hierbei wieder Datenredundanz. Wird zum Beispiel ein neu Student mit einem existierenden PLZ eingeführt, so wird die geographische Breite und
Länge redundant gespeichert.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
25
Die 3NF besagt: Spalten, die nicht in unmittelbarer Abhängigkeit zum Primärschlüssel einer Tabelle stehen, müssen eliminiert werden (also in eine eigene Tabelle ausgelagert werden). In der Tabelle Kommiliton 2NF hängen die Spalten Stadt und
Land von der Spalte PLZ ab, die wiederum von Primärschlüssel KommilitonID abhängt. Städte und Länder sind von der Liste
der Studenten unabhängig und sollten daher getrennt werden. Natürlich soll auch weiterhin bei jeder Student vermerkt werden,
in welchem Stadt (und in welchem Land) er wohnt – aber dazu muss nicht jedes Mal die ganze Stadt genannt werden, es reicht
ein Fremdschlüssel (also ein Verweis). Die Tabelle Kommiliton 2NF wird in zwei Tabellen aufgeteilt:
Publi-kation ID
✄
P 1005
✄✂ ✁
P 1015
✄✂ ✁
P 1019
✄✂ ✁
P 1018
✄✂ ✁
✂✄P ✁1004
✂✄P ✁1011
✂✄P ✁1002
✂✄P ✁1016
P 1012
✄✂ ✁
P 1009
✄✂ ✁
P 1001
✄✂ ✁
P 1017
✄✂ ✁
✂✄P ✁1013
✂✄P ✁1014
✂✄P ✁1008
✂✄P ✁1007
✂✄P ✁1003
P 1010
✄✂ ✁
✂P ✁1006
anrede
vorname
nachname
geburtsDatum
Herr
Adhelm
Kirch
Herr
Apo
Kohlund
1991-09-22
Frau
Ayan Sibel
Maika
1992-12-11
Herr
Bent
Chevi
1997-10-08
Herr
Borck
Teufel
1995-03-06
Frau
Branwen
Schulte
1996-07-19
Frau
Branwen
Schulte
1987-10-23
Herr
Gerasim
Quack
Frau
Gondeline
Bert
1989-03-20
Frau
Heimgard
Wunder
1997-09-21
Herr
Jack
Mortimar Hahn
1988-11-17
Frau
Jocelin
Leon Bardot
1997-02-08
Herr
Joseph
Cheree
1990-06-26
Frau
Mechtild
Lehner
1997-09-08
Herr
Ruthard Alfrad
Nieminen
1996-05-10
Herr
Sieghelm
Schilling
1989-10-23
Herr
Sieghelm
Schilling
1989-12-07
Frau
Sieglinde
Schmidtke
1989-01-12
Herr
Uke
Schmieder
1989-12-08
Tabelle 1.4.0.1: Kommiliton 3NF
plz
✄
✂✄P ✁D-91256
P D-25970
✄✂ ✁
P D-93754
✄✂ ✁
P D-31281
✄✂ ✁
P D-80765
✄✂ ✁
✂P ✁D-33229
geoBreite
geoLaenge
-19.425000
-39.261200
-37.366800
-36.139400
-46.817700
-36.168500
-40.981100
-43.268900
-19.459100
-25.092300
-45.098800
-24.101100
Tabelle 1.4.0.2: Ort 3NF
Ort
✄
F D-91256
✄✂ ✁
F D-25970
✄✂ ✁
F D-25970
✄✂ ✁
F D-93754
✄✂ ✁
✂✄F ✁D-25970
✂✄F ✁D-31281
✂✄F ✁D-80765
✂✄F ✁D-93754
F D-80765
✄✂ ✁
F D-93754
✄✂ ✁
F D-31281
✄✂ ✁
F D-91256
✄✂ ✁
✂✄F ✁D-31281
✂✄F ✁D-91256
✂✄F ✁D-31281
✂✄F ✁D-91256
✂✄F ✁D-33229
F D-91256
✄✂ ✁
✂F ✁D-25970
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
1.5 kompletter Entwurf der Datenbanken
Publi-kation ID
✄
✂✄P ✁1005
✂✄P ✁1015
✂✄P ✁1019
P 1018
✄✂ ✁
P 1004
✄✂ ✁
P 1011
✄✂ ✁
P 1002
✄✂ ✁
✂✄P ✁1016
✂✄P ✁1012
✂✄P ✁1009
✂✄P ✁1001
P 1017
✄✂ ✁
P 1013
✄✂ ✁
P 1014
✄✂ ✁
P 1008
✄✂ ✁
P 1007
✄✂ ✁
✂✄P ✁1003
✂✄P ✁1010
✂P ✁1006
anrede
vorname
nachname
geburtsDatum
Herr
Adhelm
Kirch
Herr
Apo
Kohlund
1991-09-22
Frau
Ayan Sibel
Maika
1992-12-11
Herr
Bent
Chevi
1997-10-08
Herr
Borck
Teufel
1995-03-06
Frau
Branwen
Schulte
1996-07-19
Frau
Branwen
Schulte
1987-10-23
Herr
Gerasim
Quack
Frau
Gondeline
Bert
1989-03-20
Frau
Heimgard
Wunder
1997-09-21
Herr
Jack
Mortimar Hahn
1988-11-17
Frau
Jocelin
Leon Bardot
1997-02-08
Herr
Joseph
Cheree
1990-06-26
Frau
Mechtild
Lehner
1997-09-08
Herr
Ruthard Alfrad
Nieminen
1996-05-10
Herr
Sieghelm
Schilling
1989-10-23
Herr
Sieghelm
Schilling
1989-12-07
Frau
Sieglinde
Schmidtke
1989-01-12
Herr
Uke
Schmieder
1989-12-08
Tabelle 1.5.0.1: Kommiliton
plz
✄
✂✄P ✁D-91256
✂✄P ✁D-25970
✂✄P ✁D-93754
✂✄P ✁D-31281
P D-80765
✄✂ ✁
✂P ✁D-33229
geoBreite
geoLaenge
-19.425000
-39.261200
-37.366800
-36.139400
-46.817700
-36.168500
-40.981100
-43.268900
-19.459100
-25.092300
-45.098800
-24.101100
Tabelle 1.5.0.2: Ort
Veranstaltung ID
✄
✂✄P ✁21
P 30
✄✂ ✁
P 33
✄✂ ✁
P 11
✄✂ ✁
✂P ✁19
bezeichnung
arbeitsform
Gestaltung
Kolloqium
Stochastik
Vorkurs
Psychologie
Seminar
Drucktechnik
Vorlesung
Mechanik
Seminar
Ort
✄
✂✄F ✁D-91256
✂✄F ✁D-25970
✂✄F ✁D-25970
F D-93754
✄✂ ✁
F D-25970
✄✂ ✁
F D-31281
✄✂ ✁
F D-80765
✄✂ ✁
✂✄F ✁D-93754
✂✄F ✁D-80765
✂✄F ✁D-93754
✂✄F ✁D-31281
F D-91256
✄✂ ✁
F D-31281
✄✂ ✁
F D-91256
✄✂ ✁
F D-31281
✄✂ ✁
F D-91256
✄✂ ✁
✂✄F ✁D-33229
✂✄F ✁D-91256
✂F ✁D-25970
26
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂P ✁28
✄
P 13
✄✂ ✁
P 23
✄✂ ✁
P 31
✄✂ ✁
✂✄P ✁15
✂✄P ✁16
✂✄P ✁22
✂✄P ✁20
✂✄P ✁27
P 12
✄✂ ✁
P 29
✄✂ ✁
✂P ✁14
✄
✂✄P ✁24
✂P ✁18
Simulation Methods in Physics II
Hauptseminar
Biochemie
Kolloqium
formale Sprachen
Hauptseminar
Maschinenbau
Vorbereitungs-kurs
VWL
Tutorium
BWL
Proseminar
Lineare Algebra
Hauptseminar
Physik II
Kolloqium
Forstwirtschaft
Kolloqium
Analysis 1
Kolloqium
Java
Praktikum
Simulation Methods in Physics II
Vorlesung
Statistik I
Vorlesung
English I
Tutorium
Tabelle 1.5.0.3: Veranstaltung 2NF
Besucht ID
✄
✂✄P ✁1000101
✂✄P ✁1000102
P 1000103
✄✂ ✁
P 1000201
✄✂ ✁
P 1000202
✄✂ ✁
P 1000203
✄✂ ✁
✂✄P ✁1000301
✂✄P ✁1000302
✂✄P ✁1000303
✂✄P ✁1000401
P 1000402
✄✂ ✁
P 1000403
✄✂ ✁
P 1000501
✄✂ ✁
P 1000502
✄✂ ✁
✂✄P ✁1000601
✂✄P ✁1000602
✂✄P ✁1000603
✂✄P ✁1000701
✂✄P ✁1000702
P 1000703
✄✂ ✁
P 1000801
✄✂ ✁
✂P ✁1000802
kommilitonID
✄
✂✄F ✁1005
✂✄F ✁1005
F 1005
✄✂ ✁
F 1015
✄✂ ✁
F 1015
✄✂ ✁
F 1015
✄✂ ✁
✂✄F ✁1019
✂✄F ✁1019
✂✄F ✁1019
✂✄F ✁1018
F 1018
✄✂ ✁
F 1018
✄✂ ✁
F 1004
✄✂ ✁
F 1004
✄✂ ✁
✂✄F ✁1011
✂✄F ✁1011
✂✄F ✁1011
✂✄F ✁1002
✂✄F ✁1002
F 1002
✄✂ ✁
F 1016
✄✂ ✁
✂F ✁1016
Veranstaltung ID
✄
✂✄F ✁21
✂✄F ✁30
F 33
✄✂ ✁
F 11
✄✂ ✁
F 19
✄✂ ✁
F 28
✄✂ ✁
✂✄F ✁13
✂✄F ✁23
✂✄F ✁31
✂✄F ✁15
F 21
✄✂ ✁
F 30
✄✂ ✁
F 23
✄✂ ✁
F 21
✄✂ ✁
✂✄F ✁16
✂✄F ✁19
✂✄F ✁22
✂✄F ✁15
✂✄F ✁20
F 27
✄✂ ✁
F 12
✄✂ ✁
✂F ✁22
wpf
Gast
Wahlfach
Wahlfach
Pflichtfach
Gast
Gast
Pflichtfach
Wahlfach
Pflichtfach
Gast
Pflichtfach
Wahlfach
Pflichtfach
Wahlfach
Pflichtfach
27
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂✄P ✁1000803
P 1000901
✄✂ ✁
P 1000902
✄✂ ✁
P 1000903
✄✂ ✁
P 1001001
✄✂ ✁
✂✄P ✁1001002
✂✄P ✁1001003
✂✄P ✁1001101
✂✄P ✁1001102
P 1001103
✄✂ ✁
P 1001201
✄✂ ✁
P 1001202
✄✂ ✁
P 1001203
✄✂ ✁
P 1001301
✄✂ ✁
✂✄P ✁1001302
✂✄P ✁1001303
✂✄P ✁1001401
✂✄P ✁1001402
P 1001403
✄✂ ✁
P 1001501
✄✂ ✁
P 1001502
✄✂ ✁
P 1001503
✄✂ ✁
✂✄P ✁1001601
✂✄P ✁1001602
✂✄P ✁1001603
✂✄P ✁1001701
✂✄P ✁1001702
P 1001703
✄✂ ✁
P 1001801
✄✂ ✁
P 1001802
✄✂ ✁
P 1001803
✄✂ ✁
✂✄P ✁1001901
✂✄P ✁1001902
✂P ✁1001903
✄
✂✄F ✁1016
F 1012
✄✂ ✁
F 1012
✄✂ ✁
F 1012
✄✂ ✁
F 1009
✄✂ ✁
✂✄F ✁1009
✂✄F ✁1009
✂✄F ✁1001
✂✄F ✁1001
F 1001
✄✂ ✁
F 1017
✄✂ ✁
F 1017
✄✂ ✁
F 1017
✄✂ ✁
F 1013
✄✂ ✁
✂✄F ✁1013
✂✄F ✁1013
✂✄F ✁1014
✂✄F ✁1014
F 1014
✄✂ ✁
F 1008
✄✂ ✁
F 1008
✄✂ ✁
F 1008
✄✂ ✁
✂✄F ✁1007
✂✄F ✁1007
✂✄F ✁1007
✂✄F ✁1003
✂✄F ✁1003
F 1003
✄✂ ✁
F 1010
✄✂ ✁
F 1010
✄✂ ✁
F 1010
✄✂ ✁
✂✄F ✁1006
✂✄F ✁1006
✂F ✁1006
✄
✂✄F ✁29
F 20
✄✂ ✁
F 30
✄✂ ✁
F 15
✄✂ ✁
F 11
✄✂ ✁
✂✄F ✁14
✂✄F ✁24
✂✄F ✁13
✂✄F ✁15
F 24
✄✂ ✁
F 31
✄✂ ✁
F 15
✄✂ ✁
F 19
✄✂ ✁
F 18
✄✂ ✁
✂✄F ✁22
✂✄F ✁30
✂✄F ✁19
✂✄F ✁28
F 33
✄✂ ✁
F 11
✄✂ ✁
F 30
✄✂ ✁
F 31
✄✂ ✁
✂✄F ✁12
✂✄F ✁15
✂✄F ✁22
✂✄F ✁13
✂✄F ✁23
F 27
✄✂ ✁
F 14
✄✂ ✁
F 16
✄✂ ✁
F 33
✄✂ ✁
✂✄F ✁21
✂✄F ✁16
✂F ✁30
Tabelle 1.5.0.4: Besucht
Wahlfach
Gast
Wahlfach
Pflichtfach
Wahlfach
Pflichtfach
Wahlfach
Wahlfach
Gast
Gast
Pflichtfach
Gast
Pflichtfach
Wahlfach
Wahlfach
Gast
Pflichtfach
Wahlfach
Gast
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
Pflichtfach
28
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
29
1.6 Datenbankschema
«table»
Kommiliton
InnoDB, utf8
✄
✂P ✁ Publi-kation
anrede
vorname
nachname
geburtsDatum
«table»
Veranstaltung
InnoDB, utf8
ID
a..*
a..*
✄
✂P ✁ Veranstaltung ID
bezeichnung
arbeitsform
✄
✂F ✁ Ort
*
a..*
a..*
b..*
«table»
Ort
InnoDB, utf8
«table»
Besucht
InnoDB, utf8
✄
✂P ✁ plz
✄
✄✂P ✁ Besucht ID
✄✂F ✁ kommilitonID
✂F ✁ Veranstaltung ID
geoBreite
geoLaenge
wpf
Abbildung 1.6.0.1: UML universitaet_nf
1.7 Zusammenfassung
Die Entwicklung einer DB vollzieht sich in mehreren Schritten. Zunächst ist festzustellen, welche Informationen die Anwender
vom DBS erwarten. Aufgrund dieser Erhebung kann man sich dann überlegen, welche Tabellen benötigt werden. Ferner
muss festgelegt werden, welche Datentypen für die einzelnen Tabellenspalten benötigt werden. Diesen Prozess bezeichnet
man als Datenmodellierung. Erst wenn die Datenmodellierung abgeschlossen ist, können die Tabellen angelegt werden. Man
sollte sich für diesen Schritt ruhig ein wenig Zeit nehmen, weil es nachher häufig unmöglich ist, ohne grossen Aufwand Fehler zu beheben. Um sich einigen Ärger zu ersparen, empfiehlt es sich, ein paar Grundsätze bei der Datenmodellierung zu beachten
Redundanz vermeiden: Unter Redundanz versteht man das doppelte Vorhandensein einzelner Daten. Redundanz vergeudet nicht nur Speicherplatz, es eröffnet auch die Möglichkeit inkonsistenter und mehrdeutiger Daten.
1.8 Vorteile und Grenzen der Normalisierung
Mit Hilfe der Normalisierung wollen wir sicherstellen, dass die Datenstrukturen über die wir die relationale Datenbank bilden,
möglichst effizient formuliert werden. Denn dadurch erreichen wir folgende Eigenschaften in unserem Datenbanksystem:
• Verminderung der Redundanz,
• Vermeidung von Inkosistenzen und Anomalien,
• Übersichtlichkeit hinsichtlich der Attributanzahl durch Bildung (kleinerer) Tabellen.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
30
Wie bereits durch den letzten Punkt ersichtlich wird, hat die Normalisierung allerdings auch einige Nachteile und Grenzen:
• Der Realweltausschnitt wird oftmals durch die Transformation bis zur dritten Normalform in zu viele und teilweise sehr
kleine Tabellen (zerstückelt), wodurch möglicherweise der Überblick durch die Vielzahl an Tabellen und das Verständnis
für den Zusammenhang zwischen diesen Tabellen verloren gehen können.
• Bei Abfragen, für deren Beantwortung auf Bestandteile mehrerer verschiedener Tabellen zugegriffen werden muss, ist
eine aufwändige Wiedervereinigung der benötigten Tabellen erforderlich (Join- Bildung wird in den beiden folgenden
Kapiteln besprochen).
Gerade dieser zuletzt genannte Punkt setzt der Normalisierung in der Praxis Grenzen. Die Theorie und Literatur empfiehlt
zwar eine Normalisierung bis in die dritte Normalform. Hierbei wird jedoch bereits bei recht einfachen Abfragen Information
aus mehreren Tabellen benötigt, deren Vereinigung allerdings gerade bei grossem Datenbestand meist eine enorm intensive
Rechenleistung fordert. Aus diesem Grund werden relationale Datenbanksysteme in der Praxis nur selten bis in die dritte
Normalform umgewandelt. Daher ist die Normalisierung in gewisser Weise ein Balanceakt zwischen Nutzen und Aufwand und
wird im Zusammenhang mit der Designfrage eines Datenbanksystems auch in Fachkreisen heiss diskutiert. In der Regeln muss
immer aktuell anhand des gegebenen Projektes beurteilt werden, welche Vorgehensweise sinnvoller ist und wie weit normlisiert
werden soll.
Dabei gilt natürlich zu beachten, dass eine totale Normalisierung auf allen Ebenen der Programmieraufwand steigt, zum
anderen die Geschwindigkeit von Abfragen darunter leidet. Hierzu muss man ein guten Kompromiss finden, der beide Gesichtspunkte dieses Problems berücksichtigt.
Kapitel 3
xampp
3.1 Installation
Sie müssen nicht XAMPP installieren. Alternativ können Sie bei einem Webhoster (der MySQL anbietet z.B. bei
https://www.000webhost.com/) anmelden.
XAMPP aus http://www.apachefriends.org/index.html runterladen und installieren.
Die Pakete haben den Nachteil: sie enthalten neben Apache, PHP und MySQL unzählige weitere Komponenten, die man
wahrscheinlich nicht brauchen.
31
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.1: bild0020.eps
32
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.2: bild0021.eps
33
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.3: bild0022.eps
34
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.4: bild0023.eps
35
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.5: bild0024.eps
36
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.6: bild0025.eps
37
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.7: bild0026.eps
38
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.1.0.8: bild0027.eps
3.2 XAMPP starten
Wechseln Sie im Ordner, wo Sie XAMPP installiert haben; In der Regel C:\xampp;
39
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.2.0.1: xampp001.eps
und starten Sie XAMPP, in dem Sie den [StartButton sowohl für Apache als auch für MySQL klicken
40
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
41
Abbildung 3.2.0.2: xampp002.eps
.
Öffnen Sie nun ein Browser Ihrer Wahl z.B. Firefox und Geben Sie http://localhost/phpmyadmin/index.php ein. Im Normalfall erhalten Sie
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.2.0.3: xampp003.eps
.
3.3 Datenbank anlegen
Wir legen unsere erste Datenbank mit dem Namen bibliografie_nf an.
42
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.3.0.1: xampp004.eps
.
43
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
44
Abbildung 3.3.0.2: xampp005.eps
.
3.4 Tabellen in Datenbank anlegen
Wechseln Sie nun zu der neu angelegten Datenbank bibliografie_nf und legen Sie dort eine Tabelle namens Fachkraft mit 4
Spalten.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.4.0.1: xampp006.eps
.
45
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.4.0.2: xampp007.eps
Als Spalten der Tabelle Fachkraft wählen Sie.
• fachkraftID INT
• anrede ENUM(’Frau’, ’Herr’)
• nachname VARCHAR(250)
• vorname VARCHAR(250)
46
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.4.0.3: xampp008.eps
Nicht vergessen: Auf [Speichern]klicken.
47
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.4.0.4: xampp009.eps
In best–case erhalten Sie.
48
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
49
Abbildung 3.4.0.5: xampp010.eps
Verfahren Sie genau so mit den weiteren Tabellen Hersteller, Publikation und Beteiligter.
3.5 Tabellen mit Daten füllen
Nachdem man eine Tabelle erstellt kann man die Tabelle mit Daten füllen. Klicken zuerst auf die Tabelle, die Sie mit Daten
füllen möchten und Klicken Sie auf die Schaltfläche [Einfügen]
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.5.0.1: xampp011.eps
.
50
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.5.0.2: xampp012.eps
Ein Klick auf [OK]und schon wird den Datensatz in der Tabelle eingefügt.
51
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
52
Abbildung 3.5.0.3: xampp013.eps
Verfahren Sie genau so mit den weiteren Daten der Tabellen Hersteller, Publikation und Beteiligter.
3.6 Exportieren
Nachdem Sie die Daten in der Tabelle mühsam eingegeben haben. vielleicht wollen Sie mit den Daten auf ein andere Notebook
arbeiten oder gar auf Ihrer USB Stick sichern. XAMPP bietet dazu die sog. Export–Funktion. Klicken Sie nun auf die Datenbank
bibliografie_nf in de rLinke Leiste vom XAMPP und klicken Sie danach auf die Button [Exportieren]
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.6.0.1: xampp014.eps
.
53
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.6.0.2: xampp015.eps
Ein Klick auf [OK]und schon werden alle Daten gesichert.
54
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
55
Abbildung 3.6.0.3: xampp016.eps
.
3.7 Importieren
Wenn Sie die Datenbank als SQL–Datei haben, könne Sie die Datenbank einfach in XAMPP importieren. Klicken auf [OK]und
die Daten einfach in der Maske einfügen
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.7.0.1: xampp017.eps
Ein Klick auf [OK]und schon werden alle Daten eingefügt.
56
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.7.0.2: xampp018.eps
.
3.8 Daten manipulieren
Mit Hilfe von XAMPP lassen sich bereits eingefügten Daten nachträglich aendern, ergänzen oder gar löschen
Datenbank, Tabellen– und Spalten kann man mit Hilfe von XAMPP umbenennen und gar löschen
Attribute von Spalten lassen mit einigen Mausklicken anpassen.
3.9 Abfrageergebnisse in einer Datei umleiten
Manchmal möchte man die Abfrageergebnisse in einer Datei haben. Dies erläutern wir anhand von einem Beispiel
Die filgende SQL–Abfrage
SELECT fachkraftID, anrede, vorname, nachname
FROM Fachkraft
57
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
LIMIT 10
INTO OUTFILE ’SQLErgebnis1.txt’;
Abbildung 3.9.0.1: bild0310.eps
58
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 3.9.0.2: bild0311.eps
im Ordner C:\xampp\mysql \data\bibliografie\ findet man die Datei SQLErgebnis1.txt mit dem Inhalt
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
Herr
Herr
Herr
Herr
Herr
Herr
Herr
Herr
Frau
Herr
Cyrus Achouri
Ralf Adams
Robert R. Agular
Alfred V. Aho
Martin Aigner
Michael Scholz
Helmut Alt
Michael Amberg
Nina Amenta
David R. Anderson
man kann auch die Ausgabeordner bestimmen
SELECT fachkraftID, anrede, vorname, nachname
FROM Fachkraft
LIMIT 10
INTO OUTFILE ’c:/FFFFFFF/Skripte/IBABWLDatenbanksysteme/quellcode/kap003/SQLErgebnis2.txt’;
59
Kapitel 4
Datenbanken über xampp
4.1 Tabellen in Datenbank anlegen
Wechseln Sie nun zu der neu angelegten Datenbank bibliografie_nf und legen Sie dort eine Tabelle namens Fachkraft mit 4
Spalten.
Abbildung 4.1.0.1: xampp006.eps
.
60
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.1.0.2: xampp007.eps
Als Spalten der Tabelle Fachkraft wählen Sie.
• fachkraftID INT
• anrede ENUM(’Frau’, ’Herr’)
• nachname VARCHAR(250)
• vorname VARCHAR(250)
61
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.1.0.3: xampp008.eps
Nicht vergessen: Auf [Speichern]klicken.
62
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.1.0.4: xampp009.eps
In best–case erhalten Sie.
63
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
64
Abbildung 4.1.0.5: xampp010.eps
Verfahren Sie genau so mit den weiteren Tabellen Hersteller, Publikation und Beteiligter.
4.2 Tabellen mit Daten füllen
Nachdem man eine Tabelle erstellt kann man die Tabelle mit Daten füllen. Klicken zuerst auf die Tabelle, die Sie mit Daten
füllen möchten und Klicken Sie auf die Schaltfläche [Einfügen]
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.2.0.1: xampp011.eps
.
65
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.2.0.2: xampp012.eps
Ein Klick auf [OK]und schon wird den Datensatz in der Tabelle eingefügt.
66
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
67
Abbildung 4.2.0.3: xampp013.eps
Verfahren Sie genau so mit den weiteren Daten der Tabellen Hersteller, Publikation und Beteiligter.
4.3 Exportieren
Nachdem Sie die Daten in der Tabelle mühsam eingegeben haben. vielleicht wollen Sie mit den Daten auf ein andere Notebook
arbeiten oder gar auf Ihrer USB Stick sichern. XAMPP bietet dazu die sog. Export–Funktion. Klicken Sie nun auf die Datenbank
bibliografie_nf in de rLinke Leiste vom XAMPP und klicken Sie danach auf die Button [Exportieren]
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.3.0.1: xampp014.eps
.
68
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.3.0.2: xampp015.eps
Ein Klick auf [OK]und schon werden alle Daten gesichert.
69
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
70
Abbildung 4.3.0.3: xampp016.eps
.
4.4 Importieren
Wenn Sie die Datenbank als SQL–Datei haben, könne Sie die Datenbank einfach in XAMPP importieren. Klicken auf [OK]und
die Daten einfach in der Maske einfügen
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.4.0.1: xampp017.eps
Ein Klick auf [OK]und schon werden alle Daten eingefügt.
71
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Abbildung 4.4.0.2: xampp018.eps
.
4.5 Daten manipulieren
Mit Hilfe von XAMPP lassen sich bereits eingefügten Daten nachträglich aendern, ergänzen oder gar löschen
Datenbank, Tabellen– und Spalten kann man mit Hilfe von XAMPP umbenennen und gar löschen
Attribute von Spalten lassen mit einigen Mausklicken anpassen.
72
Kapitel 12
Tabellentypen (Storage–Engines)
12.1 Einführung
MySQL bietet verschiedene Tabellentypen bzw. –formate. Als Standard wird MyISAM verwendet, aber daneben gibt es auch
InnoDB, BDB, MemoryDB und andere. Dieser Artikel soll die Eigenschaften der verschiedenen Systeme vorstellen und sie
miteinander vergleichen.
Grundlegend wird in transaktionsbasierte (z.B. InnoDB, BDB, Gemini) und nicht–transaktionsbasierte Formate (z.B.
MyISAM, ISAM, HEAP, MERGE) unterschieden. Transaktionen sind untrennbare Blöcke.
MyISAM (stellvertetend für nicht–transaktionsorientierte Tabellentypen)
• gute Kompatibilität aufgrund der Little–Endian–Architektur. Das bedeutet, dass alle Daten mit dem niederwertigsten Bit
zuerst gespeicheichert werden. Dadurch sind die Daten MyISAM maschinen– und betriebssystemunabhängig.
• eine MyISAM–Tabelle kann maximal 64 Indizes haben, was sich aber durch Rekompilieren ändern lässt: Ab Version
MySQL 5.1.4 kann configure mit der Option with–max–indexes=N aufgerufen werden, wobei N die Höchstzahl der pro
MyISAM–Tabelle zulässigen Indizes ist. N muss kleiner oder gleich 128 sein.
• Pro Index sind maximal 16 Spalten möglich
• Intern wird eine AUTO_INCREMENT–Spalte pro Tabelle unterstützt. Diese Spalte wird bei INSERT– und UPDATE–
Operationen automatisch eingefügt. Das macht AUTO_INCREMENT–Spalten schneller (um mindestens 10%) als wenn
man das Verwalten der IDs selbst übernimmt.
• NULL–Werte in indizierten Spalten sind zulässig. Hierfür werden 0 bis 1 Byte pro Schlüssel gebraucht.
InnoDB (stellvertetend für transaktionsorientierte Tabellentypen)
• transaktionssicher (inklusive Rollback–, Commit– und Datenwiederherstellungsfähigkeit)
• Zeilensperren möglich (statt Tabellensperren bei MyISAM), konsistentes Auslesen (SELECT) ohne Sperren möglich –>
Beschleunigung paralleler Abfragen
• Unterstützung von Fremdschlüsseln
• sehr effiziente Ausnutzung der CPU
Memory–Engine (Heap–Tabellen) Diese Tabellen existieren vollständig im RAM. Das ist gleichzeitig Fluch und Segen:
• sehr schneller Zugriff
• nach Absturz nicht wiederherstellbar
73
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
74
InnoDB, Gemini und BDB sollten dann eingesetzt werden, wenn die Konsistenz der Datenbank auf keinen Fall gefährdet werden
darf. Die Daten können nach einem Absturz von MySQL automatisch wiederhergestellt werden. Zugleich stellen Transaktionen
sicher, dass nicht mehrere Anwender simultan Datensätze verändern, und sichern damit die Integrität der Datenbank.
Verknüpfte Tabellen verweisen nur auf tatsächlich existierende Datensätze und nicht ins Leere. Transaktions–sichere Tabellen sind aber langsamer als das am häufigsten verwendete MyISAM–Format.
Noch schneller als diese sind Heap Tables, die vollständig im Speicher residieren, aber nach einem Absturz oder Reboot
natürlich verschwunden sind und sich deshalb nur für eine temporäre Datenhaltung eigen.
Kapitel 13
Datentypen
13.1 Numerische Typen
13.1.1 Ganze Zahlen
.
13.1.2 Fliess– und Festkommazahlen
.
13.2 Datum und Uhrzeit
13.2.1 DATE
.
13.2.2 TIME
.
13.2.3 DATETIME/TIMESTAMP
.
13.2.4 YEAR
.
75
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
76
13.3 Zeichenkette
13.3.1 CHAR
.
13.3.2 VARCHAR
.
13.3.3 TEXT
.
13.4 Binärdaten
Ein BLOB* ist ein binäres grosses Objekt, welches eine variable Menge von Daten aufnehmen kann. Die vier BLOB-Typen sind
TINYBLOB, BLOB, MEDIUMBLOB und LONGBLOB. Sie unterscheiden sich lediglich in der maximalen Länge der Werte,
die sie aufnehmen können. Beim Speichern und Abrufen von BLOB-Spalten erfolgt keine Wandlung der Gross-/Kleinschreibung.
BLOB-Spalten werden als binäre Strings (Byte-Strings) behandelt, BLOB-Spalten haben keinen Zeichensatz, und die
Sortierung basiert auf den numerischen Werten der Bytes in den Spaltenwerten.
Viele Vorteile ergeben sich aus dem Fakt, dass Informationen (Artikel, Texte etc) zusammen in einer Datenbank abgespeichert werden. Dadurch können Bilder nicht ohne weiteres einfach verwaisen und es wird die Integrität der Daten vereinfacht.
Metadaten können ebenfalls problemlos mit den Bildern verknüpft werden.
Die Speicherung in einer Datenbanken bringt aber auch noch andere Vorteile mit sich. So können sehr schnell und einfach Load-Balancing-Systeme auf Datenbank-Ebene eingeführt werden. Eine Portierung von einem System auf ein anderes ist
ebenfalls sehr einfach, da einfach ein Backup der Datenbank erstellt und auf einen anderen Server übertragen werden kann - die
Anwendung ist dann sofort wieder einsatzbereit.
Auch ist die Rechteverwaltung innerhalb einer Datenbank leichter umzusetzen, als auf Dateisystem-Ebene.
Das Auslesen von Bildern aus einer Datenbank ist im Gegensatz zu einem direkten Zugriff auf das Dateisystem deutlich
langsamer, da zunächst immer die Datenbankabfrage durchgeführt werden muss. Zudem kann ein Browser die Bilder nicht ohne
weiteres zwischenspeichern, da der Webserver nicht erkennen kann, ob das Bild seit dem letzten Besuch verändert wurde. Die
Backup-Strategie muss auch angepasst werden, da Bilder in Datenbanken als BLOBs (Binary Large Objects) abgelegt werden.
Dadurch ist es nicht mehr so einfach möglich, textbasierte, inkrementelle Sicherungen zu erstellen.
Diese Nachteile können jedoch durch intelligente Lösungen drastisch reduziert werden. So kann man z.B. per PHP-Script überprüfen, ob sich das Bild in der Datenbank verändert hat und entsprechende Header zurückgeben. Für die Datenbank-Sicherung
kann z.B. ein Point-in-Time Recovery verwendet werden.
* Binary
Large Object; dabei steht CLOB für Character Large Objects
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
77
13.5 Zusammenfassung
.
Datentyp
Beshreibung
Wertebereich
CHAR(m)
0. . . 255 Zeichen
VARCHAR(m)
0. . . 255 Zeichen
TEXT
0. . . 65535 Zeichen
DATE
1000-01-01. . . 9999-12-31
TIME
-838:59:59. . . 838:59:59
TIMESTAMP
1970-01-01 00:00:00. . . 2037-1231 23:59:59
DATETIME
1000-01-01 00:00:00. . . 9999-1231 23:59:59
YEAR
BOOL,
BOOLEAN:
1901. . . 2155
INTEGER(m)
INT(m)
FLOAT(M,D)
DECIMAL(M,D)
DOUBLE(M,D)
REAL(M,D)
Synonym für DOUBLE
BOOLEAN
0,1 bzw. true, false
BLOB(m)
0. . . 65535 Bytes
Diese Typen sind Synonyme für TINYINT(1). Der Wert Null wird als falsch ausgewertet, Werte ungleich null als wahr.
Die Implementierung der vollständigen Verarbeitung boolescher Typen entsprechend dem SQL-Standard ist für die Zukunft
vorgesehen.
13.6 ENUMs und SETs
SET(m): 64 Elemente mit 0. . . 255 Zeichen.
A consequence of this is that SET member values should not themselves contain commas.
in der SQL–Datei Werte von SET ohne Zwischenräume eingeben; also etwa a,b,c nicht aber a,b,c
13.7 Geometrieobjekte
Geometrieobjekte wie POINT, GEOMETRY werden in einer separate Kapitel behandelt
13.8 Nullwerte
DATETIME ’0000-00-00 00:00:00’
DATE ’0000-00-00’
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
TIMESTAMP ’0000-00-00 00:00:00’
TIME ’00:00:00’
YEAR 0000
In JDBC kann mit
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
in NULL konvertiert werden
78
Kapitel 19
Datenbankstrukturen
bisher haben wir uns kurz mit Änderung, Einfügen und Anzeigen von Daten beschäftigt. Nun wollen wir ein kurze Einführung
in die Tabellentechnik beschäftigt.
19.1 Tabellenanlegen
Mit dem Kommando CREATE TABLE kann man eine Tabelle in einer Datenbank erzeugen.
.
Um eine Tabelle zu erzeugen, müssen Sie u.a. eine Tabellenname und Spaltenname (inkl. deren datentypen) ausdenken.
Tabellenname und Spaltenname sind sog. Bezeichner in MySQL und die unterlegen u.a. folgende Regeln
19.2 Erlaubte Zeichen und Namenslänge
Syntax 19.2.0.1: <alias>::=ncs
{a- z|A- Z|0- 9|\$}1,256
|
‘ <keyword>‘
/*
der <alias> darf jedoch nicht ausschliesslich aus Ziffern bestehen
*/
.
Syntax 19.2.0.2: <bezeichner>::=ncs
{a- z|A - Z|0- 9|_|\$}1,256
|
‘ <keyword>‘
/*
der <bezeichner> darf jedoch nicht ausschliesslich aus Ziffern bestehen
*/
.
79
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
80
der Bezeichner darf jedoch nicht ausschliesslich aus Ziffern bestehen
gültige Namen: buch, buch_titel, buch10, 1buch12, $buch,
ungültige Namen: 123456, buch titel, buch(10),
Ferner darf ein Bezeichner nicht ausschliesslich aus sog. MySQL reservierte Wörter bestehen, Es sei dann in Accent
grave–Zeichen eingeschlossen werden. Das Accent grave–Zeichen erreichen Sie bei Alt + Num 9 + Num 6 auf dem
Nummernblock
Einige MySQL reservierte Wörter sind in folgenden Tabelle aufgelistet.
Anweisung
Beschreibung
GRANT
Zugriffsrechte festlegen
REVOKE
Zugriffsrechte aufheben
CREATE DATABASE
Datenbank anlegen
DROP DATABASE
Datenbank löschen
USE
Datenbank auswählen
SHOW DATABASES
Datenbanken anzeigen
CREATE USER
Datenbankbenutzer einrichten
DROP USER
Datenbankbenutzer löschen
CREATE TABLE
Tabellenstruktur anlegen
DROP TABLE
Tabellenstruktur löschen
ALTER TABLE
Tabellenstruktur verändern
SHOW TABLES
Tabellenstruktur anzeigen
EXPLAIN
Datenbanken anzeigen
DROP DATABASE
Datenbank löschen
CREATE INDEX
Index anlegen
DROP INDEX
Index löschen
CREATE PROCEDURE
Prozedur definieren
DROP PROCEDURE
Prozedur löschen
CREATE FUNCTION
Funktion definieren
DROP FUNCTION
Funktion löschen
CREATE TRIGGER
Trigger definieren
DROP TRIGGER
TRigger löschen
SELECT
Datenbankabfragen
INSERT
Datensätze in Tabellen einfügen
DELETE
Datensätze aus Tabellen löschen
UPDATE
Einträge in Datenfeldern verändern
Tabelle 19.2.0.1: Einige MySQL reservierte Wörter
19.3 Gross- und Kleinschreibung
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
81
Element
Regel
SQL Schlüsselwörter
Gross- und Kleinschreibung wird nicht unterschieden
Datenbank-/Tebellennamen
Gross- und Kleinschreibung hängt vom Betriebssystem ab: Unter UNIX wird
Gross- und Kleinschreibung unterschieden, unter Windows dagegen nicht
Spaltennamen
Gross- und Kleinschreibung wird nicht unterschieden
Indexnamen
Gross- und Kleinschreibung wird nicht unterschieden
Aliasnamen
Gross- und Kleinschreibung wird unterschieden
Tabelle 19.3.0.1: Gross- und Kleinschreibung
bezeichnerMit255Zeichen=
azaVa5aFadaiaLaXa_akaxaQa1aPa7aBaCa5aLaLaqahaBapa7azaUaSaIaVaKaaa3ayaLaDaQa5alanaSakasaCaqaXa0a9aCaz
aealaWaCaeaza1ajaWapa9abaEaTaGakasa3ayaCaRa_aKahagaKaqaTa1ataoaTaBaZaNa6azaGama8aKaraZaraGaoa$a4araB
aRaaahagaAaoa9anaAa6a2a0a9abaRaba1alaNaKa7aka7aIaSa8azaxaKa0adagaJajaXanaUaTaDaBaKaFaNaEa0aCa1aDaNa5
aCa6azaVataCaMagadaVaraya_ahamaVaFaNaVaRaZaUa6aKafahaWaGaqa3agaXamadaRa9aDaBaVa3aha9aDa9a$akabaDaqai
aQa2aNaSaKa$aEaWafaJaNa0ajaGaJaeaSaBaiaLa9a5aTaqaYaNazaGagaTafara3aRaBaZaiaoasaiaLacaWaqaaacacaHaba$
apaHaNaG
C
C
C
C
C
19.4 Konventionen zur Namenvereibarungen
MySQL–Schlüsselwörter sind unabhängig von der verwendeten Gross– und Kleinschreibung. Dieses Skript verwendet ausschliesslich zur besseren Kenntlichmachung Grossschreibung.
In MySQL ist neben den sonst üblichen Zeichen* auch ein Dollarzeichen in Bezeichnern erlaubt. Jedoch wird von der
Verwendung des Dollarzeichens in Namen abgeraten. Das Dollarzeichen sollte nur für Namen verwendet werden, die in
bestimmten maschinell erzeugtem Quellcode definiert werden.
Es werden grundsätzlich sprechende Bezeichner verwendet, d. h., solche, die bereits deutlich auf ihre Bedeutung schliessen lassen. Das gilt auch, falls die Bezeichner dadurch recht lang geraten.
Die Namen der einfachen Datentypen wie INT VARCHAR usw. werden vollständig gross geschrieben (INT, CHAR,
VARCHAR, . . . ).
Bezeichner von Tabellenname/Views haben stets einen grossen Anfangsbuchstaben und werden ansonsten klein geschrieben. Wenn der Bezeichner sich aus mehreren Wörtern zusammensetzt, werden die jeweiligen Anfangsbuchstaben gross
geschrieben (MeineTabelleNummerEins).
Bezeichner Spaltenname, Trigger, Funktionen, Prozeduren beginnen stets mit einem Kleinbuchstaben. Setzt sich der Bezeichner aus mehreren Wörten zusammen, so werden die Anfangsbuchstaben der weiteren Wörter gross geschrieben
(dieSpalteVonEinerTabelle).
FOREIGN KEY werden wie folgend geschrieben: Tabellename_indexname_fore. Besteht ein indexname aus mehrere
Wörtern, so werden diese hintereinander geschrieben.
FULL KEY werden wie folgend geschrieben: Tabellename_indexname_full. Besteht ein indexname aus mehrere Wörtern, so werden diese hintereinander geschrieben.
* Windows verbietet im Dateinamen die folgenden Zeichen / \: * ? "<>|. Länge des Dateinamens 255 Zeichen. Ebenfalls unzulässig sind folgende, wie schon
zuvor als Gerätenamen reservierte Dateinamen: CON, PRN, AUX, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2,
LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, und LPT9. Die Dateibezeichnung NUL.txt ist also unzulässig.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
82
SPATIAL KEY werden wie folgend geschrieben: Tabellename_indexname_spat. Besteht ein indexname aus mehrere
Wörtern, so werden diese hintereinander geschrieben.
INDEX werden wie folgend geschrieben: Tabellename_indexname_ind. Besteht ein indexname aus mehrere Wörtern, so
werden diese hintereinander geschrieben.
Datenbanknamen sind kleingeschrieben. Besteht ein Datenbankname aus mehrere Wörtern, so werden diese durch Unterstrich (_) geteilt. meine_erste_datenbank
Werden mehrere Tabellen in einer einzigen Abfrage verbunden, muss herauszufinden sein, welche Tabelle gemeint ist,
wenn in den Klauseln SELECT, WHERE, GROUP BY, HAVING und ORDER BY Spalten angesprochen werden. Wenn Sie
eine Tabelle ausserhalb der FROM–Klausel referenzieren, haben Sie zwei Möglichkeiten
• Sie verwenden den vollständigen Namen der Tabelle, wie in Student.hauptfach.
• Sie weisen den Tabellen Aliasnamen zu und verwenden in der Abfrage die Aliase.
Tabellen–Kürzel wird in Kleinschreibung: SELECT . . . FROM Student st. . .
Namen für Tabellen und Co werden grundsätzlich in Singular und sind möglichst aussagefähig sein bezüglich der inhaltlich Bedeutung.
Zeichenketten werden in einfache Anführungszeichen gesetzt. Auch doppelte Anführungszeichen sind erlaubt, haben
aber den Nachteil, dass Sie diese als Sonderzeichen mit einem vorangestellten Backslash (\) maskieren müssen, wenn Sie die
SELECT–Kommandos in PHP bzw. Java als Zeichenkette zusammensetzen oder einfach bei INSERT–Kommandos
Einzeilige Kommentare können in SQL mit doppelter Bindestrich (- -) vorangestellt. Bei MySQL erfordert der Kommentarstil - - (doppelter Bindestrich) mindestens ein nachfolgendes Whitespace- oder Steuerzeichen (z. B. ein Leerzeichen,
einen Tabulator, einen Zeilenwechsel usw.). Diese Syntax unterscheidet sich leicht von der SQL-Standardkommentarsyntax.
Mehrzeilige Kommentare müssen mit /* und */
19.5 Tabellenstruktur abfragen
Mit der MySQL Abfrage
EXPLAIN Ort;
erhält man.
COLUMN_NAME
COLUMN_TYPE
IS_NULLABLECOLUMN_KEYCOLUMN_DEFAULT
EXTRA
plz
varchar(13)
NO
PRI
NULL
geoBreite
decimal(9,6)
NO
NULL
geoLaenge
decimal(9,6)
NO
NULL
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SHOW COLUMNS
FROM Ort;
erhält man.
COLUMN_NAME
COLUMN_TYPE
IS_NULLABLECOLUMN_KEYCOLUMN_DEFAULT
EXTRA
plz
varchar(13)
NO
PRI
NULL
geoBreite
decimal(9,6)
NO
NULL
geoLaenge
decimal(9,6)
NO
NULL
19.6 Eine Spalte in einer Tabelle hinzufügen, ändern, entfernen
Mit der MySQL Abfrage
ALTER TABLE Ort
ADD COLUMN status VARCHAR(200)
AFTER plz;
kann man die Spalte status in der Tabelle Ort hinzufügen, und zwar nach die Spalte plz.
.
Mit der MySQL Abfrage
ALTER TABLE Ort
CHANGE COLUMN status verwaltung
ENUM(’Gosser Stadt’, ’klein Dorf’, ’Landeshaupstadt’, ’Bundeshauptstadt’)
FIRST;
kann man die Spalte status der Tabelle Ort in verwaltung umbenennen.
.
Mit der MySQL Abfrage
ALTER TABLE Ort
DROP COLUMN verwaltung;
kann man die Spalte verwaltung aus der Tabelle Ort entfernen. .
.
19.7 Tabelle kopieren
Mit der MySQL Abfrage
CREATE TABLE Chat2
SELECT * FROM Chat;
kann man die Tabelle aus einer andere Tabelle erzeugen.
.
Mit der MySQL Abfrage
SHOW CREATE TABLE Chat;
erhält man.
83
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Table
Create Table
Chat
CREATE TABLE ‘chat‘ ( Break ‘chatID‘ bigint(20) NOT NULL AUTO_INCREMENT,
Break ‘student1‘ char(15) NOT NULL, Break ‘student2‘ char(15) NOT NULL, Break
‘datumUndZeit‘ timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, Break PRIMARY KEY (‘chatID‘), Break KEY
‘Chat_student1_fore‘ (‘student1‘), Break KEY ‘Chat_student2_fore‘ (‘student2‘), Break
CONSTRAINT ‘Chat_student1_fore‘ FOREIGN KEY (‘student1‘) REFERENCES ‘student‘ (‘studentID‘) ON DELETE CASCADE ON UPDATE CASCADE, Break CONSTRAINT ‘Chat_student2_fore‘ FOREIGN KEY (‘student2‘) REFERENCES ‘student‘
(‘studentID‘) ON DELETE CASCADE ON UPDATE CASCADE Break ) ENGINE=InnoDB AUTO_INCREMENT=10000785 DEFAULT CHARSET=utf8
84
.
Mit der MySQL Abfrage
SHOW CREATE TABLE Chat2;
erhält man.
Table
Create Table
Chat2
CREATE TABLE ‘chat2‘ ( Break ‘chatID‘ bigint(20) NOT NULL DEFAULT '0', Break
‘student1‘ char(15) CHARACTER SET utf8 NOT NULL, Break ‘student2‘ char(15)
CHARACTER SET utf8 NOT NULL, Break ‘datumUndZeit‘ timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP Break )
ENGINE=InnoDB DEFAULT CHARSET=latin1
Vergleich man die Tabellendesign der Original– und Kopietabelle, so stellt man fest, dass beim Kopieren des Indizes, das
AUTO_INCREMENT–Attribut fuer die Spalte chatID sowie einige TIMESTAMP–Attribut verloren gegangen sind. Ausserdem
hat sich der Tabellentyp von InnoDB zu MyISAM geändert.
Um solche ungewollten Änderungen in der Tabellenstruktur zu vermeiden, kann man die neue Tablle aus der alten Tabelle wie
folgend erzeugen
CREATE TABLE Chat3
LIKE Chat;
.
.
Mit der MySQL Abfrage
SHOW CREATE TABLE Chat;
erhält man.
Table
Create Table
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Chat
85
CREATE TABLE ‘chat‘ ( Break ‘chatID‘ bigint(20) NOT NULL AUTO_INCREMENT,
Break ‘student1‘ char(15) NOT NULL, Break ‘student2‘ char(15) NOT NULL, Break
‘datumUndZeit‘ timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, Break PRIMARY KEY (‘chatID‘), Break KEY
‘Chat_student1_fore‘ (‘student1‘), Break KEY ‘Chat_student2_fore‘ (‘student2‘), Break
CONSTRAINT ‘Chat_student1_fore‘ FOREIGN KEY (‘student1‘) REFERENCES ‘student‘ (‘studentID‘) ON DELETE CASCADE ON UPDATE CASCADE, Break CONSTRAINT ‘Chat_student2_fore‘ FOREIGN KEY (‘student2‘) REFERENCES ‘student‘
(‘studentID‘) ON DELETE CASCADE ON UPDATE CASCADE Break ) ENGINE=InnoDB AUTO_INCREMENT=10000785 DEFAULT CHARSET=utf8
.
Mit der MySQL Abfrage
SHOW CREATE TABLE Chat3;
erhält man.
Table
Create Table
Chat3
CREATE TABLE ‘chat3‘ ( Break ‘chatID‘ bigint(20) NOT NULL AUTO_INCREMENT,
Break ‘student1‘ char(15) NOT NULL, Break ‘student2‘ char(15) NOT NULL, Break
‘datumUndZeit‘ timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, Break PRIMARY KEY (‘chatID‘), Break KEY
‘Chat_student1_fore‘ (‘student1‘), Break KEY ‘Chat_student2_fore‘ (‘student2‘) Break
) ENGINE=InnoDB DEFAULT CHARSET=utf8
.
Bemerkung 19.7.0.1 Wenn Sie eine Tabelle erzeugen (CREATE TABLE) oder ändern (ALTER TABLE) führt MySQL u.U.
automatische Änderung am Tabellendesign durch. Die folgende Liste fasst einige Designänderungen zusammen, die MySQL
durchführt
• VARCHAR(n)–Spalten mit n ≤ 4 werden in CHAR(n)–Spalten umgewandelt
• CHAR(n)–Spalten mit n > 3 werden in VARCHAR(n)–Spalten umgewandelt, falls weitere VARCHAR–, TEXT– oder
BLOB–Spalten gibt
• Bei TIMESTAMP–Spalten werden die Attribute NULL bzw. NOT NULL eliminiert
• Bei PRIMARY KEY–Spalten wird automatisch das Attribut NOT NULL hinzugefügt
• Wenn Sie keinen DEFAULT–wert für die Spalte einfügen, definiert MySQL selbst eine passende Wert
Mehr dazu unter https://dev.mysql.com/doc/refman/5.0/en/silent-column-changes.html
Mit der MySQL Abfrage
INSERT INTO Chat3
SELECT * FROM Chat;
kopiert man die Daten von Tabelle Chat lassen sich in die Tabelle Chat3.
.
Mit der MySQL Abfrage
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
SELECT * FROM Chat3;
erhält man.
chatID
student1
student2
datumUndZeit
10000719
ry307-0065-8575
sv377-8994-1980
2016-07-12 09:53:39.0
10000720
ry307-0065-8575
sv377-8994-1980
2015-07-08 07:00:48.0
10000721
ap256-3212-3933
tr133-3852-1694
2015-07-12 04:34:31.0
10000722
ap256-3212-3933
tr133-3852-1694
2015-07-02 23:57:35.0
10000723
mh303-5086-2257
vu769-2638-9984
2015-07-14 02:33:27.0
10000724
mh303-5086-2257
vu769-2638-9984
2015-07-25 13:39:47.0
10000725
ap256-3212-3933
tr133-3852-1694
2015-07-27 07:07:02.0
10000726
ap256-3212-3933
tr133-3852-1694
2015-07-15 17:25:55.0
10000727
rf900-2826-3516
wm793-9705-1200
2016-07-06 07:01:57.0
10000728
rf900-2826-3516
wm793-9705-1200
2015-07-23 05:41:28.0
10000729
xn096-9487-6455
qb395-9858-6804
2015-07-24 00:54:58.0
10000730
xn096-9487-6455
qb395-9858-6804
2015-07-23 08:20:30.0
10000731
kz977-7624-2277
zr166-3038-2048
2015-07-05 18:35:23.0
10000732
kz977-7624-2277
zr166-3038-2048
2015-07-08 08:52:20.0
10000733
rf900-2826-3516
ap256-3212-3933
2016-07-26 23:38:32.0
10000734
rf900-2826-3516
ap256-3212-3933
2015-07-26 19:27:23.0
10000735
wq561-0592-3410
sv377-8994-1980
2016-07-08 09:57:20.0
10000736
wq561-0592-3410
sv377-8994-1980
2015-07-03 15:49:12.0
10000737
xn096-9487-6455
da363-9840-1688
2015-07-12 01:41:36.0
10000738
xn096-9487-6455
da363-9840-1688
2015-07-09 00:30:31.0
10000739
da363-9840-1688
gg525-7926-7879
2015-07-15 05:24:53.0
10000740
da363-9840-1688
gg525-7926-7879
2015-07-25 20:56:09.0
10000741
tr133-3852-1694
mh303-5086-2257
2015-07-05 19:15:36.0
10000742
tr133-3852-1694
mh303-5086-2257
2015-07-06 06:18:43.0
10000743
ui175-6966-6040
sv377-8994-1980
2016-07-08 15:43:17.0
10000744
ui175-6966-6040
sv377-8994-1980
2015-07-05 15:24:03.0
10000745
xn096-9487-6455
mh303-5086-2257
2015-07-17 18:27:03.0
10000746
xn096-9487-6455
mh303-5086-2257
2015-07-21 14:51:19.0
10000747
fn610-3893-2306
ap256-3212-3933
2015-07-27 11:57:00.0
10000748
fn610-3893-2306
ap256-3212-3933
2015-07-25 22:12:13.0
10000749
ry307-0065-8575
zr166-3038-2048
2015-07-25 06:23:41.0
10000750
ry307-0065-8575
zr166-3038-2048
2015-07-19 05:07:24.0
10000751
rx816-9173-9273
vu769-2638-9984
2016-07-20 00:54:56.0
10000752
rx816-9173-9273
vu769-2638-9984
2015-07-21 05:41:21.0
10000753
md503-8006-7828
gg525-7926-7879
2015-07-27 13:09:27.0
10000754
md503-8006-7828
gg525-7926-7879
2015-07-23 23:43:29.0
10000755
qb395-9858-6804
da363-9840-1688
2015-07-19 08:58:11.0
10000756
qb395-9858-6804
da363-9840-1688
2015-07-03 15:21:57.0
10000757
ry307-0065-8575
mh303-5086-2257
2014-07-12 11:56:22.0
10000758
ry307-0065-8575
mh303-5086-2257
2015-07-24 07:55:57.0
86
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
10000759
xn096-9487-6455
mh303-5086-2257
2015-07-11 20:04:42.0
10000760
xn096-9487-6455
mh303-5086-2257
2015-07-09 00:37:11.0
10000761
tr133-3852-1694
ap256-3212-3933
2015-07-25 19:04:48.0
10000762
tr133-3852-1694
ap256-3212-3933
2015-07-16 20:56:56.0
10000763
qb395-9858-6804
md503-8006-7828
2014-07-13 21:21:09.0
10000764
qb395-9858-6804
md503-8006-7828
2015-07-04 16:16:42.0
10000765
zr166-3038-2048
sv377-8994-1980
2016-07-24 10:55:30.0
10000766
zr166-3038-2048
sv377-8994-1980
2015-07-07 16:24:51.0
10000767
vw937-4659-4381
fn610-3893-2306
2014-07-09 10:17:59.0
10000768
vw937-4659-4381
fn610-3893-2306
2015-07-15 05:18:54.0
10000769
ui175-6966-6040
xn096-9487-6455
2015-07-15 00:58:13.0
10000770
ui175-6966-6040
xn096-9487-6455
2015-07-17 00:09:12.0
10000773
qa922-4226-3460
ry307-0065-8575
2015-07-08 20:21:11.0
10000774
qa922-4226-3460
ry307-0065-8575
2015-07-16 12:09:28.0
10000775
kz977-7624-2277
rx816-9173-9273
2016-07-10 17:23:54.0
10000776
kz977-7624-2277
rx816-9173-9273
2015-07-06 03:33:27.0
10000777
kz977-7624-2277
tr133-3852-1694
2015-07-16 17:51:11.0
10000778
kz977-7624-2277
tr133-3852-1694
2015-07-18 00:45:47.0
10000779
rx816-9173-9273
sv377-8994-1980
2016-07-16 20:41:22.0
10000780
rx816-9173-9273
sv377-8994-1980
2015-07-19 10:15:06.0
10000783
qy806-8809-2873
md503-8006-7828
2014-07-16 19:28:17.0
10000784
qy806-8809-2873
md503-8006-7828
2015-07-03 11:35:15.0
.
19.8 Typ der Tabelle ändern
Mit der MySQL Abfrage
ALTER TABLE Chat3
ENGINE MyISAM;
kann man den Typ der Tabelle ändern.
.
Mit der MySQL Abfrage
SHOW CREATE TABLE Chat3;
erhält man.
Table
Create Table
Chat3
CREATE TABLE ‘chat3‘ ( Break ‘chatID‘ bigint(20) NOT NULL AUTO_INCREMENT,
Break ‘student1‘ char(15) NOT NULL, Break ‘student2‘ char(15) NOT NULL, Break ‘datumUndZeit‘ timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, Break PRIMARY KEY (‘chatID‘), Break KEY ‘Chat_student1_fore‘
(‘student1‘), Break KEY ‘Chat_student2_fore‘ (‘student2‘) Break ) ENGINE=MyISAM AUTO_INCREMENT=10000785 DEFAULT CHARSET=utf8
87
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
88
.
19.9 Tabelle leeren, löschen
Mit der MySQL Abfrage
DELETE
FROM Chat2;
kann man die Tabelle Chat2 leere.
.
Mit der MySQL Abfrage
DROP
TABLE Chat2;
kann man die Tabelle Chat2 löschen.
.
Mit der MySQL Abfrage
DROP
TABLE Chat3;
kann man die Tabelle Chat3 direkt löschen, ohne vorher zu leeren. .
.
19.10 Tabelle prüfen und reparieren
Tabellen bzw. die Dateien, die Tabellendaten speichern, sind hoch dynamisch Objekte. Sie werden in der Regel sehr häufig geändert und müssen daher regelmässig ganz oder teilweise auf die Festplatte geschrieben werden. Wenn dabei unvorhergesehene
Ereignisse auftreten, etwa Absturz des Systems, wird möglicherweise auch die Tabelle beschädigt. Ein solcher Zwischenfall
muss keinen vollständigen Datenverlust zur Folge haben. Nicht selten lassen sich die meisten Daten noch retten. Für die Prüfung
und Reparatur stellt MySQL daher die Befehle CHECK und REPAIR zur Verfügung
CHECK gilt sowohl für MyISAM als auch InnoDB Tabell
Syntax 19.10.0.1: <CHECK TABLE>::=ncs
CHECK TABLE <tbl_name>[, <tbl_name>] *
(
FOR UPGRADE ? QUICK ? FAST ? CHANGED ? MEDIUM ? EXTENDED ?
)
.
REPAIR gilt sowohl für MyISAM als auch InnoDB Tabell
Syntax 19.10.0.2: <REPAIR TABLE>::=ncs
REPAIR[ NO_WRITE_TO_BINLOG|LOCAL ] TABLE
<tbl_name>[, <tbl_name>] *
[ QUICK ] [ EXTENDED ] [ USE_FRM ]
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
19.11 ganze Datenbank löschen
Mit dem SQL Kommando
Syntax 19.11.0.1: <DROP DATABASE>::=ncs
DROP{DATABASE|SCHEMA }[ IF EXISTS ] <db_name>
.
kann man eine ganze Datenbank löschen
89
Kapitel 20
Primärschlüssel
20.1 Einführung
Der Primärschlüssel – PRIMARY KEY mit PK als gängiger Abkürzung ist das wichtigste Mittel, mit dem die Datenbank
alle Einträge verwaltet. Ohne PK sind weder Änderungen noch Löschungen einzelner Datensätze möglich, ohne alle Spalten
anzugeben. Im praktischen Einsatz haben Tabellen ohne Primärschlüssel keinen Sinn. Fremdschlüssel (FOREIGN KEYs, FK)
wären ohne Primärschlüssel nicht möglich..
Als Primärschlüssel geeignet sind folgende Arten von Spalten:
• der Datentyp GUID
• eine Spalte mit einem INTEGER-Datentyp, der als AUTO_INCREMENT verwendet wird oder ersatzweise durch eine
SEQUENCE bestimmt wird Die Beispieldatenbank benutzt ausnahmslos eine solche Spalte namens ID.
• eine Spalte mit einem INTEGER-Datentyp, sofern die Werte nach Lage der Dinge eindeutig sind und während der Lebenszeit der Datenbank nicht mehr geändert werden. Die Beispieldatenbank enthält in der Tabelle Mitarbeiter die Spalte
Personalnummer. Diese ist eigentlich eindeutig und dürfte deshalb als PK verwendet werden. Da die Firma aber ihre
interne Struktur ändern und die Personalnummern anpassen könnte, scheidet diese Spalte als PK aus.
• eine Kombination aus zwei Spalten, von denen jede dem PK jeweils einer anderen Tabelle entspricht, wenn die neue Tabelle nur die Zuordnungen zwischen den beiden anderen Tabellen darstellt. Die Tabelle Zuordnung_SF_FZ der Beispieldatenbank enthält die Zuordnungen Fahrzeuge/Schadensfälle; anstelle einer eigenen ID wäre auch ein Primärschlüssel
aus Fahrzeug_ID plus Schadensfall_ID möglich und sinnvoll.
Als Primärschlüssel ungeeignet oder unmöglich sind folgende Arten von Spalten:
• Unmöglich sind sämtliche Spalten, bei denen mehrere Datensätze mit dem gleichen Wert vorkommen können.
• Unmöglich ist eine Kombination von Name/Vorname bei allen Tabellen mit Namen, weil über kurz oder lang ein Müller,
Hans doppelt vorkommen dürfte.
• Auch eine Kombination von Name/Vorname/Geburtstag scheidet aus dem gleichen Grund aus.
• Eine Kombination von Name/Geburtstag/Region/lfdNr. (ähnlich wie bei der Versicherungsnummer der deutschen Rentenversicherung) ist zwar eindeutig, aber als Kombination von vier Spalten äusserst unpraktisch.
• Eine Spalte, deren Werte sich ändern können, ist zwar möglich, aber nicht geeignet. Das gilt z.B. für das Kfz-Kennzeichen,
aber auch (wie schon gesagt) für etwas wie die Personalnummer.
Der Primärschlüssel kann wie folgt festgelegt werden:
• im CREATE TABLE-Befehl bei einer einzelnen Spalte als Zuordnung für diese Spalte
• im CREATE TABLE-Befehl in der Liste der CONSTRAINT
90
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
91
• im ALTER TABLE-Befehl durch ADD CONSTRAINT: Die Tabelle erhält zunächst noch keinen PK, auch wenn das
durch AUTO_INCREMENT suggeriert und vorbereitet wird. Vielmehr wird der PK anschliessend (mit eigenem Namen)
definiert; der Vermerk in Klammern führt die Spalten auf, die als PK verwendet werden.
versuchen wir einen neuen Student unter desselbe primary key eines schon vorhandenen Studenten einzufügen
INSERT INTO Student VALUES
(aep256-3212-3933",
"Frau",
"Mariechen",
"Chaney",
"1990-02-20",
\"{A}rabienstrasse 97",
"CH-1273", "Basel", "Schweiz", "SS2012", "Bioinformatik",
"FB04",
"[email protected]",
"Kurdisch,Maltesisch",
"Wasserski,Segeln",
NULL,
"M\_SYq|JBYb");
so erhalten wir.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
erhält man.
Level
Code
Message
Error
1062
Duplicate entry 'ap256-3212-3933'for key 'PRIMARY'
Level
Code
Message
Error
1062
Duplicate entry 'ap256-3212-3933'for key 'PRIMARY'
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
.
20.2 Primärschlüssel über mehrere Spalten
.
Kapitel 21
Referenzielle Integrität
21.1 Foreign–Key–Regeln
referenzielle Integrität betrifft den Gebrauch von Fremdschlüssel. In unserer Tabelle Student kommt pLZ als Fremdschlüssel
vor. Wenn Sie aus der Tabelle Ort einen Ort x löschen, werden wir in der Folge bei vielen SQL–Abfragen Probleme bekommen,
die auf die Studenten y des Orts x zugreifen: um sicher zu stellen, dass in dieser Tabelle nur gültige verweise stehen, müssen wir
die Regel der referentziellen Integrität anwenden.
Referenzielle Integrität bedeutet, dass jeder von Null abweichende Wert in einem Fremdschlüsselattribut auch in der Relation vorkommen muss, in der dieses Attribut als Primärschlüssel auftritt. Wir können also keine pLZ in Student haben, die
nicht auch in Ort vorkäme. Aber wir können Studenten haben, mit NULL als pLZ.
Als Datenbankentwickler sind Sie dafür verantwortlich, dass so etwas nicht passieren kann. Sie müssen also vor dem
Löschen eines Datensatzes immer überprüfen, ob es nicht in einer anderen Tabelle einen Verweis auf gerade diesen Datensatz
gibt. Da auf Programmierer nicht immer Verlass ist (und Datenbanken manchmal auch manuell verändert werden müssen),
sehen viele Datenbanken Regeln zur Einhaltung der referenziellen Integrität vor. So genannte Foreign–Key–Regeln (Integritätsregeln) überprüfen bei jeder Veränderung der Datenbank, ob dadurch Querverweise zwischen Tabellen betroffen sind. Je nach
Deklaration des Fremdschlüssels gibt es dann vier mögliche Konsequenzen:
1. NO ACTION: Dieses Verfahren unterbindet jegliche Änderung eines Primärschlüssels, solange Fremdschlüsselreferenzen
darauf existieren. Es wäre dann verboten, pLZ aus der Tabelle Ort zu entfernen oder zu ändern. Man kann nur pLZ von
solchen Orten ändern oder löschen, für die keine Einträge in Student existieren
2. CASCADE: Hierbei setzt man die Änderung an der ursprünglichen Zeile auf alle Zeilen in allen referenzierenden Tabellen
fort. Daraus ergeben sich auch Konsequenzen für die Reihenfolge von Operationen: Wenn Sie einen neuen pLZ für einen
neuen Student speichern möchten, müssen Sie zuerst die pLZ und dann den Student eintragen. Wenn Sie Student und pLZ
wieder löschen möchten, müssen Sie dagegen zuerst den Student und dann die pLZ löschen. (Letzteres ist natürlich nur
möglich, wenn es keinen anderen Student gibt, der in diesem pLZ erschienen ist
3. SET NULL: Hiermit erlaubt man die Änderung oder Löschung in der ursprünglichen Tabelle. Um die referenzielle Integrität zu erhalten, werden danach alle entsprechenden Werte von Fremdschlüsseln auf Null gesetzt.
4. RESTRICT ist das Defaultverhalten. Das DELETE–Kommando verursacht einen Fehler, der Datensatz wird nicht gelöscht. (Durch den Fehler kommt es übrigens nicht automatisch zum Ende einer gerade laufenden Transaktion. Das Kommando wird einfach nicht ausgeführt. Die Transaktion muss wie üblich durch COMMIT oder ROLLBACK abgeschlossen
werden.)
Auch MySQL bietet einen derartigen Kontrollmechanismus, momentan allerdings nur dann, wenn Sie InnoDB–Tabellen
einsetzen.
Ein Fremdschlüssel kann während des Datenbankdesign
92
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Syntax 21.1.0.1: <FOREIGN KEY Constraints>::=ncs
[
CONSTRAINT[ <symbol>]
]
FOREIGN KEY
[ <index_name>] \( <index_col_name>[ , <index_col_name>] * \)
REFERENCES <tbl_name>\( <index_col_name>[ , <index_col_name>] * \)
[ ON DELETE <reference_option>]
[ ON UPDATE <reference_option>]
.
oder nachträglich
Syntax 21.1.0.2: <Fremdschlussel KEY in einer Tabelle einfuegen>::=ncs
ALTER TABLE[ <tbl_name>]
ADD CONTRAINT[ <contraintBezeichnung>]
[
FOREIGN KEY
[ <fremdschlusselBezeichnung>] \( <col_name>\)
REFERENCES <tbl_name>\( <index_col_name>[ , <index_col_name>] * \)
[ ON DELETE <reference_option>]
[ ON UPDATE <reference_option>]
]+
.
eingerichtet werden
Diese vier Aktionen auch können angegeben werden (wobei per Default RESTRICT gilt).
21.2 INSERT und Referenzielle Integrität
Wir wollen nun die Studentin
INSERT INTO Student VALUES
("mc121-0102-0386",
"Frau",
"Mariechen",
"Chaney",
"1990-02-20",
\"{A}rabienstrasse 97",
"CH-1273", "Basel", "Schweiz", "SS2012", "Bioinformatik",
"FB04",
"[email protected]",
"Kurdisch,Maltesisch",
"Wasserski,Segeln",
NULL,
"M\_SYq|JBYb");
.
.
inklusive ihren Ort
INSERT INTO Ort SET
93
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
pLZ="CH-1273",
geoBreite=134.12,
geoLaenge=23.45;
.
in unserem Datenbank einfügen Versuchen wir zuerst den Datensatz der Studentin einzufügen.
INSERT INTO Student VALUES
("mc121-0102-0386",
"Frau",
"Mariechen",
"Chaney",
"1990-02-20",
\"{A}rabienstrasse 97",
"CH-1273", "Basel", "Schweiz", "SS2012", "Bioinformatik",
"FB04",
"[email protected]",
"Kurdisch,Maltesisch",
"Wasserski,Segeln",
NULL,
"M\_SYq|JBYb");
.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
erhält man.
Level
Code
Message
Error
1062
Duplicate entry 'mc121-0102-0386'for key 'PRIMARY'
Level
Code
Message
Error
1062
Duplicate entry 'mc121-0102-0386'for key 'PRIMARY'
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
Aber wenn wir zuerst den Ort und dann die Studentin einfügen, dann klappt es alles.
Mit der MySQL Abfrage
INSERT INTO Ort SET
pLZ="CH-1273",
geoBreite=134.12,
geoLaenge=23.45;
kann man einen neuen Ort einfügen.
94
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
INSERT INTO Student VALUES
("mc121-0102-0386",
"Frau",
"Mariechen",
"Chaney",
"1990-02-20",
\"{A}rabienstrasse 97",
"CH-1273", "Basel", "Schweiz", "SS2012", "Bioinformatik",
"FB04",
"[email protected]",
"Kurdisch,Maltesisch",
"Wasserski,Segeln",
NULL,
"M\_SYq|JBYb");
kann man ein neuen Student einfügen. .
.
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname, plz
FROM Student
WHERE fachrichtung=’Bioinformatik’
OR studiengang=’FB04’;
erhält man.
studentID
anrede
vorname
nachname
plz
ap256-3212-3933
Herr
Gianni
Briland
D-93754
kz977-7624-2277
Herr
Aster
Frantzen
D-80765
mc121-0102-0386
Frau
Mariechen
Chaney
CH-1273
mh303-5086-2257
Herr
Mathis
Looschelders
D-33229
tr133-3852-1694
Frau
Trudhildis
Winkel
D-91256
xx292-1755-8089
Frau
Luitgard
Krumm
D-91256
.
21.3 UPDATE und Referenzielle Integrität
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname
FROM Student
WHERE fachrichtung=’Bioinformatik’
OR studiengang=’FB04’;
erhält man.
studentID
anrede
vorname
nachname
95
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
ap256-3212-3933
Herr
Gianni
Briland
kz977-7624-2277
Herr
Aster
Frantzen
mc121-0102-0386
Frau
Mariechen
Chaney
mh303-5086-2257
Herr
Mathis
Looschelders
tr133-3852-1694
Frau
Trudhildis
Winkel
xx292-1755-8089
Frau
Luitgard
Krumm
.
Mit der MySQL Abfrage
UPDATE Student
SET studiengang=’FB07’
WHERE studentID=’mc121-0102-0386’;
kann man den studiengang eines Studenten ändern.
.
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname
FROM Student
WHERE fachrichtung=’Bioinformatik’
OR studiengang=’FB04’;
erhält man.
studentID
anrede
vorname
nachname
ap256-3212-3933
Herr
Gianni
Briland
kz977-7624-2277
Herr
Aster
Frantzen
mc121-0102-0386
Frau
Mariechen
Chaney
mh303-5086-2257
Herr
Mathis
Looschelders
tr133-3852-1694
Frau
Trudhildis
Winkel
xx292-1755-8089
Frau
Luitgard
Krumm
.
Die Uni will den Fachbereich FB04 in FB24 ändern:
UPDATE Fachbereich
SET fbID=’FB24
WHERE fbID=’FB04’;
.
.
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname
FROM Student
WHERE fachrichtung=’Bioinformatik’
OR studiengang=’FB04’;
erhält man.
96
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
studentID
anrede
vorname
nachname
ap256-3212-3933
Herr
Gianni
Briland
kz977-7624-2277
Herr
Aster
Frantzen
mc121-0102-0386
Frau
Mariechen
Chaney
mh303-5086-2257
Herr
Mathis
Looschelders
tr133-3852-1694
Frau
Trudhildis
Winkel
xx292-1755-8089
Frau
Luitgard
Krumm
97
.
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname
FROM Student
WHERE hauptfach=’FB24’
OR studiengang=’FB24’;
erhält man.
.
Leider ist Frau Mariechen Chaney einen Fehler bezüglich der PLZ ihres Orts unterlaufen. Die richtige PLZ lautet nicht CH-1273
sondern CH-1272
UPDATE Ort
SET pLZ=’CH-1272’
WHERE pLZ=’CH-1273’;
.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
erhält man.
Level
Code
Message
Error
1451
Cannot delete or update
a parent row: a foreign
key constraint fails
(‘universitaet‘.‘student‘,
CONSTRAINT
‘Student_pLZ_fore‘ FOREIGN KEY (‘plz‘)
REFERENCES
‘ort‘
(‘plz‘))
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Level
Code
Message
Error
1451
Cannot delete or update
a parent row: a foreign
key constraint fails
(‘universitaet‘.‘student‘,
CONSTRAINT
‘Student_pLZ_fore‘ FOREIGN KEY (‘plz‘)
REFERENCES
‘ort‘
(‘plz‘))
.
Diese Fehlermeldung war zu erwarten. Die Änderung geht in 2 Schritte
1. zuerst muss einen neuen Ort mit der PLZ CH-3272 eingefügt werden
2. dann muss den Ort von Frau Mariechen Chaney auf diesen neuen Ort aktualisert werden
3. Am Ende kann man den Ort mit den falschen PLZ entfernen.
Mit der MySQL Abfrage
INSERT INTO Ort VALUES (
"CH-1272", 134.12, 23.45);
kann man ein neuen Ort einfügen.
.
Mit der MySQL Abfrage
UPDATE Student
SET pLZ=’CH-1272’
WHERE pLZ=’CH-1273’;
ann man den Ort eines Studenten ändern.
.
Mit der MySQL Abfrage
SELECT studentID, anrede, vorname, nachname, pLZ
FROM Student
WHERE studentID=’mc121-0102-0386’;
erhält man.
.
studentID
anrede
vorname
nachname
plz
mc121-01020386
Frau
Mariechen
Chaney
CH-1272
98
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
99
21.4 DELETE und Referenzielle Integrität
In der Nähe von PLZ D-25970 hat man eine neue Uni eröffnet, so dass alle Studenten dieses Ort dort umgezogen sind
man kann nicht zuerst den Ort mit der PLZ D-25970 entfernen und dann deren Studenten, sondern muss man dies in
umgekehrten Reihenfolge tun: Zuerst die Studenten und dann den Ort
Mit der MySQL Abfrage
DELETE
FROM Student
WHERE pLZ=’D-25970’;
entfernt man ein Datensatz aus Student.
.
Mit der MySQL Abfrage
DELETE
FROM Ort
WHERE pLZ=’D-25970’;
entfernt man ein Datensatz aus Ort. .
.
21.5 INSERT und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
Eine Tabelle kann sogar mit sich selbst verbunden werden. Zunächst mag das seltsam klingen, aber es gibt gute Gründe, dies
gelegentlich zu tun. Die Lehrkraft–Tabelle (unserer Beispieldatenbank) enthält beispielsweise einen selbstreferenzierenden
Fremdschlüssel: eine Spalte seinChefIst, die auf den Primärschlüssel lehrkraftID derselben Tabelle verweist. Diese Spalte
referenziert auf den jeweiligen Vorgesetzten eines Lehrkrafts (wenn der Lehrkraft nicht selbst der Chef des Ganzen ist; dann ist
die Spalte natürlich NULL).
Versuchen wir unseren neuen Mitarbeiter (1029,Dr.Herr Sixt Lauterbach) sowie seine neue Chefin (1033, Dr. Prof. Frau
Margret Columb) in der Tabelle Lehrkraft einzufügen
INSERT INTO Lehrkraft VALUES
(1029,
"Dr.",
"Herr",
"Sixt",
"Lauterbach",
"N.163",
1033, "1969-10-04", "http://www.naji.webatu.com/", "[email protected]", "mann\_xy1029.jpeg");
.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
erhält man.
Level
Code
Message
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Error
1452
Cannot add or update a child row: a foreign key constraint fails (‘universitaet‘.‘lehrkraft‘, CONSTRAINT ‘Lehrkraft_seinChefIst_fore‘ FOREIGN KEY (‘seinChefIst‘) REFERENCES ‘lehrkraft‘ (‘lehrkraftID‘) ON DELETE CASCADE ON UPDATE CASCADE)
Level
Code
Message
Error
1452
Cannot add or update a child row: a foreign key constraint fails (‘universitaet‘.‘lehrkraft‘, CONSTRAINT ‘Lehrkraft_seinChefIst_fore‘ FOREIGN KEY (‘seinChefIst‘) REFERENCES ‘lehrkraft‘ (‘lehrkraftID‘) ON DELETE CASCADE ON UPDATE CASCADE)
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
.
Mit der MySQL Abfrage
INSERT INTO Lehrkraft SET
lehrkraftID=1033,
titel="Dr. Prof.",
anrede="Frau",
vorname="Margret",
nachname="Columb",
buero="M.243",
seinChefIst=1033,
geburtsDatum="1979-01-04",
webAdresse="http://www.naji.webatu.com/",
email="[email protected]",
portrait="frau\_xy1033.jpeg";
fügen wir zuerst den Chef in der Tabelle ein.
.
Mit der MySQL Abfrage
SELECT lehrkraftID, titel, anrede, vorname, nachname, seinChefIst
FROM Lehrkraft
WHERE lehrkraftID>1028;
erhält man.
lehrkraftID
titel
anrede
vorname
nachname
seinChefIst
1033
Dr. Prof.
Frau
Margret
Columb
1033
.
100
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
101
Danach fügen wir den Mitarbeiter in der Tabelle ein
INSERT INTO Lehrkraft VALUES
(1029,
"Dr.",
"Herr",
"Sixt",
"Lauterbach",
"N.163",
1033, "1969-10-04", "http://www.naji.webatu.com/", "[email protected]", "mann\_xy1029.jpeg");
.
.
Mit der MySQL Abfrage
SELECT lehrkraftID, titel, anrede, vorname, nachname, seinChefIst
FROM Lehrkraft
WHERE lehrkraftID>1028;
erhält man.
lehrkraftID
titel
anrede
vorname
nachname
seinChefIst
1029
Dr.
Herr
Sixt
Lauterbach
1033
1033
Dr. Prof.
Frau
Margret
Columb
1033
.
21.6 UPDATE und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
Der lehrkraftID von Chef ist nicht 1033 sondern 1030.
würden Wir zuerst das seinChefIst bei Mitarbeiter ändern versuchen, würde das nicht gehen
UPDATE Lehrkraft SET
seinChefIst=1130
WHERE lehrkraftID=1029;
.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
erhält man.
Level
Code
Message
Error
1452
Cannot add or update a child row: a foreign key constraint fails (‘universitaet‘.‘lehrkraft‘, CONSTRAINT ‘Lehrkraft_seinChefIst_fore‘ FOREIGN KEY (‘seinChefIst‘) REFERENCES ‘lehrkraft‘ (‘lehrkraftID‘) ON DELETE CASCADE ON UPDATE CASCADE)
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
102
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
Level
Code
Message
Error
1452
Cannot add or update a child row: a foreign key constraint fails (‘universitaet‘.‘lehrkraft‘, CONSTRAINT ‘Lehrkraft_seinChefIst_fore‘ FOREIGN KEY (‘seinChefIst‘) REFERENCES ‘lehrkraft‘ (‘lehrkraftID‘) ON DELETE CASCADE ON UPDATE CASCADE)
.
Aber wenn wir das lehrkraftID vom Chef ändern
UPDATE Lehrkraft SET
lehrkraftID=1130
WHERE lehrkraftID=1033;
.
.
Mit der MySQL Abfrage
SELECT lehrkraftID, titel, anrede, vorname, nachname, seinChefIst
FROM Lehrkraft
WHERE lehrkraftID>1028;
erhält man.
lehrkraftID
titel
anrede
vorname
nachname
seinChefIst
1029
Dr.
Herr
Sixt
Lauterbach
1033
1033
Dr. Prof.
Frau
Margret
Columb
1033
.
21.7 DELETE und Referenzielle Integrität bei selbstreferenzierenden Fremdschlüssel
.
DELETE FROM Lehrkraft
WHERE lehrkraftID=1033;
.
.
Mit der MySQL Abfrage
SHOW WARNINGS;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
103
erhält man.
Level
Code
Message
Code
Message
.
Mit der MySQL Abfrage
SHOW ERRORS;
erhält man.
Level
.
Mit der MySQL Abfrage
SELECT lehrkraftID, titel, anrede, vorname, nachname, seinChefIst
FROM Lehrkraft
WHERE lehrkraftID>1028;
erhält man.
lehrkraftID
titel
anrede
vorname
nachname
seinChefIst
.
21.8 Wirkung
Wir haben gesehen, dass es bei Referenzielle Integrität sehr auf die Reihenfolge der Insert–Operation aufkommt. Für die
Speicherung von Datenbank SQL Dateien, kann man zunächst die Tabellen (ohne Referenzielle Integrität) erzeugen, dann diese
mit Daten füllen und erst zum Schluss Referenzielle Integrität einführen, wie in folgenden Listing
Listing 21.1: universitaet.sql
1
2
3
4
5
6
7
8
/*
Datenbank u n i v e r s i t a e t e r s t e l l e n
*/
DROP DATABASE I F EXISTS u n i v e r s i t a e t ;
9
10
11
12
13
CREATE DATABASE u n i v e r s i t a e t ;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
14
15
16
17
104
/*
Mit dem D a t e n b a n k u n i v e r s i t a e t a r b e i t e n
*/
USE u n i v e r s i t a e t ;
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
−− T a b l e : F a c h b e r e i c h
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS F a c h b e r e i c h ;
CREATE TABLE F a c h b e r e i c h (
f b I D CHAR( 4 ) NOT NULL,
b e z e i c h n u n g VARCHAR( 2 5 0 ) NOT NULL,
webAdresse VARCHAR( 2 5 3 ) DEFAULT NULL,
g r u e n d u n g s J a h r YEAR( 4 ) NOT NULL,
dekan VARCHAR( 2 5 0 ) DEFAULT "" ,
a b s c h l u s s SET ( ’Master of Arts’ , ’Internationaler Master of Science ’ , ’L2 Haupt - und
Realschule’ , ’L3 Gymnasien’ , ’ Bachelor of Arts’ , ’ Bachelor of Science ’ , ’ Magister’ , ’
Master of Education’ , ’Master of Science ’ , ’ Staatsexamen’ , ’Neues Lehramt ’ ) NOT NULL,
PRIMARY KEY ( f b I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
−− T a b l e : O r t
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS Ort ;
CREATE TABLE Ort (
p l z VARCHAR( 1 3 ) NOT NULL,
g e o B r e i t e DECIMAL ( 9 , 6 ) NOT NULL,
g e o L a e n g e DECIMAL ( 9 , 6 ) NOT NULL,
PRIMARY KEY ( p l z )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
−− T a b l e : Raum
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS Raum ;
CREATE TABLE Raum (
raumID CHAR( 5 ) NOT NULL,
a n z a h l T u e r e n SMALLINT DEFAULT NULL,
b r e i t e DOUBLE( 4 , 2 ) NOT NULL,
l a e n g e REAL ( 4 , 2 ) NOT NULL,
PRIMARY KEY ( raumID )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
105
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
−− T a b l e : L e h r k r a f t
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS L e h r k r a f t ;
CREATE TABLE L e h r k r a f t (
l e h r k r a f t I D INT ( 7 ) NOT NULL,
t i t e l VARCHAR( 2 5 0 ) NOT NULL,
a n r e d e ENUM( ’Frau’ , ’Herr’ ) ,
vorname VARCHAR( 2 5 0 ) NOT NULL,
nachname VARCHAR( 2 5 0 ) NOT NULL,
b u e r o VARCHAR( 2 5 0 ) DEFAULT NULL,
s e i n C h e f I s t INT ( 7 ) DEFAULT NULL,
geburtsDatum DATE DEFAULT " 0000 -00 -00" ,
webAdresse VARCHAR( 2 5 3 ) NOT NULL,
e m a i l VARCHAR( 2 3 0 ) NOT NULL,
p o r t r a i t VARCHAR( 2 3 0 ) NOT NULL,
FOREIGN KEY L e h r k r a f t _ s e i n C h e f I s t _ f o r e ( s e i n C h e f I s t ) REFERENCES L e h r k r a f t (
l e h r k r a f t I D ) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( l e h r k r a f t I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
−− T a b l e : V e r a n s t a l t u n g
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS V e r a n s t a l t u n g ;
CREATE TABLE V e r a n s t a l t u n g (
v e r a n s t a l t u n g I D INT ( 8 ) ,
l e h r k r a f t I D INT ( 7 ) NOT NULL,
b e z e i c h n u n g VARCHAR( 2 5 0 ) NOT NULL,
s e m e s t e r CHAR( 6 ) DEFAULT NULL,
s c h e i n v e r g a b e VARCHAR( 2 5 0 ) DEFAULT NULL,
wo chenStunden FLOAT DEFAULT NULL,
maxAnzahl TINYINT NOT NULL,
tatAnzahl TINYINT DEFAULT NULL,
art ENUM( ’Klausur ’ , ’ Vorlesung’ , ’Vortrag ’ , ’ Praktikum’ , ’ Hauptseminar’ , ’Seminar ’ , ’
Tutorium’ , ’Vorkurs ’ , ’Proseminar’ , ’ Kolloqium’ , ’ Vorbereitungskurs’ , ’ Laborpraktikum’ )
,
h i n w e i s TEXT DEFAULT NULL,
INDEX V e r a n s t a l t u n g _ v e r a n s t a l t u n g I D _ i n d e ( v e r a n s t a l t u n g I D ) ,
FOREIGN KEY V e r a n s t a l t u n g _ l e h r k r a f t I D _ f o r e ( l e h r k r a f t I D ) REFERENCES L e h r k r a f t (
l e h r k r a f t I D ) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( v e r a n s t a l t u n g I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
106
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
−− T a b l e : S t u d e n t
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS S t u d e n t ;
CREATE TABLE S t u d e n t (
s t u d e n t I D CHAR( 1 5 ) DEFAULT NULL,
a n r e d e ENUM( ’Frau’ , ’Herr’ ) ,
vorname VARCHAR( 2 5 0 ) NOT NULL,
nachname VARCHAR( 2 5 0 ) NOT NULL,
geburtsDatum DATE DEFAULT NULL,
strasseHNr VARCHAR( 2 5 3 ) DEFAULT "" ,
p l z VARCHAR( 1 3 ) NOT NULL,
s t a d t VARCHAR( 2 3 0 ) NOT NULL,
l a n d VARCHAR( 2 3 0 ) NOT NULL,
s t u d i e n b e g i n n CHAR( 6 ) NOT NULL,
f a c h r i c h t u n g VARCHAR( 2 3 0 ) NOT NULL,
s t u d i e n g a n g CHAR( 4 ) NOT NULL,
e m a i l VARCHAR( 2 3 0 ) NOT NULL,
s p r a c h e VARCHAR( 2 3 0 ) NOT NULL,
ho bby VARCHAR( 2 3 0 ) NOT NULL,
f o t o VARCHAR( 2 3 0 ) DEFAULT NULL,
s t r i c h c o d e VARCHAR( 1 2 ) NOT NULL,
UNIQUE S t u d e n t _ e m a i l _ u n i q ( e m a i l ) ,
INDEX S t u d e n t _ s t u d e n t I D _ i n d e ( s t u d e n t I D ) ,
FOREIGN KEY S t u d e n t _ s t u d i e n g a n g _ f o r e ( s t u d i e n g a n g ) REFERENCES F a c h b e r e i c h ( f b I D ) ON
DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY S t u d e n t _ p L Z _ f o r e ( pLZ ) REFERENCES Ort ( pLZ ) ,
PRIMARY KEY ( s t u d e n t I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
−− T a b l e : B e s u c h t
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS B e s u c h t ;
CREATE TABLE B e s u c h t (
s t u d e n t CHAR( 1 5 ) NOT NULL,
v e r a n s t a l t u n g INT ( 8 ) ,
wPF ENUM( ’Wahlfach’ , ’Pflichtfach’ , ’Gast’ ) DEFAULT NULL,
p u n k t e SMALLINT DEFAULT NULL,
FOREIGN KEY B e s u c h t _ v e r a n s t a l t u n g _ f o r e ( v e r a n s t a l t u n g ) REFERENCES V e r a n s t a l t u n g (
v e r a n s t a l t u n g I D ) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY B e s u c h t _ s t u d e n t _ f o r e ( s t u d e n t ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE
CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( s t u d e n t , v e r a n s t a l t u n g )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
107
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
−− T a b l e : S p r e c h s t u n d e
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS S p r e c h s t u n d e ;
CREATE TABLE S p r e c h s t u n d e (
l e h r k r a f t I D INT ( 7 ) NOT NULL,
nummer SMALLINT NOT NULL,
s e m e s t e r CHAR( 6 ) NOT NULL,
wo chentag ENUM( ’Montag ’ , ’ Dienstag’ , ’ Mittwoch’ , ’ Donnerstag’ , ’Freitag ’ ) NOT NULL,
u h r Z e i t TIME DEFAULT NULL,
FOREIGN KEY S p r e c h s t u n d e _ l e h r k r a f t I D _ f o r e ( l e h r k r a f t I D ) REFERENCES L e h r k r a f t (
l e h r k r a f t I D ) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( l e h r k r a f t I D , nummer )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
−− T a b l e : Z u g a n g s D a t e n
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS ZugangsDaten ;
CREATE TABLE ZugangsDaten (
p e r s o n CHAR( 1 5 ) NOT NULL,
l a u f z a h l INT ( 4 ) ,
u s e r n a m e VARCHAR( 3 0 ) NOT NULL,
p a s s w o r t CHAR( 1 2 ) NOT NULL,
datumUndZeit TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,
d a s I P VARCHAR( 2 5 0 ) DEFAULT NULL,
HTTP_ACCEPT_LANGUAGE VARCHAR( 2 5 0 ) DEFAULT NULL,
HTTP_USER_AGENT VARCHAR( 2 5 0 ) DEFAULT NULL,
SERVER_NAME VARCHAR( 2 5 0 ) DEFAULT NULL,
SERVER_SOFTWARE VARCHAR( 2 5 0 ) DEFAULT NULL,
SERVER_PROTOCOL VARCHAR( 2 5 0 ) DEFAULT NULL,
FOREIGN KEY Z u g a n g s D a t e n _ p e r s o n _ f o r e ( p e r s o n ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON
DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( p e r s o n , l a u f z a h l )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
214
215
216
217
218
219
220
221
222
223
224
225
−− T a b l e : K o n t a k t D e t a i l s
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS K o n t a k t D e t a i l s ;
CREATE TABLE K o n t a k t D e t a i l s (
ko ntakt INT ( 4 ) ,
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
226
227
228
229
230
231
108
s t u d e n t I D CHAR( 1 5 ) NOT NULL,
nummer VARCHAR( 3 0 ) NOT NULL,
art ENUM( ’Fax’ , ’Handy ’ , ’ FestNetz’ , ’ Smartphone’ , ’Telefon ’ , ’Telefon und Fax’ ) NOT NULL,
FOREIGN KEY K o n t a k t D e t a i l s _ s t u d e n t I D _ f o r e ( s t u d e n t I D ) REFERENCES S t u d e n t ( s t u d e n t I D )
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( kontakt , s t u d e n t I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
−− T a b l e : Rad io
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS R a d i o ;
CREATE TABLE R a d i o (
r a d i o I D INT ( 8 ) NOT NULL,
s t u d e n t I D CHAR( 1 5 ) NOT NULL,
c h a n s o n VARCHAR( 2 5 0 ) NOT NULL,
r e g i s t r i r e n A m DATETIME NOT NULL,
v o t e SMALLINT UNSIGNED DEFAULT 0 ,
FOREIGN KEY R a d i o _ s t u d e n t I D _ f o r e ( s t u d e n t I D ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE
CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( r a d i o I D , s t u d e n t I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
−− T a b l e : Cinema
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS Cinema ;
CREATE TABLE Cinema (
c i n e m a I D INT ( 8 ) NOT NULL,
s t u d e n t I D CHAR( 1 5 ) NOT NULL,
v i d e o c l i p VARCHAR( 2 5 0 ) NOT NULL,
datum DATE NOT NULL,
z e i t TIME DEFAULT " 00:00:00" ,
v o t e SMALLINT UNSIGNED DEFAULT 0 ,
FOREIGN KEY C i n e m a _ s t u d e n t I D _ f o r e ( s t u d e n t I D ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON
DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( c i n e m a I D , s t u d e n t I D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
271
272
273
274
275
276
277
278
−− T a b l e : G e p r u e f t
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
279
280
281
282
283
284
285
286
287
288
289
290
291
292
109
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS G e p r u e f t ;
CREATE TABLE G e p r u e f t (
s t u d e n t I D CHAR( 1 5 ) NOT NULL,
v e r a n s t a l t u n g I D INT ( 8 ) ,
l e h r k r a f t I D INT ( 7 ) NOT NULL,
datum DATE NOT NULL,
u h r z e i t TIME NOT NULL,
n o t e FLOAT NOT NULL,
FOREIGN KEY G e p r u e f t _ s t u d e n t I D _ f o r e ( s t u d e n t I D ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON
DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY G e p r u e f t _ v e r a n s t a l t u n g I D _ f o r e ( v e r a n s t a l t u n g I D ) REFERENCES V e r a n s t a l t u n g
( v e r a n s t a l t u n g I D ) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY G e p r u e f t _ l e h r k r a f t I D _ f o r e ( l e h r k r a f t I D ) REFERENCES L e h r k r a f t ( l e h r k r a f t I D
) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( s t u d e n t I D , v e r a n s t a l t u n g I D , l e h r k r a f t I D , datum )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
−− T a b l e : Ch at
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS Chat ;
CREATE TABLE Chat (
chatI D BIGINT NOT NULL AUTO_INCREMENT ,
s t u d e n t 1 CHAR( 1 5 ) NOT NULL,
s t u d e n t 2 CHAR( 1 5 ) NOT NULL,
datumUndZeit TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,
FOREIGN KEY C h a t _ s t u d e n t 1 _ f o r e ( s t u d e n t 1 ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE
CASCADE ON UPDATE CASCADE,
FOREIGN KEY C h a t _ s t u d e n t 2 _ f o r e ( s t u d e n t 2 ) REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE
CASCADE ON UPDATE CASCADE,
PRIMARY KEY ( chatI D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
312
313
314
315
316
317
318
319
320
321
322
323
324
325
−− T a b l e : Mensa
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
DROP TABLE I F EXISTS Mensa ;
CREATE TABLE Mensa (
mensaI D BIGINT NOT NULL,
k o n s e r v i e r u n g s s t o f f e SET ( ’Antioxidationsmittel’ , ’ Backtriebmittel’ , ’ Emulgatoren’ , ’
Farbstoffe’ , ’ Festigungsmittel’ , ’Feuchthaltemittel’ , ’ Geliermittel’ , ’ Komplexbildner’
, ’ Konservierungsstoffe’ , ’ Mehlbehandlungsmittel’ , ’ Schaummittel’ , ’Schmelzsalze’ , ’
Stabilisatoren’ , ’ Treibgase’ , ’ Trennmittel’ , ’Verdickungsmittel’ ) NOT NULL,
menue TEXT ,
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
326
327
328
110
datum DATE NOT NULL,
PRIMARY KEY ( mensaI D )
) ENGINE=InnoDB DEFAULT CHARSET=u t f 8 ;
329
330
331
332
333
334
/* insgesamt 9 Zeilen */
335
336
337
338
339
340
341
342
343
344
INSERT INTO F a c h b e r e i c h VALUES ( " FB02" , " Mathematik" , " http :// wwwFB02 - frankfurt.de" ,
1 9 9 1 , " Herr Weber" , " Internationaler Master of Science ,L2 Haupt - und Realschule ,L3
Gymnasien , Bachelor of Arts , Bachelor of Science ,Magister , Neues Lehramt " ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB03" , " Informatik" , " http :// wwwFB03 - frankfurt.de" ,
2 0 0 0 , " Frau Magdolt " , " Internationaler Master of Science ,L2 Haupt - und Realschule ,
L3 Gymnasien , Bachelor of Arts" ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB04" , " Physik " , " http :// wwwFB04 - frankfurt.de" ,
2 0 0 0 , " Herr Altens " , " Master of Arts , Internationaler Master of Science ,L2 Haupt und Realschule , Bachelor of Arts ,Magister , Master of Science ,Staatsexamen , Neues
Lehramt " ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB05" , " Sprach -, Kulturwissenschaften und Gestaltung
" , " http ://wwwFB05 - frankfurt.de" , 2 0 0 1 , " Herr Berger " , " Master of Arts ,
Internationaler Master of Science ,L2 Haupt - und Realschule , Bachelor of Arts , Master
of Science " ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB06" , " Mathematik und Naturwissenschaften" , " http
:// wwwFB06 - frankfurt.de" , 1 9 9 1 , " Herr Alfred " , "Master of Arts , Bachelor of Arts ,
Bachelor of Science , Master of Education" ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB07" , " Biologie" , "http ://wwwFB07 - frankfurt.de" ,
1 9 9 9 , " Herr Ludwig " , " Master of Arts , Internationaler Master of Science ,L3
Gymnasien , Neues Lehramt " ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB11" , " Wirtschaftswissenschaften" , " http ://wwwFB11 frankfurt.de" , 1 9 9 2 , " Herr Meyer" , " Internationaler Master of Science ,L2 Haupt und Realschule , Bachelor of Arts , Bachelor of Science , Magister , Master of Education" )
;
INSERT INTO F a c h b e r e i c h VALUES ( " FB12" , "Agrar - und Forstwissenschaften" , "http ://
wwwFB12 - frankfurt.de" , 1 9 9 8 , " Frau Schreiber" , "L2 Haupt - und Realschule , Bachelor
of Arts , Master of Science , Staatsexamen" ) ;
INSERT INTO F a c h b e r e i c h VALUES ( " FB22" , " Ingenieurwissenschaften" , " http ://wwwFB22 frankfurt.de" , 1 9 9 5 , " Frau Graf" , " Master of Science , Staatsexamen" ) ;
345
346
347
348
349
350
−− FOREIGN KEY B e z i e h u n g e n ;
351
352
−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ;
353
354
ALTER TABLE B e s u c h t ADD CONSTRAINT B e s u c h t _ v e r a n s t a l t u n g _ f o r e FOREIGN KEY (
v e r a n s t a l t u n g ) REFERENCES V e r a n s t a l t u n g ( v e r a n s t a l t u n g I D ) ON DELETE CASCADE ON
UPDATE CASCADE ; ;
355
356
357
ALTER TABLE B e s u c h t ADD CONSTRAINT B e s u c h t _ s t u d e n t _ f o r e FOREIGN KEY ( s t u d e n t )
REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE CASCADE ON UPDATE CASCADE ; ;
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
358
111
ALTER TABLE S t u d e n t ADD CONSTRAINT S t u d e n t _ s t u d i e n g a n g _ f o r e FOREIGN KEY ( s t u d i e n g a n g )
REFERENCES F a c h b e r e i c h ( f b I D ) ; ;
359
360
ALTER TABLE S t u d e n t ADD CONSTRAINT S t u d e n t _ p L Z _ f o r e FOREIGN KEY ( pLZ ) REFERENCES Ort
( pLZ ) ; ;
361
362
ALTER TABLE V e r a n s t a l t u n g ADD CONSTRAINT V e r a n s t a l t u n g _ l e h r k r a f t I D _ f o r e FOREIGN KEY (
l e h r k r a f t I D ) REFERENCES L e h r k r a f t ( l e h r k r a f t I D ) ; ;
363
364
ALTER TABLE R a d i o ADD CONSTRAINT R a d i o _ s t u d e n t I D _ f o r e FOREIGN KEY ( s t u d e n t I D )
REFERENCES S t u d e n t ( s t u d e n t I D ) ; ;
365
366
ALTER TABLE Cinema ADD CONSTRAINT C i n e m a _ s t u d e n t I D _ f o r e FOREIGN KEY ( s t u d e n t I D )
REFERENCES S t u d e n t ( s t u d e n t I D ) ; ;
367
368
ALTER TABLE K o n t a k t D e t a i l s ADD CONSTRAINT K o n t a k t D e t a i l s _ s t u d e n t I D _ f o r e FOREIGN KEY (
s t u d e n t I D ) REFERENCES S t u d e n t ( s t u d e n t I D ) ; ;
369
370
ALTER TABLE S p r e c h s t u n d e ADD CONSTRAINT S p r e c h s t u n d e _ l e h r k r a f t I D _ f o r e FOREIGN KEY (
l e h r k r a f t I D ) REFERENCES L e h r k r a f t ( l e h r k r a f t I D ) ; ;
371
372
ALTER TABLE L e h r k r a f t ADD CONSTRAINT L e h r k r a f t _ s e i n C h e f I s t _ f o r e FOREIGN KEY (
s e i n C h e f I s t ) REFERENCES L e h r k r a f t ( l e h r k r a f t I D ) ON DELETE CASCADE ON UPDATE
CASCADE ; ;
373
374
ALTER TABLE Chat ADD CONSTRAINT G e p r u e f t _ s t u d e n t 1 _ f o r e FOREIGN KEY ( s t u d e n t 1 )
REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE CASCADE ON UPDATE CASCADE, ;
375
376
ALTER TABLE Chat ADD CONSTRAINT G e p r u e f t _ s t u d e n t 2 _ f o r e FOREIGN KEY ( s t u d e n t 2 )
REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE CASCADE ON UPDATE CASCADE, ;
377
378
ALTER TABLE G e p r u e f t ADD CONSTRAINT G e p r u e f t _ s t u d e n t I D _ f o r e FOREIGN KEY ( s t u d e n t I D )
REFERENCES S t u d e n t ( s t u d e n t I D ) ON DELETE CASCADE ON UPDATE CASCADE, ;
379
380
ALTER TABLE G e p r u e f t ADD CONSTRAINT G e p r u e f t _ v e r a n s t a l t u n g I D _ f o r e FOREIGN KEY (
v e r a n s t a l t u n g I D ) REFERENCES V e r a n s t a l t u n g ( v e r a n s t a l t u n g I D ) ON DELETE CASCADE ON
UPDATE CASCADE, ;
381
382
ALTER TABLE G e p r u e f t ADD CONSTRAINT G e p r u e f t _ l e h r k r a f t I D _ f o r e FOREIGN KEY (
l e h r k r a f t I D ) REFERENCES L e h r k r a f t ( l e h r k r a f t I D ) ; ;
Kapitel 25
Mathematical Functions
25.1 Einführung
Mit der MySQL Abfrage
SELECT PI(), 2+3, 2*3, 2-3, 4/3, 5%3;
erhält man.
PI()
2+3
2*3
2-3
4/3
5%3
3.141593
5
6
-1
1.3333
2
.
Mit der MySQL Abfrage
SELECT RAND();
erhält man.
RAND()
0.4605640801233836
.
Mit der MySQL Abfrage
SELECT 3*RAND()+2;
erhält man.
3*RAND()+2
4.734333005486366
.
Mit der MySQL Abfrage
SELECT ROUND(13*RAND()+2,-1), ROUND(13*RAND()+2), ROUND(13*RAND()+2,0), ROUND(13*RAND()+2,2);
112
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
erhält man.
ROUND(13*RAND()+2,- ROUND(13*RAND()+2) ROUND(13*RAND()+2,0)ROUND(13*RAND()+2,2)
1)
0
4
4
8.76
.
Mit der MySQL Abfrage
SELECT TRUNCATE((13*RAND()+2),-1), TRUNCATE((13*RAND()+2),0), TRUNCATE((13*RAND()+1),2);
erhält man.
TRUNCATE((13*RAND()+2),TRUNCATE((13*RAND()+2),0)
TRUNCATE((13*RAND()+1),2)
1)
0
9
12.16
.
Mit der MySQL Abfrage
SELECT CEIL(13.3), FLOOR(13.3), CEIL(13.5), FLOOR(13.5), CEIL(13.7), FLOOR(13.7);
erhält man.
CEIL(13.3)
FLOOR(13.3)
CEIL(13.5)
FLOOR(13.5)
CEIL(13.7)
FLOOR(13.7)
14
13
14
13
14
13
.
25.2 Abfragen mit Bezug zu einer Tabelle verwenden
.
Mit der MySQL Abfrage
SELECT *, (breite*laenge) as Flaehe FROM Raum;
erhält man.
raumID
anzahlTueren
breite
laenge
Flaehe
H.619
2
31.35
29.25
916.99
H.876
1
58.30
10.55
615.07
I.261
1
34.55
16.95
585.62
J.206
1
11.25
55.50
624.38
L.396
2
18.85
53.05
999.99
M.149
1
26.85
30.45
817.58
113
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
M.270
2
47.55
12.00
570.60
R.408
2
25.50
45.55
1161.52
R.496
2
26.85
55.10
1479.44
S.413
3
19.75
29.40
580.65
T.449
2
45.20
40.70
1839.64
T.602
3
36.90
60.70
2239.83
W.757
3
63.05
19.05
1201.10
114
Kapitel 26
Date Functions
26.1 Abfragen ohne Bezug zu einer Tabelle verwenden
.
Mit der MySQL Abfrage
SELECT WEEK(’2008-02-20’);
erhält man.
WEEK('2008-02-20')
7
.
Mit der MySQL Abfrage
SELECT WEEK(’2008-02-20’,0);
erhält man.
WEEK('2008-02-20',0)
7
.
Mit der MySQL Abfrage
SELECT WEEK(’2008-02-20’,1);
erhält man.
WEEK('2008-02-20',1)
8
.
Mit der MySQL Abfrage
115
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
SELECT WEEK(’2008-12-31’,1);
erhält man.
WEEK('2008-12-31',1)
53
.
Mit der MySQL Abfrage
SELECT WEEK(’2000-01-01’,2);
erhält man.
WEEK('2000-01-01',2)
52
.
Mit der MySQL Abfrage
SELECT NOW();
erhält man.
NOW()
2008-09-19 11:00:54.0
.
Mit der MySQL Abfrage
SELECT CURDATE();
erhält man.
CURDATE()
2008-09-19
.
Mit der MySQL Abfrage
SELECT DAYNAME(CURDATE());
erhält man.
DAYNAME(CURDATE())
Monday
116
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SELECT EXTRACT(YEAR FROM CURDATE());
erhält man.
EXTRACT(YEAR FROM CURDATE())
2008
.
Mit der MySQL Abfrage
SELECT CURRENT_DATE();
erhält man.
CURRENT_DATE()
2008-09-19
.
Mit der MySQL Abfrage
SELECT CURRENT_TIMESTAMP();
erhält man.
CURRENT_TIMESTAMP()
2008-09-19 11:00:54.0
.
Mit der MySQL Abfrage
SELECT DATE_SUB(’2008-01-02’, INTERVAL 31 DAY);
erhält man.
DATE_SUB('2008-01-02', INTERVAL 31 DAY)
2007-12-02
.
117
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
118
26.2 Abfragen mit Bezug zu einer Tabelle verwenden
Für jeden Prüfungstermin haben wir zwar das Datum angegeben aber es wäre noch sinnvoller, wenn wir auch den Wochentag
angeben würden.
Mit der MySQL Abfrage
SELECT *, DAYNAME(datum) as wochentag FROM Geprueft;
erhält man.
studentID
veranstaltungID lehrkraftID
datum
uhrzeit
note
wochentag
ap256-3212-3933
26
1018
2015-03-19
14:15:00
2.7
Thursday
fn610-3893-2306
24
1016
2013-04-15
11:10:00
1
Monday
fn610-3893-2306
29
1011
2013-12-13
13:05:00
1.7
Friday
gg525-7926-7879
17
1002
2015-10-07
14:00:00
1
Wednesday
kz977-7624-2277
36
1008
2018-03-09
12:00:00
1.7
Friday
md503-8006-7828
14
1007
2013-06-10
10:05:00
1
Monday
mh303-5086-2257
22
1009
2014-03-24
10:00:00
3
Monday
qa922-4226-3460
27
1011
2015-02-27
10:00:00
3.3
Friday
qb395-9858-6804
36
1005
2016-06-23
13:05:00
3.7
Thursday
ry307-0065-8575
17
1014
2015-12-08
13:00:00
4
Tuesday
ry307-0065-8575
18
1017
2016-01-02
15:10:00
1
Saturday
sv377-8994-1980
31
1009
2019-06-27
13:00:00
4.7
Thursday
tr133-3852-1694
25
1015
2015-08-22
12:10:00
3
Saturday
tr133-3852-1694
31
1015
2015-05-18
10:00:00
3
Monday
ui175-6966-6040
41
1007
2015-05-23
14:05:00
1
Saturday
vu769-2638-9984
32
1009
2014-05-26
13:15:00
2.7
Monday
vu769-2638-9984
35
1011
2014-02-14
15:15:00
3.3
Friday
vw937-4659-4381
18
1009
2016-01-12
14:10:00
2.3
Tuesday
wq561-0592-3410
15
1014
2013-10-05
12:05:00
4.7
Saturday
wq561-0592-3410
30
1011
2015-08-19
10:10:00
3.7
Wednesday
xn096-9487-6455
12
1009
2016-09-13
13:10:00
3.7
Tuesday
xx292-1755-8089
20
1011
2016-10-08
11:05:00
2.3
Saturday
xx292-1755-8089
29
1004
2016-11-25
10:15:00
5
Friday
zr166-3038-2048
18
1008
2015-04-07
10:10:00
3.3
Tuesday
zr166-3038-2048
21
1007
2015-10-05
11:00:00
2.3
Monday
.
26.3 Formatierungsfunktionen von Datum
.
Sqquenz
Bedeutung
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
%Y
Vierstellige Jahreszahl
%y
Zweistellige Jahreszahl
%M
Vollstaendiger Monatsname
%b
erste drei Buchstaben des Monatsnames
%m
Zweistellige Monatsnummer (01. . . 12)
%c
Monatsnummer
%d
Zweistelliger Minatstag (01. . . 31)
%e
Monatstag (1. . . 31)
%r
12 Stunden Zeot mit AM und PM
%T
24 Stunden Zeit
%H
Zweistellige Stundenangabe
%i
Zweistellige Minutenangabe
%s
Zweistellige Sekundenangabe
%%
Literales %
.
Mit der MySQL Abfrage
SELECT datum, DATE_FORMAT(datum, ’%M %d, %Y’) as wochentag FROM Geprueft;
erhält man.
datum
wochentag
2016-09-13
September 13, 2016
2013-06-10
June 10, 2013
2013-10-05
October 05, 2013
2015-10-07
October 07, 2015
2015-12-08
December 08, 2015
2016-01-02
January 02, 2016
2016-01-12
January 12, 2016
2015-04-07
April 07, 2015
2016-10-08
October 08, 2016
2015-10-05
October 05, 2015
2014-03-24
March 24, 2014
2013-04-15
April 15, 2013
2015-08-22
August 22, 2015
2015-03-19
March 19, 2015
2015-02-27
February 27, 2015
2013-12-13
December 13, 2013
2016-11-25
November 25, 2016
2015-08-19
August 19, 2015
2019-06-27
June 27, 2019
2015-05-18
May 18, 2015
2014-05-26
May 26, 2014
119
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
2014-02-14
February 14, 2014
2018-03-09
March 09, 2018
2016-06-23
June 23, 2016
2015-05-23
May 23, 2015
.
26.4 Datum mit Formatierungsfunktionen zerlegen
.
Mit der MySQL Abfrage
SELECT datum,
DATE\_FORMAT(datum, ’%Y’) as jahr,
DATE\_FORMAT(datum, ’%d’) as tag1,
DATE\_FORMAT(datum, ’%e’) as tag2
FROM Geprueft;
erhält man.
datum
jahr
tag1
tag2
2016-09-13
2016
13
13
2013-06-10
2013
10
10
2013-10-05
2013
05
5
2015-10-07
2015
07
7
2015-12-08
2015
08
8
2016-01-02
2016
02
2
2016-01-12
2016
12
12
2015-04-07
2015
07
7
2016-10-08
2016
08
8
2015-10-05
2015
05
5
2014-03-24
2014
24
24
2013-04-15
2013
15
15
2015-08-22
2015
22
22
2015-03-19
2015
19
19
2015-02-27
2015
27
27
2013-12-13
2013
13
13
2016-11-25
2016
25
25
2015-08-19
2015
19
19
2019-06-27
2019
27
27
2015-05-18
2015
18
18
2014-05-26
2014
26
26
2014-02-14
2014
14
14
2018-03-09
2018
09
9
120
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
2016-06-23
2016
23
23
2015-05-23
2015
23
23
.
26.5 Datum mit String–Funktionen zerlegen
.
Mit der MySQL Abfrage
SELECT datum,
LEFT(datum, 4) as jahr,
MID(datum, 6,2) as monat,
RIGHT(datum, 2) as tag
FROM Geprueft;
erhält man.
datum
jahr
monat
tag
2016-09-13
2016
09
13
2013-06-10
2013
06
10
2013-10-05
2013
10
05
2015-10-07
2015
10
07
2015-12-08
2015
12
08
2016-01-02
2016
01
02
2016-01-12
2016
01
12
2015-04-07
2015
04
07
2016-10-08
2016
10
08
2015-10-05
2015
10
05
2014-03-24
2014
03
24
2013-04-15
2013
04
15
2015-08-22
2015
08
22
2015-03-19
2015
03
19
2015-02-27
2015
02
27
2013-12-13
2013
12
13
2016-11-25
2016
11
25
2015-08-19
2015
08
19
2019-06-27
2019
06
27
2015-05-18
2015
05
18
2014-05-26
2014
05
26
2014-02-14
2014
02
14
2018-03-09
2018
03
09
2016-06-23
2016
06
23
2015-05-23
2015
05
23
121
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
122
Kapitel 27
Time Functions
27.1 Abfragen ohne Bezug zu einer Tabelle verwenden
.
Mit der MySQL Abfrage
SELECT CURRENT_TIME();
erhält man.
CURRENT_TIME()
11:09:51
.
27.2 Uhrzeiten und Sekunden ineinander konvertieren
.
Mit der MySQL Abfrage
SELECT uhrzeit,
TIME\_TO\_SEC(uhrzeit) AS in\_sekunden,
TIME\_TO\_SEC(uhrzeit)/60 AS in\_minuten,
SEC\_TO\_TIME(TIME\_TO\_SEC(uhrzeit)+7200) AS plus\_2\_Stunden
FROM Geprueft;
erhält man.
uhrzeit
in_sekunden
in_minuten
plus_2_Stunden
14:15:00
51300
855.0000
16:15:00
11:10:00
40200
670.0000
13:10:00
13:05:00
47100
785.0000
15:05:00
14:00:00
50400
840.0000
16:00:00
12:00:00
43200
720.0000
14:00:00
10:05:00
36300
605.0000
12:05:00
10:00:00
36000
600.0000
12:00:00
123
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
10:00:00
36000
600.0000
12:00:00
13:05:00
47100
785.0000
15:05:00
13:00:00
46800
780.0000
15:00:00
15:10:00
54600
910.0000
17:10:00
13:00:00
46800
780.0000
15:00:00
12:10:00
43800
730.0000
14:10:00
10:00:00
36000
600.0000
12:00:00
14:05:00
50700
845.0000
16:05:00
13:15:00
47700
795.0000
15:15:00
15:15:00
54900
915.0000
17:15:00
14:10:00
51000
850.0000
16:10:00
12:05:00
43500
725.0000
14:05:00
10:10:00
36600
610.0000
12:10:00
13:10:00
47400
790.0000
15:10:00
11:05:00
39900
665.0000
13:05:00
10:15:00
36900
615.0000
12:15:00
10:10:00
36600
610.0000
12:10:00
11:00:00
39600
660.0000
13:00:00
124
Kapitel 28
String-Funktionen
28.1 REPLACE und Co
Mit der MySQL Abfrage
SELECT ASCII(’2’), ASCII(2), ASCII(’dx’);
erhält man.
ASCII('2')
ASCII(2)
ASCII('dx')
50
50
100
.
Mit der MySQL Abfrage
SELECT BIN(12), CONV(12,10,2), CONV(12,10,8);
erhält man.
BIN(12)
CONV(12,10,2)
CONV(12,10,8)
1100
1100
14
.
Mit der MySQL Abfrage
SELECT BIT_LENGTH(’MySQL’), CHAR(77,121,83,81,’76’), HEX(CHAR(256));
erhält man.
BIT_LENGTH('MySQL') CHAR(77,121,83,81,'76') HEX(CHAR(256))
40
MySQL
0100
.
Mit der MySQL Abfrage
SELECT SOUNDEX(’Mayer’), SOUNDEX(’Maier’), SOUNDEX(’Meier’);
125
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
erhält man.
SOUNDEX('Mayer')
SOUNDEX('Maier')
SOUNDEX('Meier')
M600
M600
M600
.
Mit der MySQL Abfrage
SELECT ’Mayer’ SOUNDS LIKE ’Meier’, ’Mueller’ SOUNDS LIKE ’Meier’;
erhält man.
'Mayer'SOUNDS LIKE 'Meier'
'Mueller'SOUNDS LIKE 'Meier'
1
0
.
Mit der MySQL Abfrage
SELECT STRCMP(’text’, ’text’), STRCMP(’text1’, ’text’);
erhält man.
STRCMP('text', 'text')
STRCMP('text1', 'text')
0
1
.
Mit der MySQL Abfrage
SELECT LOWER(’teXt’), UPPER(’text’);
erhält man.
LOWER('teXt')
UPPER('text')
text
TEXT
.
Mit der MySQL Abfrage
SELECT TRIM(’ teXt ’), RTRIM(’ text ’), LTRIM(’ text ’);
erhält man.
TRIM('teXt ')
RTRIM('text ')
LTRIM('text ')
teXt
text
text
126
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SELECT REPLACE(’www.mysql.com’, ’w’, ’Ww’);
erhält man.
REPLACE('www.mysql.com', 'w', 'Ww')
WwWwWw.mysql.com
.
Mit der MySQL Abfrage
SELECT REVERSE(’abc’);
erhält man.
REVERSE('abc')
cba
.
Mit der MySQL Abfrage
SELECT RIGHT(’foobarbar’, 4);
erhält man.
RIGHT('foobarbar', 4)
rbar
.
Mit der MySQL Abfrage
SELECT RPAD(’hi’,5,’!’);
erhält man.
RPAD('hi',5,'!')
hi!!!
.
Mit der MySQL Abfrage
SELECT RTRIM(’barbar ’);
erhält man.
127
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
RTRIM('barbar ')
barbar
.
28.2 Abfragen mit Bezug zu einer Tabelle verwenden
In der Tabelle Fachbereich wurde in der Spalte webAdresse der Punkt hinter http://www vergessen. Das korrigieren wir nun
Mit der MySQL Abfrage
SELECT webAdresse FROM Fachbereich;
erhält man.
webAdresse
http://wwwFB02-frankfurt.de
http://wwwFB03-frankfurt.de
http://wwwFB04-frankfurt.de
http://wwwFB05-frankfurt.de
http://wwwFB06-frankfurt.de
http://wwwFB07-frankfurt.de
http://wwwFB11-frankfurt.de
http://wwwFB12-frankfurt.de
http://wwwFB22-frankfurt.de
.
Mit der MySQL Abfrage
UPDATE Fachbereich SET webAdresse = REPLACE(webAdresse, ’http://www’, ’http://www.’);
kann man die Spalte webAdresse korrigieren.
.
Mit der MySQL Abfrage
SELECT webAdresse FROM Fachbereich;
erhält man.
webAdresse
http://www.FB02-frankfurt.de
http://www.FB03-frankfurt.de
http://www.FB04-frankfurt.de
http://www.FB05-frankfurt.de
http://www.FB06-frankfurt.de
128
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
http://www.FB07-frankfurt.de
http://www.FB11-frankfurt.de
http://www.FB12-frankfurt.de
http://www.FB22-frankfurt.de
.
129
Kapitel 29
Statistische Funktionen
29.1 Einführung
.
29.2 Berechnung deskriptiver Statistiken
.
Mit der MySQL Abfrage
SELECT COUNT(note),
ROUND(SUM(note),4) as
ROUND(MIN(note),4) as
ROUND(MAX(note),4) as
ROUND(AVG(note),4) as
ROUND(STD(note),4) as
FROM Geprueft;
sumNote,
minNote,
maxNote,
meanNote,
stdNote
erhält man.
COUNT(note)
sumNote
minNote
maxNote
meanNote
stdNote
25
69.1000
1.0000
5.0000
2.7640
1.2026
.
Die Varianz kann auf n Freiheitsgraden basieren und sie ist dann var(note)=STD(note)*STD(note), wobei STDDEV(note) Synonym für STD(note) Will man abe die Varianz, die auf n−1 Freiheitsgraden basiert, berechnen, so muss man diese programmieren
Mit der MySQL Abfrage
SELECT @anzahl:=COUNT(note),
@summe:=ROUND(SUM(note),4),
@summe2:=ROUND(SUM(note*note),4)
FROM Geprueft;
erhält man.
@anzahl:=COUNT(note) @summe:=ROUND(SUM(note),4)
@summe2:=ROUND(SUM(note*note),4)
25
69.1000
227.1500
130
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
131
.
Mit der MySQL Abfrage
SELECT @var2:=ROUND(((@anzahl*@summe2)-@summe*@summe)/(@anzahl*(@anzahl-1)),4);
erhält man.
@var2:=ROUND(((@anzahl*@summe2)@summe*@summe)/(@anzahl*(@anzahl-1)),4)
1.5066
.
Mit der MySQL Abfrage
SELECT ROUND(SQRT(@var2),4);
erhält man.
ROUND(SQRT(@var2),4)
1.2274
.
Der Median ist der Wert, der am häufigsten vorkommt. Um ihn zu bestimmen, zählen wir jden Wert und ermitteln, welcher am
häufigsten vorkommt Mit der MySQL Abfrage
SELECT note, COUNT(note) as vorkommen
FROM Geprueft
GROUP BY note
ORDER BY vorkommen DESC;
erhält man.
note
vorkommen
1
5
3
3
3.3
3
3.7
3
2.3
3
4.7
2
2.7
2
1.7
2
4
1
5
1
.
Mit der MySQL Abfrage
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
SELECT note, COUNT(note) as vorkommen
FROM Geprueft
GROUP BY note
ORDER BY vorkommen DESC
LIMIT 1;
erhält man.
note
vorkommen
1
5
.
29.3 Gruppenbezogene deskriptive Statistiken
.
Nach Veranstaltung
SELECT veranstaltungID,
COUNT(note) as anzahl,
ROUND(SUM(note),4) as sumNote,
ROUND(MIN(note),4) as minNote,
ROUND(MAX(note),4) as maxNote,
ROUND(AVG(note),4) as meanNote,
ROUND(STD(note),4) as stdNote
FROM Geprueft
GROUP BY veranstaltungID;
erhält man.
veranstaltungID anzahl
sumNote
minNote
maxNote
meanNote
stdNote
12
1
3.7000
3.7000
3.7000
3.7000
0.0000
14
1
1.0000
1.0000
1.0000
1.0000
0.0000
15
1
4.7000
4.7000
4.7000
4.7000
0.0000
17
2
5.0000
1.0000
4.0000
2.5000
1.5000
18
3
6.6000
1.0000
3.3000
2.2000
0.9416
20
1
2.3000
2.3000
2.3000
2.3000
0.0000
21
1
2.3000
2.3000
2.3000
2.3000
0.0000
22
1
3.0000
3.0000
3.0000
3.0000
0.0000
24
1
1.0000
1.0000
1.0000
1.0000
0.0000
25
1
3.0000
3.0000
3.0000
3.0000
0.0000
26
1
2.7000
2.7000
2.7000
2.7000
0.0000
27
1
3.3000
3.3000
3.3000
3.3000
0.0000
29
2
6.7000
1.7000
5.0000
3.3500
1.6500
30
1
3.7000
3.7000
3.7000
3.7000
0.0000
31
2
7.7000
3.0000
4.7000
3.8500
0.8500
132
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
32
1
2.7000
2.7000
2.7000
2.7000
0.0000
35
1
3.3000
3.3000
3.3000
3.3000
0.0000
36
2
5.4000
1.7000
3.7000
2.7000
1.0000
41
1
1.0000
1.0000
1.0000
1.0000
0.0000
.
Nach Lehrkraft
SELECT lehrkraftID,
COUNT(note) as anzahl,
ROUND(SUM(note),4) as sumNote,
ROUND(MIN(note),4) as minNote,
ROUND(MAX(note),4) as maxNote,
ROUND(AVG(note),4) as meanNote,
ROUND(STD(note),4) as stdNote
FROM Geprueft
GROUP BY lehrkraftID;
erhält man.
lehrkraftID
anzahl
sumNote
minNote
maxNote
meanNote
stdNote
1002
1
1.0000
1.0000
1.0000
1.0000
0.0000
1004
1
5.0000
5.0000
5.0000
5.0000
0.0000
1005
1
3.7000
3.7000
3.7000
3.7000
0.0000
1007
3
4.3000
1.0000
2.3000
1.4333
0.6128
1008
2
5.0000
1.7000
3.3000
2.5000
0.8000
1009
5
16.4000
2.3000
4.7000
3.2800
0.8447
1011
5
14.3000
1.7000
3.7000
2.8600
0.7419
1014
2
8.7000
4.0000
4.7000
4.3500
0.3500
1015
2
6.0000
3.0000
3.0000
3.0000
0.0000
1016
1
1.0000
1.0000
1.0000
1.0000
0.0000
1017
1
1.0000
1.0000
1.0000
1.0000
0.0000
1018
1
2.7000
2.7000
2.7000
2.7000
0.0000
.
Nach Veranstaltung und Lehrkraft
SELECT veranstaltungID,
lehrkraftID,
COUNT(note) as anzahl,
ROUND(SUM(note),4) as sumNote,
ROUND(MIN(note),4) as minNote,
ROUND(MAX(note),4) as maxNote,
ROUND(AVG(note),4) as meanNote,
ROUND(STD(note),4) as stdNote
FROM Geprueft
GROUP BY veranstaltungID, lehrkraftID;
133
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
erhält man.
veranstaltungID
lehrkraftID
anzahl
sumNote
minNote
maxNote
meanNote
stdNote
12
1009
1
3.7000
3.7000
3.7000
3.7000
0.0000
14
1007
1
1.0000
1.0000
1.0000
1.0000
0.0000
15
1014
1
4.7000
4.7000
4.7000
4.7000
0.0000
17
1002
1
1.0000
1.0000
1.0000
1.0000
0.0000
17
1014
1
4.0000
4.0000
4.0000
4.0000
0.0000
18
1008
1
3.3000
3.3000
3.3000
3.3000
0.0000
18
1009
1
2.3000
2.3000
2.3000
2.3000
0.0000
18
1017
1
1.0000
1.0000
1.0000
1.0000
0.0000
20
1011
1
2.3000
2.3000
2.3000
2.3000
0.0000
21
1007
1
2.3000
2.3000
2.3000
2.3000
0.0000
22
1009
1
3.0000
3.0000
3.0000
3.0000
0.0000
24
1016
1
1.0000
1.0000
1.0000
1.0000
0.0000
25
1015
1
3.0000
3.0000
3.0000
3.0000
0.0000
26
1018
1
2.7000
2.7000
2.7000
2.7000
0.0000
27
1011
1
3.3000
3.3000
3.3000
3.3000
0.0000
29
1004
1
5.0000
5.0000
5.0000
5.0000
0.0000
29
1011
1
1.7000
1.7000
1.7000
1.7000
0.0000
30
1011
1
3.7000
3.7000
3.7000
3.7000
0.0000
31
1009
1
4.7000
4.7000
4.7000
4.7000
0.0000
31
1015
1
3.0000
3.0000
3.0000
3.0000
0.0000
32
1009
1
2.7000
2.7000
2.7000
2.7000
0.0000
35
1011
1
3.3000
3.3000
3.3000
3.3000
0.0000
36
1005
1
3.7000
3.7000
3.7000
3.7000
0.0000
36
1008
1
1.7000
1.7000
1.7000
1.7000
0.0000
41
1007
1
1.0000
1.0000
1.0000
1.0000
0.0000
.
29.4 Generierung von Häufigkeitsverteilungen
.
Mit der MySQL Abfrage
SELECT note,
COUNT(note) as anzahl
FROM Geprueft
GROUP BY note;
erhält man die Häufigkeitsverteilung.
note
anzahl
134
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
1
5
1.7
2
2.3
3
2.7
2
3
3
3.3
3
3.7
3
4
1
4.7
2
5
1
.
Mit der MySQL Abfrage
SELECT @anzahl:=COUNT(note)
FROM Geprueft;
.
@anzahl:=COUNT(note)
25
.
SELECT note,
ROUND((COUNT(note)*100)/@anzahl,4) as prozent
FROM Geprueft
GROUP BY note;
erhält man.
note
prozent
1
20.0000
1.7
8.0000
2.3
12.0000
2.7
8.0000
3
12.0000
3.3
12.0000
3.7
12.0000
4
4.0000
4.7
8.0000
5
4.0000
135
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SELECT note,
REPEAT(’*’, COUNT(note)) as anzahl
FROM Geprueft
GROUP BY note;
erhält man die Häufigkeitsverteilung.
note
anzahl
1
*****
1.7
**
2.3
***
2.7
**
3
***
3.3
***
3.7
***
4
*
4.7
**
5
*
.
Mit der MySQL Abfrage
SELECT @anzahl:=COUNT(note)
FROM Geprueft;
.
@anzahl:=COUNT(note)
25
.
SELECT note,
REPEAT(’*’, (COUNT(note)*100)/@anzahl) as prozent
FROM Geprueft
GROUP BY note;
erhält man.
note
prozent
1
********************
1.7
********
2.3
************
136
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
2.7
********
3
************
3.3
************
3.7
************
4
****
4.7
********
5
****
.
29.5 Berechnung linerarer Regression
.
Mit der MySQL Abfrage
SELECT @anzahl:=COUNT(raumID) AS anzahl,
@sumBreite:=ROUND(SUM(breite),4) AS {\ss}um Breite",
@meanBreite:=ROUND(AVG(breite),4) AS {\ss}um Breite",
@sumLaenge:=ROUND(SUM(laenge),4) AS {\ss}um Laenge",
@meanLaenge:=ROUND(AVG(laenge),4) AS {\ss}um Laenge",
@sumBreite2:=ROUND(SUM(breite*breite),4) AS {\ss}um Breite2",
@sumLaenge2:=ROUND(SUM(laenge*laenge),4) AS {\ss}um Laenge2",
@sumBreiteLaenge:=ROUND(SUM(breite*laenge),4) AS {\ss}um Breite Laenge"
FROM Raum;
erhält man die Häufigkeitsverteilun.
anzahl
sum Breite
sum Breite
sum Laenge
sum Laenge
sum Breite2
13
445.9500
34.3038
458.2500
35.2500
18180.4125 19898.9775 13632.4075
.
Mit der MySQL Abfrage
SELECT
@a1:=ROUND((@anzahl*@sumBreiteLaenge-@sumBreite*@sumLaenge)/
(@anzahl*@sumBreite2-@sumBreite*@sumBreite),4)
AS slope;
.
slope
-0.7241
.
Mit der MySQL Abfrage
sum Laenge2
sum Breite Laenge
137
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
138
SELECT @a0:=ROUND((@meanLaenge-@a1*@meanBreite),4)
AS intercept;
.
intercept
60.0894
.
Mit der MySQL Abfrage
SELECT CONCAT(’Laenge = ’, ROUND(@a1,4),’ * Breite + ’,ROUND(@a0,4))
AS ’least squares regression’;
.
least squares regression
Laenge = -0.7241 * Breite + 60.0894
.
Mit der MySQL Abfrage
SELECT
ROUND(((@anzahl*@sumBreiteLaenge-@sumBreite*@sumLaenge)/
SQRT((@anzahl*@sumBreite2-@sumBreite*@sumBreite)*(@anzahl*@sumLaenge2-@sumLaenge*@sumLaenge))),4)
AS korrelation;
.
korrelation
-0.6352
.
Kapitel 30
Kurze SQL–Einführung
Nachdem wir uns mit dem Datenbank kurz beschäftigt haben und nachdem Wir MySQL installiert haben, geben wir in diesem
Kapitel eine kurze Einführung in die Datenbanksprache MySQL.
30.1 Alle Zeilen einer Tabelle anzeigen
Es ist ziemlich einfach, sich alle Datensätze einer einzigen Tabelle anzeigen zu lassen. Sie können sich aber auch die Datensätze
verschiedener Tabellen ansehen, vorher eine Auswahl treffen, was Sie genau interessiert, und dann auch noch Berechnungen mit
oder ohne Veränderungen an den Werten ausführen.
Mit einem einfachen SELECT-Befehl können Sie sich den gesamten Inhalt einer oder mehrerer Spalten anzeigen lassen.
Mit diesem Befehl werden Ihnen die Namen und Vornamen aller Personen, die in der Tabelle kunde gespeichert sind, angezeigt:
.
Mit der MySQL Abfrage
SELECT * FROM Ort;
erhält man.
plz
geoBreite
geoLaenge
CH-1272
134.120000
23.450000
CH-1273
134.120000
23.450000
D-31281
-40.981092
-43.268893
D-33229
-45.098792
-24.101093
D-80765
-19.459092
-25.092296
D-91256
-19.425000
-39.261198
D-93754
-46.817692
-36.168495
.
Wenn Sie die Befehle direkt in MySQL eingeben, müssen Sie die mit Semikolon (;) abschliessen und dann mit
139
Enter
ausführen
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
140
30.2 Spalten auswählen
.
Mit der MySQL Abfrage
SELECT plz FROM Ort;
erhält man.
plz
CH-1272
CH-1273
D-31281
D-33229
D-80765
D-91256
D-93754
.
30.3 Inhaltlich gleiche Zeilen von der Ausgabe ausschliessen
.
Mit der MySQL Abfrage
SELECT DISTINCT wPF FROM Besucht;
erhält man.
wPF
Gast
Pflichtfach
Wahlfach
NULL
.
Um eine Distinct–Ergebnismenge zu generieren, müssen die Daten sortiert werden, was bei grossen Ergebnismengen viel Zeit
in Anspruch nimmt. Bitte fallen Sie nicht darauf herein, DISTINCT zu benutzen, nur um Duplikate auszuschliessen. Stattdessen
nehmen Sie sich besser Zeit, die Daten, mit denen Sie arbeiten, genau zu verstehen. So können Sie erkennen, ob Duplikate
möglich sind oder nicht.
30.4 Spalten mit NULL–Werten abfragen
Vielfach treffen Sie bei der Arbeit mit SQL auf sogenannte NULL–Marken. Häufig wird hierfür auch der Begriff NULL–Wert
oder NULL–Values verwendet. NULL bedeutet, dass ein Attribut (Wert) für das Feld fehlt, d.h., dass der Wert leer oder
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
unbekannt ist. NULL kann demnach bedeuten:
• Das Attribut hat einen Wert, dieser ist aber nicht bekannt
• Das Attribut hat in der Realität keinen Wert.
NULL ist also nicht 0, weil dies ein konkreter bekannter Wert ist. NULL ist auch nicht eine leere Zeichenkette wie ''.
Mit der MySQL Abfrage
SELECT * FROM Besucht WHERE wPF IS NULL;
erhält man.
student
veranstaltung
wPF
punkte
fn610-3893-2306
33
NULL
41
mh303-5086-2257
11
NULL
69
qb395-9858-6804
12
NULL
92
qb395-9858-6804
19
NULL
44
ry307-0065-8575
28
NULL
83
sv377-8994-1980
35
NULL
43
ui175-6966-6040
21
NULL
46
vu769-2638-9984
14
NULL
60
wm793-9705-1200
22
NULL
62
zr166-3038-2048
35
NULL
40
.
Mit der MySQL Abfrage
SELECT * FROM Besucht WHERE wPF IS NOT NULL;
erhält man.
student
veranstaltung
wPF
punkte
ap256-3212-3933
13
Gast
21
ap256-3212-3933
23
Gast
57
ap256-3212-3933
26
Gast
88
ap256-3212-3933
33
Pflichtfach
52
fn610-3893-2306
13
Gast
76
fn610-3893-2306
16
Gast
67
fn610-3893-2306
17
Pflichtfach
83
fn610-3893-2306
21
Wahlfach
68
fn610-3893-2306
25
Pflichtfach
57
gg525-7926-7879
26
Pflichtfach
27
gg525-7926-7879
33
Wahlfach
25
gg525-7926-7879
35
Pflichtfach
80
141
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
kz977-7624-2277
11
Pflichtfach
42
kz977-7624-2277
23
Wahlfach
93
kz977-7624-2277
24
Gast
61
kz977-7624-2277
28
Pflichtfach
25
md503-8006-7828
12
Wahlfach
27
md503-8006-7828
19
Gast
35
md503-8006-7828
26
Wahlfach
92
md503-8006-7828
29
Pflichtfach
42
md503-8006-7828
30
Wahlfach
41
md503-8006-7828
31
Pflichtfach
45
mh303-5086-2257
17
Pflichtfach
40
mh303-5086-2257
24
Pflichtfach
41
mh303-5086-2257
26
Pflichtfach
29
nf165-3898-8727
22
Pflichtfach
29
nf165-3898-8727
23
Pflichtfach
30
nf165-3898-8727
25
Pflichtfach
59
nf165-3898-8727
26
Gast
35
nf165-3898-8727
33
Gast
47
qa922-4226-3460
30
Wahlfach
39
qa922-4226-3460
35
Wahlfach
47
qa922-4226-3460
40
Wahlfach
32
qb395-9858-6804
24
Gast
90
qb395-9858-6804
25
Pflichtfach
41
qb395-9858-6804
33
Wahlfach
22
qb395-9858-6804
39
Wahlfach
31
rf900-2826-3516
11
Wahlfach
33
rf900-2826-3516
30
Pflichtfach
27
ry307-0065-8575
16
Wahlfach
35
ry307-0065-8575
19
Pflichtfach
93
ry307-0065-8575
22
Wahlfach
23
ry307-0065-8575
38
Wahlfach
70
sv377-8994-1980
30
Gast
74
tr133-3852-1694
13
Wahlfach
54
tr133-3852-1694
22
Pflichtfach
37
tr133-3852-1694
25
Wahlfach
47
tr133-3852-1694
41
Pflichtfach
73
ui175-6966-6040
12
Pflichtfach
60
ui175-6966-6040
33
Wahlfach
35
vu769-2638-9984
24
Pflichtfach
67
vu769-2638-9984
39
Pflichtfach
64
vw937-4659-4381
26
Pflichtfach
45
vw937-4659-4381
28
Pflichtfach
62
vw937-4659-4381
30
Wahlfach
93
142
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
vw937-4659-4381
37
Gast
90
wm793-9705-1200
13
Gast
74
wm793-9705-1200
26
Pflichtfach
26
wm793-9705-1200
30
Pflichtfach
74
wm793-9705-1200
37
Gast
62
wq561-0592-3410
13
Wahlfach
25
wq561-0592-3410
21
Gast
30
wq561-0592-3410
25
Gast
71
wq561-0592-3410
26
Wahlfach
37
wq561-0592-3410
29
Pflichtfach
52
wq561-0592-3410
36
Gast
53
xn096-9487-6455
11
Gast
27
xn096-9487-6455
22
Gast
75
xn096-9487-6455
23
Wahlfach
91
xn096-9487-6455
26
Pflichtfach
29
xn096-9487-6455
35
Wahlfach
92
xx292-1755-8089
22
Wahlfach
84
zr166-3038-2048
25
Pflichtfach
40
zr166-3038-2048
40
Pflichtfach
45
strasseHNr
.
30.5 Spalten mit Leerzeichen abfragen
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, strasseHNr
FROM Student
WHERE strasseHNr=’’;
erhält man.
anrede
vorname
nachname
Herr
Ebernand
Bento
Herr
Mathis
Looschelders
Herr
Ymer
Fabienne
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, strasseHNr
FROM Student
WHERE strasseHNr<>’’;
143
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
144
erhält man.
anrede
vorname
nachname
strasseHNr
Herr
Gianni
Briland
Rathausplatz 229
Herr
Egfried
Ellis
Boyenstrasse 86
Herr
Boy
Witt
Am Nordbahnhof 163
Herr
Aster
Frantzen
Markt 125
Frau
Mariechen
Chaney
Arabienstrasse 97
Frau
Margarete
Buch
Berolinastrasse 84
Herr
Aarne
Stracke
Freiligrathstr. 65
Frau
Kurumi
Elstner
Holderackerstr. 41
Frau
Krystiana
Baumgarten
Bahnstr. 151
Herr
Vitali
Rosenbaum
Kaiser-Wilhelm-Platz 40
Herr
Otthein
Pahl
Markt 80
Frau
Trudhildis
Winkel
Kavarinerstr. 181
Herr
Goswin
Haug
Rathausmarkt 53
Herr
Knut
Moeller
Charlottenburger
186
Frau
Quirine
Hocke
Am Rathaus 93
Herr
Neidhardt
Thomasius
Glinkastrasse 91
Frau
Elizabeth
Schmieder
Alexanderstrasse 210
Herr
Anaklet
Heitmann
Caroline-vonHumboldt-Weg 241
Frau
Luitgard
Krumm
Mosterstr. 50
Herr
Wilmer
Herbst
Humbergweg 243
.
30.6 Zeilen mit einer Bedingung auswählen
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, studiengang FROM Student
WHERE studiengang=’FB04’;
erhält man.
anrede
vorname
nachname
studiengang
Herr
Aster
Frantzen
FB04
Herr
Mathis
Looschelders
FB04
Frau
Trudhildis
Winkel
FB04
Frau
Luitgard
Krumm
FB04
Str.
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SELECT veranstaltungID, bezeichnung, semester FROM Veranstaltung
WHERE maxAnzahl=tatAnzahl;
kann man die ausgebuchte Veranstaltungen ermitteln.
veranstaltungID
bezeichnung
semester
18
Armut und Entwicklung
SS2012
22
law and ethics
WS2014
25
Hebrew language
WS2013
37
Spanische Sprache
SS2014
.
30.7 Zeilen mit verbundenen Bedingungen auswählen
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, studiengang FROM Student
WHERE studiengang=’FB04’
AND anrede=’Frau’;
erhält man.
anrede
vorname
nachname
studiengang
Frau
Trudhildis
Winkel
FB04
Frau
Luitgard
Krumm
FB04
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, studiengang FROM Student
WHERE studiengang=’FB04’
OR anrede=’Frau’;
erhält man.
anrede
vorname
nachname
studiengang
Herr
Aster
Frantzen
FB04
Frau
Mariechen
Chaney
FB07
Herr
Mathis
Looschelders
FB04
Frau
Margarete
Buch
FB05
Frau
Kurumi
Elstner
FB07
Frau
Krystiana
Baumgarten
FB11
145
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Trudhildis
Winkel
FB04
Frau
Quirine
Hocke
FB02
Frau
Elizabeth
Schmieder
FB11
Frau
Luitgard
Krumm
FB04
.
30.8 SELECT und Variablen
.
Mit der MySQL Abfrage
SELECT @lePrenom:=vorname, @leNom:=nachname
FROM Student
WHERE studentID=’ap256-3212-3933’;
erhält man.
@lePrenom:=vorname
@leNom:=nachname
Gianni
Briland
.
30.9 SELECT . . . INTO–Anweisung
.
146
Kapitel 31
Datensätze sortieren (ORDER BY)
31.1 Einführung
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, geburtsDatum
FROM Student
ORDER BY geburtsDatum;
erhält man.
anrede
vorname
nachname
geburtsDatum
Herr
Goswin
Haug
1983-05-20
Herr
Mathis
Looschelders
1984-04-10
Herr
Anaklet
Heitmann
1984-08-07
Frau
Luitgard
Krumm
1984-11-23
Frau
Kurumi
Elstner
1986-02-19
Herr
Vitali
Rosenbaum
1986-12-21
Herr
Gianni
Briland
1987-04-01
Herr
Neidhardt
Thomasius
1987-06-22
Herr
Aarne
Stracke
1988-02-04
Herr
Boy
Witt
1988-07-12
Herr
Ebernand
Bento
1990-01-13
Frau
Mariechen
Chaney
1990-02-20
Frau
Quirine
Hocke
1990-04-01
Herr
Ymer
Fabienne
1990-08-27
Frau
Elizabeth
Schmieder
1990-09-04
Frau
Margarete
Buch
1990-10-10
Frau
Trudhildis
Winkel
1991-02-12
Herr
Wilmer
Herbst
1991-04-05
Herr
Knut
Moeller
1992-10-05
Herr
Egfried
Ellis
1993-01-03
Herr
Aster
Frantzen
1993-08-07
Herr
Otthein
Pahl
1995-02-22
Frau
Krystiana
Baumgarten
1995-04-07
147
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
Mit der MySQL Abfrage
SELECT anrede, vorname, nachname, geburtsDatum
FROM Student
ORDER BY geburtsDatum DESC;
erhält man.
anrede
vorname
nachname
geburtsDatum
Frau
Krystiana
Baumgarten
1995-04-07
Herr
Otthein
Pahl
1995-02-22
Herr
Aster
Frantzen
1993-08-07
Herr
Egfried
Ellis
1993-01-03
Herr
Knut
Moeller
1992-10-05
Herr
Wilmer
Herbst
1991-04-05
Frau
Trudhildis
Winkel
1991-02-12
Frau
Margarete
Buch
1990-10-10
Frau
Elizabeth
Schmieder
1990-09-04
Herr
Ymer
Fabienne
1990-08-27
Frau
Quirine
Hocke
1990-04-01
Frau
Mariechen
Chaney
1990-02-20
Herr
Ebernand
Bento
1990-01-13
Herr
Boy
Witt
1988-07-12
Herr
Aarne
Stracke
1988-02-04
Herr
Neidhardt
Thomasius
1987-06-22
Herr
Gianni
Briland
1987-04-01
Herr
Vitali
Rosenbaum
1986-12-21
Frau
Kurumi
Elstner
1986-02-19
Frau
Luitgard
Krumm
1984-11-23
Herr
Anaklet
Heitmann
1984-08-07
Herr
Mathis
Looschelders
1984-04-10
Herr
Goswin
Haug
1983-05-20
.
Mit der MySQL Abfrage
SELECT studentID, studiengang, fachrichtung
FROM Student
ORDER BY studiengang DESC, fachrichtung;
erhält man.
studentID
studiengang
fachrichtung
wq561-0592-3410
FB11
Betriebswirtschaftslehre (BWL)
rx816-9173-9273
FB11
Kommunikationswissenschaften
148
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
md503-8006-7828
FB11
Volkswirtschaftslehre (VWL)
mc121-0102-0386
FB07
Bioinformatik
qa922-4226-3460
FB07
Biologie der Tiere
qb395-9858-6804
FB07
Biologie der Tiere
sv377-8994-1980
FB07
Biologie der Tiere
gg525-7926-7879
FB07
Infektionsbiologie
wm793-9705-1200
FB05
Innenarchitektur
nf165-3898-8727
FB05
Kulturwissenschaften
zr166-3038-2048
FB05
Religisionswissenschaft
ry307-0065-8575
FB05
Theaterwissenschaft
kz977-7624-2277
FB04
Elektrodynamik
mh303-5086-2257
FB04
Elektrodynamik
tr133-3852-1694
FB04
Halbleiter-Quantenoptik
xx292-1755-8089
FB04
Theoretische Physik
ap256-3212-3933
FB03
Bioinformatik
fn610-3893-2306
FB03
Praktische Informatik
xn096-9487-6455
FB03
Theoretische Informatik
vu769-2638-9984
FB02
Algebra und Zahlentheorie
ui175-6966-6040
FB02
Analysis
vw937-4659-4381
FB02
Analysis
rf900-2826-3516
FB02
Angewandte Mathematik
.
31.2 ORDER BY und CONCAT
.
Mit der MySQL Abfrage
SELECT veranstaltungID, bezeichnung, semester, wochenStunden
FROM Veranstaltung
ORDER BY CONCAT(SUBSTRING(semester,3,4), SUBSTRING(semester,1,2));
erhält man.
veranstaltungID
bezeichnung
semester
wochenStunden
29
fonction didactique et morale
SS2012
3
27
French language
SS2012
2
18
Armut und Entwicklung
SS2012
2
20
Russische Sprache
SS2012
4
16
Smart Graphics
WS2012
3.75
17
Meteorologie
WS2012
3.25
32
verteilte Systeme
SS2013
2
39
Arabische Sprache
SS2013
4.25
149
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
21
Programmierung
SS2013
5.5
19
scientific communication
SS2013
5
15
Datennetze
SS2013
4
12
Grundlagen der Astronomie
SS2013
4.5
31
Urdu
WS2013
3.5
33
Grundlagen der Geologie und der Gesteinskunde
WS2013
2.25
13
evolutionary biology
WS2013
5.25
36
Russische Sprache
WS2013
2.25
25
Hebrew language
WS2013
2.75
38
chinesische Sprachen
WS2013
4.75
41
Hindi
WS2013
5.75
35
Grundlagenwissen Sprache II
SS2014
4
37
Spanische Sprache
SS2014
3.25
40
Griechische Sprache
SS2014
3
28
majeures du XVIIe au XIXe
SS2014
2.25
26
Software Architektur
SS2014
3
23
XML-Daten
SS2014
2.75
14
visualization systems
SS2014
3.25
11
Informationssicherheit
SS2014
3.75
30
Realisierung digitaler Medien
WS2014
2.75
24
Computational Vision
WS2014
3
22
law and ethics
WS2014
2.25
.
Mit der MySQL Abfrage
SELECT veranstaltungID, bezeichnung, semester, wochenStunden
FROM Veranstaltung
ORDER BY RIGHT(semester,4), LEFT(semester,2);
erhält man.
veranstaltungID
bezeichnung
semester
wochenStunden
29
fonction didactique et morale
SS2012
3
27
French language
SS2012
2
18
Armut und Entwicklung
SS2012
2
20
Russische Sprache
SS2012
4
16
Smart Graphics
WS2012
3.75
17
Meteorologie
WS2012
3.25
32
verteilte Systeme
SS2013
2
39
Arabische Sprache
SS2013
4.25
21
Programmierung
SS2013
5.5
19
scientific communication
SS2013
5
15
Datennetze
SS2013
4
150
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
12
Grundlagen der Astronomie
SS2013
4.5
31
Urdu
WS2013
3.5
33
Grundlagen der Geologie und der Gesteinskunde
WS2013
2.25
13
evolutionary biology
WS2013
5.25
36
Russische Sprache
WS2013
2.25
25
Hebrew language
WS2013
2.75
38
chinesische Sprachen
WS2013
4.75
41
Hindi
WS2013
5.75
35
Grundlagenwissen Sprache II
SS2014
4
37
Spanische Sprache
SS2014
3.25
40
Griechische Sprache
SS2014
3
28
majeures du XVIIe au XIXe
SS2014
2.25
26
Software Architektur
SS2014
3
23
XML-Daten
SS2014
2.75
14
visualization systems
SS2014
3.25
11
Informationssicherheit
SS2014
3.75
30
Realisierung digitaler Medien
WS2014
2.75
24
Computational Vision
WS2014
3
22
law and ethics
WS2014
2.25
.
31.3 ORDER BY und FIND_IN_SET
.
Mit der MySQL Abfrage
SELECT student, veranstaltung, wPF
FROM Besucht
ORDER BY FIND\_IN\_SET(wPF,’Pflichfach,Wahlfach,Gast’);
erhält man.
student
veranstaltung
wPF
zr166-3038-2048
35
NULL
ry307-0065-8575
28
NULL
vu769-2638-9984
14
NULL
qb395-9858-6804
19
NULL
wm793-9705-1200
22
NULL
mh303-5086-2257
11
NULL
qb395-9858-6804
12
NULL
ui175-6966-6040
21
NULL
sv377-8994-1980
35
NULL
151
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
fn610-3893-2306
33
NULL
ry307-0065-8575
19
Pflichtfach
wq561-0592-3410
29
Pflichtfach
qb395-9858-6804
25
Pflichtfach
rf900-2826-3516
30
Pflichtfach
nf165-3898-8727
25
Pflichtfach
tr133-3852-1694
22
Pflichtfach
tr133-3852-1694
41
Pflichtfach
zr166-3038-2048
25
Pflichtfach
xn096-9487-6455
26
Pflichtfach
wm793-9705-1200
30
Pflichtfach
wm793-9705-1200
26
Pflichtfach
zr166-3038-2048
40
Pflichtfach
vw937-4659-4381
28
Pflichtfach
vw937-4659-4381
26
Pflichtfach
vu769-2638-9984
39
Pflichtfach
vu769-2638-9984
24
Pflichtfach
ui175-6966-6040
12
Pflichtfach
nf165-3898-8727
23
Pflichtfach
nf165-3898-8727
22
Pflichtfach
kz977-7624-2277
28
Pflichtfach
kz977-7624-2277
11
Pflichtfach
fn610-3893-2306
17
Pflichtfach
gg525-7926-7879
35
Pflichtfach
gg525-7926-7879
26
Pflichtfach
fn610-3893-2306
25
Pflichtfach
ap256-3212-3933
33
Pflichtfach
md503-8006-7828
31
Pflichtfach
mh303-5086-2257
26
Pflichtfach
md503-8006-7828
29
Pflichtfach
mh303-5086-2257
17
Pflichtfach
mh303-5086-2257
24
Pflichtfach
qa922-4226-3460
30
Wahlfach
xx292-1755-8089
22
Wahlfach
ui175-6966-6040
33
Wahlfach
gg525-7926-7879
33
Wahlfach
xn096-9487-6455
35
Wahlfach
xn096-9487-6455
23
Wahlfach
fn610-3893-2306
21
Wahlfach
vw937-4659-4381
30
Wahlfach
md503-8006-7828
12
Wahlfach
wq561-0592-3410
13
Wahlfach
wq561-0592-3410
26
Wahlfach
152
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
kz977-7624-2277
23
Wahlfach
md503-8006-7828
30
Wahlfach
qb395-9858-6804
33
Wahlfach
qb395-9858-6804
39
Wahlfach
qa922-4226-3460
40
Wahlfach
qa922-4226-3460
35
Wahlfach
rf900-2826-3516
11
Wahlfach
ry307-0065-8575
16
Wahlfach
md503-8006-7828
26
Wahlfach
ry307-0065-8575
22
Wahlfach
tr133-3852-1694
25
Wahlfach
tr133-3852-1694
13
Wahlfach
ry307-0065-8575
38
Wahlfach
ap256-3212-3933
26
Gast
nf165-3898-8727
26
Gast
ap256-3212-3933
23
Gast
xn096-9487-6455
22
Gast
nf165-3898-8727
33
Gast
xn096-9487-6455
11
Gast
wq561-0592-3410
36
Gast
kz977-7624-2277
24
Gast
qb395-9858-6804
24
Gast
wq561-0592-3410
25
Gast
sv377-8994-1980
30
Gast
md503-8006-7828
19
Gast
ap256-3212-3933
13
Gast
wm793-9705-1200
13
Gast
fn610-3893-2306
16
Gast
fn610-3893-2306
13
Gast
wm793-9705-1200
37
Gast
wq561-0592-3410
21
Gast
vw937-4659-4381
37
Gast
153
.
31.4 Sortieren mit Ausdrücken
Resultate anhand von Spaltendaten zu sortieren ist ja schön und gut, aber manchmal möchte man doch gern ein anderes
Sortierkriterium anwenden, eines, das nicht in der Datenbank gespeichert ist und möglicherweise auch nirgendwo sonst in der
Abfrage erscheint. In solche Fällen können Sie in Ihre ORDER BY-Klausel auch einen Ausdruck schreiben. Vielleicht möchten
Sie ja Ihre Studentendaten nach den letzten drei Ziffern der studentID sortieren: ORDER BY RIGHT(studentID, 3);
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
154
31.5 Sortieren nach numerischen Platzhaltern
Wenn Sie in Ihrer SELECT–Klausel die Daten nach Spalten sortieren, können Sie diese Spalten statt nach Namen auch nach
ihrer Position in der SELECT–Klausel referenzieren. Ein Beispiel: Angenommen, Sie möchten Ihre Daten anhand der zweiten
und fünften Rückgabespalte einer Abfrage sortieren: ORDER BY 2, 5;
Kapitel 41
GROUP BY und Aggregatfunktionen
41.1 COUNT()
.
Mit der MySQL Abfrage
SELECT COUNT(*) FROM Student;
erhält man.
COUNT(*)
23
.
Mit der MySQL Abfrage
SELECT COUNT(*) AS anzahl_der_Studenten FROM Student;
erhält man.
anzahl_der_Studenten
23
.
Mit der MySQL Abfrage
SELECT COUNT(*) AS anzahl_der_maennlichen_Studenten FROM Student WHERE anrede=’Herr’;
erhält man.
anzahl_der_maennlichen_Studenten
15
.
155
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
41.2 MIN() und MAX()
.
Mit der MySQL Abfrage
SELECT MAX(geburtsDatum) AS juegster_Student FROM Student;
erhält man.
juegster_Student
1995-04-07
.
Mit der MySQL Abfrage
SELECT MIN(geburtsDatum) AS aeltester_Student FROM Student;
erhält man.
aeltester_Student
1983-05-20
.
41.3 AVG() und STDDEV()
.
Mit der MySQL Abfrage
SELECT AVG(tatAnzahl) AS Mittlere_Anzahl FROM Veranstaltung;
erhält man.
Mittlere_Anzahl
24.9667
.
Mit der MySQL Abfrage
SELECT STDDEV(tatAnzahl) AS StdAbw_Anzahl FROM Veranstaltung;
erhält man.
StdAbw_Anzahl
6.4212
156
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
41.4 GROUP BY bei mehreren Spalten
.
Mit der MySQL Abfrage
SELECT anrede, pLZ, COUNT(*) AS anzahl_der_Studenten_aus_Stadt
FROM Student GROUP BY anrede, pLZ
ORDER BY anrede, pLZ;
erhält man.
anrede
plz
anzahl_der_Studenten_aus_Stadt
Frau
CH-1272
1
Frau
D-31281
1
Frau
D-80765
2
Frau
D-91256
2
Frau
D-93754
2
Herr
D-31281
1
Herr
D-33229
3
Herr
D-80765
6
Herr
D-91256
1
Herr
D-93754
4
.
Mit der MySQL Abfrage
SELECT anrede, pLZ, COUNT(*) AS anzahl_der_Studenten_aus_Stadt
FROM Student GROUP BY anrede, pLZ
ORDER BY pLZ, anrede;
erhält man.
anrede
plz
anzahl_der_Studenten_aus_Stadt
Frau
CH-1272
1
Frau
D-31281
1
Herr
D-31281
1
Herr
D-33229
3
Frau
D-80765
2
Herr
D-80765
6
Frau
D-91256
2
Herr
D-91256
1
Frau
D-93754
2
Herr
D-93754
4
157
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
.
41.5 Mehrere COUNT–Abfragen mit einer Abfrage
.
41.6 GROUP BY Clause
Name
Description
AVG()
Return the average value of the argument
BIT_AND()
Return bitwise and
BIT_OR()
Return bitwise or
BIT_XOR()
Return bitwise xor
COUNT(DISTINCT)
Return the count of a number of different values
COUNT()
Return a count of the number of rows returned
GROUP_CONCAT()
Return a concatenated string
MAX()
Return the maximum value
MIN()
Return the minimum value
STD()
Return the population standard deviation
STDDEV_POP()
Return the population standard deviation
STDDEV_SAMP()
Return the sample standard deviation
STDDEV()
Return the population standard deviation
SUM()
Return the sum
VAR_POP()
Return the population standard variance
VAR_SAMP()
Return the sample variance
VARIANCE()
Return the population standard variance
Tabelle 41.6.0.1: Operatoren und Ausdrücke
158
Kapitel 51
CROSS JOIN
51.1 Einführung
.
SELECT * FROM L CROSS JOIN R bzw. SELECT * FROM L JOIN R
L
a
b
c
11
21
12
12
22
13
13
23
14
R
a
b
c
c
d
11
21
12
10
51
c
d
11
21
12
12
52
10
51
12
22
13
10
51
12
52
12
22
13
12
52
13
23
14
10
51
13
23
14
12
52
.
51.2 Anwendung
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st CROSS JOIN Ort ot
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-19.425000
-39.261198
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Gianni
Briland
134.120000
23.450000
Herr
Gianni
Briland
134.120000
23.450000
Herr
Gianni
Briland
-40.981092
-43.268893
Herr
Gianni
Briland
-45.098792
-24.101093
Herr
Gianni
Briland
-19.459092
-25.092296
Herr
Egfried
Ellis
134.120000
23.450000
Herr
Egfried
Ellis
134.120000
23.450000
Herr
Egfried
Ellis
-40.981092
-43.268893
Herr
Egfried
Ellis
-45.098792
-24.101093
159
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Egfried
Ellis
-19.425000
-39.261198
Herr
Egfried
Ellis
-46.817692
-36.168495
Herr
Boy
Witt
134.120000
23.450000
Herr
Boy
Witt
134.120000
23.450000
Herr
Boy
Witt
-40.981092
-43.268893
Herr
Boy
Witt
-45.098792
-24.101093
Herr
Boy
Witt
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Boy
Witt
-46.817692
-36.168495
Herr
Aster
Frantzen
-45.098792
-24.101093
Herr
Aster
Frantzen
-19.459092
-25.092296
Herr
Aster
Frantzen
-19.425000
-39.261198
Herr
Aster
Frantzen
-46.817692
-36.168495
Herr
Aster
Frantzen
134.120000
23.450000
Herr
Aster
Frantzen
134.120000
23.450000
Herr
Aster
Frantzen
-40.981092
-43.268893
Frau
Mariechen
Chaney
-19.425000
-39.261198
Frau
Mariechen
Chaney
-46.817692
-36.168495
Frau
Mariechen
Chaney
134.120000
23.450000
Frau
Mariechen
Chaney
134.120000
23.450000
Frau
Mariechen
Chaney
-40.981092
-43.268893
Frau
Mariechen
Chaney
-45.098792
-24.101093
Frau
Mariechen
Chaney
-19.459092
-25.092296
Herr
Ebernand
Bento
134.120000
23.450000
Herr
Ebernand
Bento
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Ebernand
Bento
-45.098792
-24.101093
Herr
Ebernand
Bento
-19.459092
-25.092296
Herr
Ebernand
Bento
-19.425000
-39.261198
Herr
Ebernand
Bento
-46.817692
-36.168495
Herr
Mathis
Looschelders
134.120000
23.450000
Herr
Mathis
Looschelders
134.120000
23.450000
Herr
Mathis
Looschelders
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Herr
Mathis
Looschelders
-19.459092
-25.092296
Herr
Mathis
Looschelders
-19.425000
-39.261198
Herr
Mathis
Looschelders
-46.817692
-36.168495
Frau
Margarete
Buch
-40.981092
-43.268893
Frau
Margarete
Buch
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Frau
Margarete
Buch
-19.425000
-39.261198
Frau
Margarete
Buch
-46.817692
-36.168495
160
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Margarete
Buch
134.120000
23.450000
Frau
Margarete
Buch
134.120000
23.450000
Herr
Aarne
Stracke
-19.459092
-25.092296
Herr
Aarne
Stracke
-19.425000
-39.261198
Herr
Aarne
Stracke
-46.817692
-36.168495
Herr
Aarne
Stracke
134.120000
23.450000
Herr
Aarne
Stracke
134.120000
23.450000
Herr
Aarne
Stracke
-40.981092
-43.268893
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Frau
Kurumi
Elstner
134.120000
23.450000
Frau
Kurumi
Elstner
134.120000
23.450000
Frau
Kurumi
Elstner
-40.981092
-43.268893
Frau
Kurumi
Elstner
-45.098792
-24.101093
Frau
Kurumi
Elstner
-19.459092
-25.092296
Frau
Kurumi
Elstner
-19.425000
-39.261198
Herr
Ymer
Fabienne
134.120000
23.450000
Herr
Ymer
Fabienne
134.120000
23.450000
Herr
Ymer
Fabienne
-40.981092
-43.268893
Herr
Ymer
Fabienne
-45.098792
-24.101093
Herr
Ymer
Fabienne
-19.459092
-25.092296
Herr
Ymer
Fabienne
-19.425000
-39.261198
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
134.120000
23.450000
Frau
Krystiana
Baumgarten
-40.981092
-43.268893
Frau
Krystiana
Baumgarten
-45.098792
-24.101093
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Frau
Krystiana
Baumgarten
-19.425000
-39.261198
Frau
Krystiana
Baumgarten
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
134.120000
23.450000
Herr
Vitali
Rosenbaum
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-19.425000
-39.261198
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Vitali
Rosenbaum
134.120000
23.450000
Herr
Vitali
Rosenbaum
134.120000
23.450000
Herr
Vitali
Rosenbaum
-40.981092
-43.268893
Herr
Vitali
Rosenbaum
-45.098792
-24.101093
Herr
Otthein
Pahl
-46.817692
-36.168495
Herr
Otthein
Pahl
134.120000
23.450000
Herr
Otthein
Pahl
134.120000
23.450000
Herr
Otthein
Pahl
-40.981092
-43.268893
Herr
Otthein
Pahl
-45.098792
-24.101093
Herr
Otthein
Pahl
-19.459092
-25.092296
161
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Otthein
Pahl
-19.425000
-39.261198
Frau
Trudhildis
Winkel
134.120000
23.450000
Frau
Trudhildis
Winkel
134.120000
23.450000
Frau
Trudhildis
Winkel
-40.981092
-43.268893
Frau
Trudhildis
Winkel
-45.098792
-24.101093
Frau
Trudhildis
Winkel
-19.459092
-25.092296
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Frau
Trudhildis
Winkel
-46.817692
-36.168495
Herr
Goswin
Haug
134.120000
23.450000
Herr
Goswin
Haug
-40.981092
-43.268893
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Goswin
Haug
-19.459092
-25.092296
Herr
Goswin
Haug
-19.425000
-39.261198
Herr
Goswin
Haug
-46.817692
-36.168495
Herr
Goswin
Haug
134.120000
23.450000
Herr
Knut
Moeller
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Herr
Knut
Moeller
-19.425000
-39.261198
Herr
Knut
Moeller
-46.817692
-36.168495
Herr
Knut
Moeller
134.120000
23.450000
Herr
Knut
Moeller
134.120000
23.450000
Herr
Knut
Moeller
-40.981092
-43.268893
Frau
Quirine
Hocke
-19.425000
-39.261198
Frau
Quirine
Hocke
-46.817692
-36.168495
Frau
Quirine
Hocke
134.120000
23.450000
Frau
Quirine
Hocke
134.120000
23.450000
Frau
Quirine
Hocke
-40.981092
-43.268893
Frau
Quirine
Hocke
-45.098792
-24.101093
Frau
Quirine
Hocke
-19.459092
-25.092296
Herr
Neidhardt
Thomasius
134.120000
23.450000
Herr
Neidhardt
Thomasius
134.120000
23.450000
Herr
Neidhardt
Thomasius
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-45.098792
-24.101093
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Herr
Neidhardt
Thomasius
-19.425000
-39.261198
Herr
Neidhardt
Thomasius
-46.817692
-36.168495
Frau
Elizabeth
Schmieder
134.120000
23.450000
Frau
Elizabeth
Schmieder
134.120000
23.450000
Frau
Elizabeth
Schmieder
-40.981092
-43.268893
Frau
Elizabeth
Schmieder
-45.098792
-24.101093
Frau
Elizabeth
Schmieder
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-19.425000
-39.261198
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
162
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Anaklet
Heitmann
-40.981092
-43.268893
Herr
Anaklet
Heitmann
-45.098792
-24.101093
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Herr
Anaklet
Heitmann
-19.425000
-39.261198
Herr
Anaklet
Heitmann
-46.817692
-36.168495
Herr
Anaklet
Heitmann
134.120000
23.450000
Herr
Anaklet
Heitmann
134.120000
23.450000
Frau
Luitgard
Krumm
-19.425000
-39.261198
Frau
Luitgard
Krumm
-46.817692
-36.168495
Frau
Luitgard
Krumm
134.120000
23.450000
Frau
Luitgard
Krumm
134.120000
23.450000
Frau
Luitgard
Krumm
-40.981092
-43.268893
Frau
Luitgard
Krumm
-45.098792
-24.101093
Frau
Luitgard
Krumm
-19.459092
-25.092296
Herr
Wilmer
Herbst
134.120000
23.450000
Herr
Wilmer
Herbst
134.120000
23.450000
Herr
Wilmer
Herbst
-40.981092
-43.268893
Herr
Wilmer
Herbst
-45.098792
-24.101093
Herr
Wilmer
Herbst
-19.459092
-25.092296
Herr
Wilmer
Herbst
-19.425000
-39.261198
Herr
Wilmer
Herbst
-46.817692
-36.168495
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st JOIN Ort ot
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-19.425000
-39.261198
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Gianni
Briland
134.120000
23.450000
Herr
Gianni
Briland
134.120000
23.450000
Herr
Gianni
Briland
-40.981092
-43.268893
Herr
Gianni
Briland
-45.098792
-24.101093
Herr
Gianni
Briland
-19.459092
-25.092296
Herr
Egfried
Ellis
134.120000
23.450000
Herr
Egfried
Ellis
134.120000
23.450000
Herr
Egfried
Ellis
-40.981092
-43.268893
Herr
Egfried
Ellis
-45.098792
-24.101093
Herr
Egfried
Ellis
-19.459092
-25.092296
163
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Egfried
Ellis
-19.425000
-39.261198
Herr
Egfried
Ellis
-46.817692
-36.168495
Herr
Boy
Witt
134.120000
23.450000
Herr
Boy
Witt
134.120000
23.450000
Herr
Boy
Witt
-40.981092
-43.268893
Herr
Boy
Witt
-45.098792
-24.101093
Herr
Boy
Witt
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Boy
Witt
-46.817692
-36.168495
Herr
Aster
Frantzen
-45.098792
-24.101093
Herr
Aster
Frantzen
-19.459092
-25.092296
Herr
Aster
Frantzen
-19.425000
-39.261198
Herr
Aster
Frantzen
-46.817692
-36.168495
Herr
Aster
Frantzen
134.120000
23.450000
Herr
Aster
Frantzen
134.120000
23.450000
Herr
Aster
Frantzen
-40.981092
-43.268893
Frau
Mariechen
Chaney
-19.425000
-39.261198
Frau
Mariechen
Chaney
-46.817692
-36.168495
Frau
Mariechen
Chaney
134.120000
23.450000
Frau
Mariechen
Chaney
134.120000
23.450000
Frau
Mariechen
Chaney
-40.981092
-43.268893
Frau
Mariechen
Chaney
-45.098792
-24.101093
Frau
Mariechen
Chaney
-19.459092
-25.092296
Herr
Ebernand
Bento
134.120000
23.450000
Herr
Ebernand
Bento
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Ebernand
Bento
-45.098792
-24.101093
Herr
Ebernand
Bento
-19.459092
-25.092296
Herr
Ebernand
Bento
-19.425000
-39.261198
Herr
Ebernand
Bento
-46.817692
-36.168495
Herr
Mathis
Looschelders
134.120000
23.450000
Herr
Mathis
Looschelders
134.120000
23.450000
Herr
Mathis
Looschelders
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Herr
Mathis
Looschelders
-19.459092
-25.092296
Herr
Mathis
Looschelders
-19.425000
-39.261198
Herr
Mathis
Looschelders
-46.817692
-36.168495
Frau
Margarete
Buch
-40.981092
-43.268893
Frau
Margarete
Buch
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Frau
Margarete
Buch
-19.425000
-39.261198
Frau
Margarete
Buch
-46.817692
-36.168495
Frau
Margarete
Buch
134.120000
23.450000
164
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Margarete
Buch
134.120000
23.450000
Herr
Aarne
Stracke
-19.459092
-25.092296
Herr
Aarne
Stracke
-19.425000
-39.261198
Herr
Aarne
Stracke
-46.817692
-36.168495
Herr
Aarne
Stracke
134.120000
23.450000
Herr
Aarne
Stracke
134.120000
23.450000
Herr
Aarne
Stracke
-40.981092
-43.268893
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Frau
Kurumi
Elstner
134.120000
23.450000
Frau
Kurumi
Elstner
134.120000
23.450000
Frau
Kurumi
Elstner
-40.981092
-43.268893
Frau
Kurumi
Elstner
-45.098792
-24.101093
Frau
Kurumi
Elstner
-19.459092
-25.092296
Frau
Kurumi
Elstner
-19.425000
-39.261198
Herr
Ymer
Fabienne
134.120000
23.450000
Herr
Ymer
Fabienne
134.120000
23.450000
Herr
Ymer
Fabienne
-40.981092
-43.268893
Herr
Ymer
Fabienne
-45.098792
-24.101093
Herr
Ymer
Fabienne
-19.459092
-25.092296
Herr
Ymer
Fabienne
-19.425000
-39.261198
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
134.120000
23.450000
Frau
Krystiana
Baumgarten
-40.981092
-43.268893
Frau
Krystiana
Baumgarten
-45.098792
-24.101093
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Frau
Krystiana
Baumgarten
-19.425000
-39.261198
Frau
Krystiana
Baumgarten
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
134.120000
23.450000
Herr
Vitali
Rosenbaum
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-19.425000
-39.261198
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Vitali
Rosenbaum
134.120000
23.450000
Herr
Vitali
Rosenbaum
134.120000
23.450000
Herr
Vitali
Rosenbaum
-40.981092
-43.268893
Herr
Vitali
Rosenbaum
-45.098792
-24.101093
Herr
Otthein
Pahl
-46.817692
-36.168495
Herr
Otthein
Pahl
134.120000
23.450000
Herr
Otthein
Pahl
134.120000
23.450000
Herr
Otthein
Pahl
-40.981092
-43.268893
Herr
Otthein
Pahl
-45.098792
-24.101093
Herr
Otthein
Pahl
-19.459092
-25.092296
Herr
Otthein
Pahl
-19.425000
-39.261198
165
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Trudhildis
Winkel
134.120000
23.450000
Frau
Trudhildis
Winkel
134.120000
23.450000
Frau
Trudhildis
Winkel
-40.981092
-43.268893
Frau
Trudhildis
Winkel
-45.098792
-24.101093
Frau
Trudhildis
Winkel
-19.459092
-25.092296
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Frau
Trudhildis
Winkel
-46.817692
-36.168495
Herr
Goswin
Haug
134.120000
23.450000
Herr
Goswin
Haug
-40.981092
-43.268893
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Goswin
Haug
-19.459092
-25.092296
Herr
Goswin
Haug
-19.425000
-39.261198
Herr
Goswin
Haug
-46.817692
-36.168495
Herr
Goswin
Haug
134.120000
23.450000
Herr
Knut
Moeller
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Herr
Knut
Moeller
-19.425000
-39.261198
Herr
Knut
Moeller
-46.817692
-36.168495
Herr
Knut
Moeller
134.120000
23.450000
Herr
Knut
Moeller
134.120000
23.450000
Herr
Knut
Moeller
-40.981092
-43.268893
Frau
Quirine
Hocke
-19.425000
-39.261198
Frau
Quirine
Hocke
-46.817692
-36.168495
Frau
Quirine
Hocke
134.120000
23.450000
Frau
Quirine
Hocke
134.120000
23.450000
Frau
Quirine
Hocke
-40.981092
-43.268893
Frau
Quirine
Hocke
-45.098792
-24.101093
Frau
Quirine
Hocke
-19.459092
-25.092296
Herr
Neidhardt
Thomasius
134.120000
23.450000
Herr
Neidhardt
Thomasius
134.120000
23.450000
Herr
Neidhardt
Thomasius
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-45.098792
-24.101093
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Herr
Neidhardt
Thomasius
-19.425000
-39.261198
Herr
Neidhardt
Thomasius
-46.817692
-36.168495
Frau
Elizabeth
Schmieder
134.120000
23.450000
Frau
Elizabeth
Schmieder
134.120000
23.450000
Frau
Elizabeth
Schmieder
-40.981092
-43.268893
Frau
Elizabeth
Schmieder
-45.098792
-24.101093
Frau
Elizabeth
Schmieder
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-19.425000
-39.261198
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-40.981092
-43.268893
166
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Anaklet
Heitmann
-45.098792
-24.101093
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Herr
Anaklet
Heitmann
-19.425000
-39.261198
Herr
Anaklet
Heitmann
-46.817692
-36.168495
Herr
Anaklet
Heitmann
134.120000
23.450000
Herr
Anaklet
Heitmann
134.120000
23.450000
Frau
Luitgard
Krumm
-19.425000
-39.261198
Frau
Luitgard
Krumm
-46.817692
-36.168495
Frau
Luitgard
Krumm
134.120000
23.450000
Frau
Luitgard
Krumm
134.120000
23.450000
Frau
Luitgard
Krumm
-40.981092
-43.268893
Frau
Luitgard
Krumm
-45.098792
-24.101093
Frau
Luitgard
Krumm
-19.459092
-25.092296
Herr
Wilmer
Herbst
134.120000
23.450000
Herr
Wilmer
Herbst
134.120000
23.450000
Herr
Wilmer
Herbst
-40.981092
-43.268893
Herr
Wilmer
Herbst
-45.098792
-24.101093
Herr
Wilmer
Herbst
-19.459092
-25.092296
Herr
Wilmer
Herbst
-19.425000
-39.261198
Herr
Wilmer
Herbst
-46.817692
-36.168495
.
51.3 GROUP BY in JOIN
.
51.4 HAVING in JOIN
,
167
Kapitel 52
NATURAL JOIN
52.1 Einführung
in MySQL liefert NATURAL JOIN eine Liste aller möglichen Kombinationen aus den zugrundeliegenden Tabellen
L
R
a
b
c
SELECT * FROM L NATURAL JOIN R
c
d
.
11 21 12
a
b
c
c
d
10 51
12 22 13
11 21 12 12
52
12 52
13 23 14
52.2 Anwendung
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st NATURAL JOIN Ort ot
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
168
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
.
52.3 GROUP BY in JOIN
.
52.4 HAVING in JOIN
.
169
Kapitel 53
INNER JOIN
53.1 Einführung
In MySQL ist CROSS JOIN syntaktisch ein Äquivalent zu INNER JOIN (diese lassen sich gegeneinander austauschen). Nach
SQL–Standard hingegen sind beide nicht äquivalent. INNER JOIN wird bei einer ON–Klausel und CROSS JOIN andernfalls
verwendet.
R
L
a
b
c
11
21
12
c
d
10
51
12
52
SELECT * FROM L INNER JOIN R ON L.c=R.c
.
a
b
c
c
d
11
21
12
12
52
53.2 Anwendung
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st INNER JOIN Ort ot
USING(pLZ)
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
170
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Ort ot INNER JOIN Student st
ON st.pLZ=ot.pLZ
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
171
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
172
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Student st INNER JOIN Besucht be ON st.studentID=be.student
LEFT OUTER JOIN Veranstaltung ve ON ve.veranstaltungID=be.veranstaltung
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
173
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
174
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Veranstaltung ve INNER JOIN Besucht be ON ve.veranstaltungID=be.veranstaltung
LEFT OUTER JOIN Student st ON st.studentID=be.student
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
175
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
53.3 GROUP BY in JOIN
.
53.4 HAVING in JOIN
,
176
Kapitel 54
LEFT OUTER JOIN
54.1 Einführung
SELECT * FROM L LEFT OUTER JOIN R ON L.c=R.c
R
L
a
b
c
11
21
12
c
d
10
51
12
52
a
b
c
c
d
11
21
12
12
52
12
22
13
NULL
NULL
13
23
14
NULL
NULL
.
54.2 Anwendung
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st LEFT OUTER JOIN Ort ot
USING(pLZ)
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
177
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Ort ot LEFT OUTER JOIN Student st
ON st.pLZ=ot.pLZ
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
NULL
NULL
NULL
134.120000
23.450000
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
178
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Wilmer
Herbst
-19.459092
179
-25.092296
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Student st LEFT OUTER JOIN Besucht be ON st.studentID=be.student
LEFT OUTER JOIN Veranstaltung ve ON ve.veranstaltungID=be.veranstaltung
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Mariechen
Chaney
NULL
NULL
NULL
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
180
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Frau
Krystiana
Baumgarten
NULL
NULL
NULL
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
181
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Veranstaltung ve LEFT OUTER JOIN Besucht be ON ve.veranstaltungID=be.veranstaltung
LEFT OUTER JOIN Student st ON st.studentID=be.student
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
NULL
NULL
NULL
Datennetze
SS2013
NULL
NULL
NULL
NULL
Armut und Entwicklung
SS2012
NULL
NULL
NULL
NULL
Russische Sprache
SS2012
NULL
NULL
NULL
NULL
French language
SS2012
NULL
NULL
NULL
NULL
verteilte Systeme
SS2013
NULL
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
182
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
54.3 GROUP BY in JOIN
.
183
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
54.4 HAVING in JOIN
.
184
Kapitel 55
RIGHT OUTER JOIN
55.1 Einführung
R
L
a
b
c
11
21
12
SELECT * FROM L RIGHT OUTER JOIN R ON L.c=R.c
c
d
a
b
c
c
d
10
51
11
21
12
12
52
12
52
NULL
NULL
NULL
10
51
.
55.2 Anwendung
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Student st RIGHT OUTER JOIN Ort ot
USING(pLZ)
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
NULL
NULL
NULL
134.120000
23.450000
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
185
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ot.geoBreite, ot.geoLaenge
FROM Ort ot RIGHT OUTER JOIN Student st
ON st.pLZ=ot.pLZ
ORDER BY st.studentID;
erhält man.
anrede
vorname
nachname
geoBreite
geoLaenge
Herr
Gianni
Briland
-46.817692
-36.168495
Herr
Egfried
Ellis
-19.459092
-25.092296
Herr
Boy
Witt
-19.425000
-39.261198
Herr
Aster
Frantzen
-19.459092
-25.092296
Frau
Mariechen
Chaney
134.120000
23.450000
Herr
Ebernand
Bento
-40.981092
-43.268893
Herr
Mathis
Looschelders
-45.098792
-24.101093
Frau
Margarete
Buch
-19.459092
-25.092296
Herr
Aarne
Stracke
-45.098792
-24.101093
Frau
Kurumi
Elstner
-46.817692
-36.168495
Herr
Ymer
Fabienne
-46.817692
-36.168495
Frau
Krystiana
Baumgarten
-19.459092
-25.092296
Herr
Vitali
Rosenbaum
-46.817692
-36.168495
Herr
Otthein
Pahl
-46.817692
-36.168495
Frau
Trudhildis
Winkel
-19.425000
-39.261198
Herr
Goswin
Haug
-45.098792
-24.101093
Herr
Knut
Moeller
-19.459092
-25.092296
Frau
Quirine
Hocke
-40.981092
-43.268893
Herr
Neidhardt
Thomasius
-19.459092
-25.092296
Frau
Elizabeth
Schmieder
-46.817692
-36.168495
Herr
Anaklet
Heitmann
-19.459092
-25.092296
Frau
Luitgard
Krumm
-19.425000
-39.261198
Herr
Wilmer
Herbst
-19.459092
-25.092296
186
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
187
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Student st RIGHT OUTER JOIN Besucht be ON st.studentID=be.student
RIGHT OUTER JOIN Veranstaltung ve ON ve.veranstaltungID=be.veranstaltung
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
NULL
NULL
NULL
Datennetze
SS2013
NULL
NULL
NULL
NULL
Armut und Entwicklung
SS2012
NULL
NULL
NULL
NULL
Russische Sprache
SS2012
NULL
NULL
NULL
NULL
French language
SS2012
NULL
NULL
NULL
NULL
verteilte Systeme
SS2013
NULL
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
188
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
189
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
Mit der MySQL Abfrage
SELECT st.anrede, st.vorname, st.nachname, ve.bezeichnung, ve.semester, be.wPF
FROM Veranstaltung ve RIGHT OUTER JOIN Besucht be ON ve.veranstaltungID=be.veranstaltung
RIGHT OUTER JOIN Student st ON st.studentID=be.student
ORDER BY st.studentID, ve.veranstaltungID;
erhält man.
anrede
vorname
nachname
bezeichnung
semester
wPF
Herr
Gianni
Briland
evolutionary biology
WS2013
Gast
Herr
Gianni
Briland
XML-Daten
SS2014
Gast
Herr
Gianni
Briland
Software Architektur
SS2014
Gast
Herr
Gianni
Briland
Grundlagen der Geologie und der Gesteinskunde
WS2013
Pflichtfach
Herr
Egfried
Ellis
evolutionary biology
WS2013
Gast
Herr
Egfried
Ellis
Smart Graphics
WS2012
Gast
Herr
Egfried
Ellis
Meteorologie
WS2012
Pflichtfach
Herr
Egfried
Ellis
Programmierung
SS2013
Wahlfach
Herr
Egfried
Ellis
Hebrew language
WS2013
Pflichtfach
Herr
Egfried
Ellis
Grundlagen der Geologie und der Gesteinskunde
WS2013
NULL
Herr
Boy
Witt
Software Architektur
SS2014
Pflichtfach
Herr
Boy
Witt
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Boy
Witt
Grundlagenwissen Sprache II
SS2014
Pflichtfach
Herr
Aster
Frantzen
Informationssicherheit
SS2014
Pflichtfach
Herr
Aster
Frantzen
XML-Daten
SS2014
Wahlfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
190
Herr
Aster
Frantzen
Computational Vision
WS2014
Gast
Herr
Aster
Frantzen
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Mariechen
Chaney
NULL
NULL
NULL
Herr
Ebernand
Bento
Grundlagen der Astronomie
SS2013
Wahlfach
Herr
Ebernand
Bento
scientific communication
SS2013
Gast
Herr
Ebernand
Bento
Software Architektur
SS2014
Wahlfach
Herr
Ebernand
Bento
fonction didactique et morale
SS2012
Pflichtfach
Herr
Ebernand
Bento
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Ebernand
Bento
Urdu
WS2013
Pflichtfach
Herr
Mathis
Looschelders
Informationssicherheit
SS2014
NULL
Herr
Mathis
Looschelders
Meteorologie
WS2012
Pflichtfach
Herr
Mathis
Looschelders
Computational Vision
WS2014
Pflichtfach
Herr
Mathis
Looschelders
Software Architektur
SS2014
Pflichtfach
Frau
Margarete
Buch
law and ethics
WS2014
Pflichtfach
Frau
Margarete
Buch
XML-Daten
SS2014
Pflichtfach
Frau
Margarete
Buch
Hebrew language
WS2013
Pflichtfach
Frau
Margarete
Buch
Software Architektur
SS2014
Gast
Frau
Margarete
Buch
Grundlagen der Geologie und der Gesteinskunde
WS2013
Gast
Herr
Aarne
Stracke
Realisierung digitaler Medien
WS2014
Wahlfach
Herr
Aarne
Stracke
Grundlagenwissen Sprache II
SS2014
Wahlfach
Herr
Aarne
Stracke
Griechische Sprache
SS2014
Wahlfach
Frau
Kurumi
Elstner
Grundlagen der Astronomie
SS2013
NULL
Frau
Kurumi
Elstner
scientific communication
SS2013
NULL
Frau
Kurumi
Elstner
Computational Vision
WS2014
Gast
Frau
Kurumi
Elstner
Hebrew language
WS2013
Pflichtfach
Frau
Kurumi
Elstner
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Frau
Kurumi
Elstner
Arabische Sprache
SS2013
Wahlfach
Herr
Ymer
Fabienne
Informationssicherheit
SS2014
Wahlfach
Herr
Ymer
Fabienne
Realisierung digitaler Medien
WS2014
Pflichtfach
Frau
Krystiana
Baumgarten
NULL
NULL
NULL
Herr
Vitali
Rosenbaum
Smart Graphics
WS2012
Wahlfach
Herr
Vitali
Rosenbaum
scientific communication
SS2013
Pflichtfach
Herr
Vitali
Rosenbaum
law and ethics
WS2014
Wahlfach
Herr
Vitali
Rosenbaum
majeures du XVIIe au XIXe
SS2014
NULL
Herr
Vitali
Rosenbaum
chinesische Sprachen
WS2013
Wahlfach
Herr
Otthein
Pahl
Realisierung digitaler Medien
WS2014
Gast
Herr
Otthein
Pahl
Grundlagenwissen Sprache II
SS2014
NULL
Frau
Trudhildis
Winkel
evolutionary biology
WS2013
Wahlfach
Frau
Trudhildis
Winkel
law and ethics
WS2014
Pflichtfach
Frau
Trudhildis
Winkel
Hebrew language
WS2013
Wahlfach
Frau
Trudhildis
Winkel
Hindi
WS2013
Pflichtfach
Herr
Goswin
Haug
Grundlagen der Astronomie
SS2013
Pflichtfach
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Herr
Goswin
Haug
Programmierung
SS2013
NULL
Herr
Goswin
Haug
Grundlagen der Geologie und der Gesteinskunde
WS2013
Wahlfach
Herr
Knut
Moeller
visualization systems
SS2014
NULL
Herr
Knut
Moeller
Computational Vision
WS2014
Pflichtfach
Herr
Knut
Moeller
Arabische Sprache
SS2013
Pflichtfach
Frau
Quirine
Hocke
Software Architektur
SS2014
Pflichtfach
Frau
Quirine
Hocke
majeures du XVIIe au XIXe
SS2014
Pflichtfach
Frau
Quirine
Hocke
Realisierung digitaler Medien
WS2014
Wahlfach
Frau
Quirine
Hocke
Spanische Sprache
SS2014
Gast
Herr
Neidhardt
Thomasius
evolutionary biology
WS2013
Gast
Herr
Neidhardt
Thomasius
law and ethics
WS2014
NULL
Herr
Neidhardt
Thomasius
Software Architektur
SS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Realisierung digitaler Medien
WS2014
Pflichtfach
Herr
Neidhardt
Thomasius
Spanische Sprache
SS2014
Gast
Frau
Elizabeth
Schmieder
evolutionary biology
WS2013
Wahlfach
Frau
Elizabeth
Schmieder
Programmierung
SS2013
Gast
Frau
Elizabeth
Schmieder
Hebrew language
WS2013
Gast
Frau
Elizabeth
Schmieder
Software Architektur
SS2014
Wahlfach
Frau
Elizabeth
Schmieder
fonction didactique et morale
SS2012
Pflichtfach
Frau
Elizabeth
Schmieder
Russische Sprache
WS2013
Gast
Herr
Anaklet
Heitmann
Informationssicherheit
SS2014
Gast
Herr
Anaklet
Heitmann
law and ethics
WS2014
Gast
Herr
Anaklet
Heitmann
XML-Daten
SS2014
Wahlfach
Herr
Anaklet
Heitmann
Software Architektur
SS2014
Pflichtfach
Herr
Anaklet
Heitmann
Grundlagenwissen Sprache II
SS2014
Wahlfach
Frau
Luitgard
Krumm
law and ethics
WS2014
Wahlfach
Herr
Wilmer
Herbst
Hebrew language
WS2013
Pflichtfach
Herr
Wilmer
Herbst
Grundlagenwissen Sprache II
SS2014
NULL
Herr
Wilmer
Herbst
Griechische Sprache
SS2014
Pflichtfach
.
55.3 GROUP BY in JOIN
.
55.4 HAVING in JOIN
.
191
Literaturverzeichnis
[1] Hans-Jürgen Appelrath and Jochen Ludewig. Skriptum Informatik: Eine konventionelle Einführung. Vieweg + Teubner,
Wiesbaden Deutschland, 1995.
[2] Oliver Bartosch and Marcus Throll. Einstieg in SQL: Inkl. SQL Syntax von MySQL, Access, SQL Server, Oracle,
PostgrSQL, DB2 und Firebird. Galileo Computing Rheinwerk Verlag GmbH, Rheinwerkallee 4 53227 Bonn Deutschland, 2010.
[3] Thomas Becker. SQL : Oracle, SQL-Server, MySQL und PostgreSQL. 2002.
[4] Rolf Däßler. MySQL 5 Übungsbuch. bhv Publishing GmbH, Langenhecke 17 53902 Bad Münstereifel, 2006.
[5] Paul Du Bois. MySQL Kochbuch. O’Reilly, Balthasarstr. 81 50670 Köln Deutschland, 2003.
[6] André Eickler and Alfons Kemper. Datenbanksysteme: Eine Einführung. Oldenbourg verlag, München, 2006.
[7] Ramez A. Elmasri and Shamkant B. Navathe. Grundlagen von Datenbanksystemen. Pearson Deutschland GmbH, Lilienthalstr. 2 85399 Hallbergmoos, 2002.
[8] Wolfgang Gassler, Stefan Pröll, and Eva Zangerle. MySQL 5.6: Das umfassende Handbuch. Galileo Computing Rheinwerk
Verlag GmbH, Rheinwerkallee 4 53227 Bonn Deutschland, 2005.
[9] Klaus Giesen. SQL. bhv Publishing GmbH, Langenhecke 17 53902 Bad Münstereifel, 2003.
[10] Andreas Heuer, Gunter Saake, and Kai-Uwe Sattler. Datenbanken - Konzepte und Sprachen. 2010.
[11] Brand Hunt, Daniel Kline, and Kevin E Kline. SQL in a Nutshell. O’Reilly, Balthasarstr. 81 50670 Köln Deutschland,
2005.
[12] Alfons Kemper and Martin Wimmer. Übungsbuch Datenbanksysteme. Oldenbourg verlag, München, 2006.
[13] Michael Kofler. MySQL 5: Einführung, Programmierung, Referenz. Addison Wesley, Bonn, 2005.
[14] Gregor Müllmerstadt and Friedrich Kuhlmann. SQL. Rowohlt Verlag GmbH, Hamburger Straße 17 21465 Reinbek
Deutschland, 1999.
[15] Dieter Staas. MySQL 5. bhv Publishing GmbH, Langenhecke 17 53902 Bad Münstereifel, 2005.
192
Kapitel 56
Symbolverzeichnis
In diesem Abschnitt stellen wir Symbolen und Notationen zusammen. Die meistens entsprechen denen aus der Literatur aber
hier für die Bedürfnisse dieser Arbeit angepasst sind.
[start ]
Schaltfläche, Registerkarte, Fenster, Reiter,
Menübefehl
[start ]➥ [Alle Programme ]➥ [Zubehör ]➥ [Eingabeaufforderung ]
Menüfolge
Taste1
➯
F7
Alt
+
+
Taste2
+. . . +
TasteN
+
Zuerst die Tasten Taste1 bis TasteN gedrückt
halten; Dann kurz Taste TasteX drücken; Nun
die Tasten Taste1 bis TasteN wieder loslassen
TasteX
nacheinander die Tasten
H
Num
0
➯
Num
1
➯
Num
9
➯
Num
3
F7
,
H
drücken
Zuerst drücken Sie die ALT–Taste (und halten
diese gedrückt), geben jetzt die Zahlenkombination (wichtig: über den Ziffernblock!) ein,
und lassen anschliessend die ALT-Taste los
Super
Super–Taste; Bei Windows heisst WindowsLogoTaste
Shift Lock
Umschaltsperre oder Feststelltaste
Menu
Menü–Taste auf einer Computertastatur dient
zum Aufruf des sogenannten Kontextmenüs
Fn
Die Fn–Taste ist eine spezielle Taste, die man
meist nur auf Notebooks oder Netbooks findet.
Dabei steht Fn für Funktion
Num
Die Taste
9
9
auf dem Nummernblock
linke Strg
Linke Strg–Taste
rechte Strg
Rechte Strg–Taste
linke Shift
Linke Shift–Taste
rechte Shift
Rechte Shift–Taste
option key
Die Auswahltaste ist eine Sondertaste auf den
Tastaturen für Apple–Computer
C:\\>
klassische MS–DOS–Kommandozeile (Eingabekonsole)
user»
UNIX–Prompt des normalen Users
root»
UNIX–Prompt des Superusers (root)
193
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
:<Verzeichnis der Anwendung>»
Prompt wird vom Verzeichnis der Anwendung
aus ausgeführt
:»
Prompt anderer Programme (z.B. Matlab, Python, Maple, Statistikprogramm R, ect.)
dir01
dir02
datei03.sql
datei04.txt
datei05.java
dir06
datei07.dat
datei08.sql
datei09.tex
datei10.java
dir11
grafisches Symbol für Verzeichnisstruktur mit
Verzeichnissen und Dateien
\
Differenz von Relationen
×
Kartesisches Produkt von Relationen
R∆S
symmetrische Differenz von R und S
π
Projektion von Relationen
σ
Selektion (Restriktion) von Relationen
⊲⊳
(Inner bzw. Natural) Join von Relationen
⊲⊳θ
(Inner) Theta–Join von Relationen
◭
linker äusserer Join von Relationen
◮
rechter äusserer Join von Relationen
♦
(Voll) äusserer Join bzw. Voll Join von Relationen
⋉
linker Semi–Join von Relationen
⋊
Rechter Semi–Join von Relationen
≬
UNION–Join von Relationen
ρ
Umbenennung von Relationen
/
✄
✂✄C ✁
✂cc ✁
Division von Relationen
✄
✂✄E ✁
✂✄ee ✁
✂✄S ✁
✂✄ss ✁
✂✄D ✁
✂✄P ✁
pp
✂ ✁
✄
✂U ✁
grafisches Symbol für CHECK
grafisches Symbol für CHECK über mehrere
Spalten
grafisches Symbol für ENUM
grafisches Symbol für SPECIAL ENUM
grafisches Symbol für SET
grafisches Symbol für SPECIAL SET
grafisches Symbol für DEPENDENT
grafisches Symbol für PRIMARY KEY
grafisches Symbol für Teil von PRIMARY
KEY
grafisches Symbol für UNIQUE KEY
194
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
✄
✂✄uu ✁
F
✄✂ ✁
✂ff ✁
grafisches Symbol für Teil von UNIQUE KEY
grafisches Symbol für FOREIGN KEY
✞ ☎
qf
✝ ✆
✄
✂✄I ✁
✂✄L ✁
✂✄R ✁
✂✄T ✁
✂W ✁
✄
a(Autor) = (✂P ✁autorID,titel,anrede,nachname,vorname)
grafisches Symbol für Teil von FOREIGN
KEY
grafisches Symbol für PSEUDO FOREIGN
KEY
grafisches Symbol für INDEX
grafisches Symbol für FULLTEXT
grafisches Symbol für SPATIAL
grafisches Symbol für SPATIAL INDEX
grafisches Symbol für WEB APPLICATION
Relationsschema einer Relation
Autor
={
✄
(✂P ✁autorID,titel,anrede,nachname,vorname),
{
(1234,Dr., Frau, Kim, Ludwig),
(5634,NULL, Herr, Kim, Laas)
}
}
Relation
t(Autor) = {
(1234,Dr., Frau, Kim, Ludwig),
(5634,NULL, Herr, Kim, Laas)
}
Tupelmenge einer Relation
dom(a)
Domain einer Tupel a in einer Relation
tα
die Einschränkung von Tupel t auf die Attribute aus α
α→β
β heisst funktional abhängig von α
α։β
β heisst voll funktional abhängig von α
«table»
Autor
InnoDB; utf8
✄
✂P ✁ autorID
titel
anrede
nachname
vorname
grafisches Symbol für Tabelle
«datenbank»
die_welt
InnoDB; utf8
TABLE Autor
VIEW Titel
grafisches Symbol für externe Datenbank
195
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
∗
n–äre Beziehung
«sql routine»
routineName
grafisches Symbol für routine(Trigger, Event,
SP, usw.)
«php script»
scriptName
Serverseitiges/Clientseitiges
+ int KONSTANTE=1234
klassenVariable
instanzVariable
methode1()
methode2()
grafisches Symbol für Clientseitiges Skript
besucht ◮
grafisches Symbol für FOREIGN KEY Beziehung (mit Namen und Leserichtung)
grafisches Symbol für PSEUDO FOREIGN
KEY Beziehung
grafisches Symbol für n–äre Beziehung
Entity
grafisches Symbol für entity, die als Tabelle
vorkommt
Entity
grafisches Symbol für entity, die nicht als Tabelle vorkommt
Entity
grafisches Symbol für Schwaches entity, die
als Tabelle vorkommt
Entity
grafisches Symbol für Schwaches entity, die
nicht als Tabelle vorkommt
196
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Attribut
grafisches Symbol für attribute
Abgeleitetes Attribut
grafisches Symbol für Abgeleitetes Attribut
primaryKey
grafisches Symbol für primary Key
Attribut
grafisches Symbol für mehrwertige attribute
Beziehung
grafisches Symbol für Beziehung, die als Tabelle vorkommt
Beziehung
grafisches Symbol für Beziehung, die nicht als
Tabelle vorkommt
Beziehung
grafisches Symbol für identifizierte Beziehung, die als Tabelle vorkommt
Beziehung
grafisches Symbol für identifizierte Beziehung, die nicht als Tabelle vorkommt
+
für public - (engl. öffentlich)
#
für protected - (engl. geschützt)
-
für private - (engl. privat)
~
für package
«abstract»
GeoFigur
~abstract umfang(): double
- abstract flaeche(): double
OOP Klassendiagramm mit Zugriffskontrolle
für abstrakte Klasse
197
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
«interface»
Comparator
+ int KONSTANTE=1234
- String compareTo()
# void equals()
OOP Klassendiagramm mit Zugriffskontrolle
für Schinttstelle
E
«class»
ArrayList
ArrayList()
boolean add(E e)
void clear()
iterator()
OOP Klassendiagramm mit Zugriffskontrolle
für Parametrisierte Klasse
«class»
Student
+ int KONSTANTE=1234
matrikulNr: int
+ nachname: String
# vorname: String
~geburtsDatum: date
- Student()
+ static datenTyp statischeMethode()
- String getVorname()
# void setAnrede()
OOP Klassendiagramm mit Zugriffskontrolle
198
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
«class»
Adresse
strHausNr: String
+ ort: String
# land: String
~pLZ: String
- Adresse()
+ static datenTyp statischeMethode()
- String getOrt()
# void setLand()
OOP Klassendiagramm für innere Klasse
studi01: Student
matrikulNr=12345
nachname=Berger
vorname=Stefanie
geburtsDatum=21.01.1980
OOP Objektdiagramm der Klasse Student
«enum»
Farbe
ROT(255,0,0)
GRUEN(0,255,0)
BLAU(0,0,255)
+ int r
- int g
# int b
- String toRGB()
OOP Klassendiagramm für enum
static datenTyp klassenVariable
Klassenvariable
static datenTyp statischeMethode
statische Methode
gerichtete Assoziation
«paket»
java.lang
interface Comparable
class Mathe
class String
OOP Klassendiagramm für packet
199
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Paket–Import
besucht ◮
∗
Assoziation mit Namen und Leserichtung
n–äre Assoziation
Vererbung (java extends)
Abhängigkeit (java implements)
Komposition
Aggregation
(a, b)
Multiplizität (Kardinalität): Mindestens a Objekte und maximal b Objekte
::=
wird zur Definition verwendet; in der Regel
case-sensitive, unterscheidet zwischen Gross–
und Kleinschreibung.
::=ncs
(ncs=not case–sensitive) wird zur Definition
verwendet und zwar ohne auf Gross– und
Kleinschreibung (vgl. java und MySQL) und
tags (vgl. html und XML) bei Schlüsselwörter
zu achten; Create TaBLe = CrEate Table =
Create Table
|senkrechter Strich
Sie können nur eines der Elemente verwenden;
Wenn ein Syntaxelement eine Anzahl von Alternativen hat, werden diese durch senkrechter
Strich getrennt
? Fragezeichen
Das dem Fragezeichen vorangehende Zeichen
null oder einmal:
200
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
[optional] eckige Klammern
Optionale Syntaxelemente: Inhalt der Klammer kann stehen oder nicht
• Bei [a|b|c] können Sie folgendes auswählen
◦ entweder ∅ (nichts),
◦ oder a
◦ oder b
◦ oder c
• Bei [a?b?c?] können Sie folgendes auswählen
◦ entweder ∅ (nichts),
◦ oder a
◦ oder b
◦ oder c
◦ oder a und b
◦ oder a und c
◦ oder b und c
◦ oder a und b und c
{erforderlich}Geschweifte (geschwungene) Klammern
Erforderliche Syntaxelemente: genau eine Alternative aus der Klammer muss stehen
• Bei {a|b|c}müssen Sie folgendes auswählen
◦ entweder a,
◦ oder b
◦ oder c
• Bei {a?b?c?}müssen Sie folgendes
auswählen
◦ entweder a
◦ oder b
◦ oder c
◦ oder a und b
◦ oder a und c
◦ oder b und c
◦ oder a und b und c
201
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
( ) runde Klammern
Gruppieren: a(;b)? steht für
• entweder a
• oder a;b
<Nichtterminal> nicht zu verwechseln mit <html–tag>
die syntaktische Variablen werden mit breiten
spitzen Klammern umschlossen
cp850_general_ci
Terminal
Create Table
Schlüsselwort
<tag>
html bzw. XML tag
*
steht für alles mögliches
@<distance>
Damit kann man abfragen, ob Wörter innerhalb eines gewissen <distance>zueinander liegen
c
Ein konstantes Zeichen c
.
Genau ein beliebiges Zeichen
\.
Genau das Zeichen Punkt
\.\.\. Ellipsis; line–continuation operator
Fortsetzungszeichen z.B. bei Matlab: Reicht
die Zeilenlänge nicht aus, können drei Punkte (dots) als Fortsetzungszeichen eingegeben
werden
...
Platzhalter für ein Objekt
(!. . . )
keines der Zeichen aus der Klammer
^
Zeilenanfang bzw. Absatzanfang
$
Zeilenende bzw. Absatzende
~
Wortanfang
†
Wortende
‡
Zeilenumbruch unicode 8626
#
Ausdruck1 . . . Ausdruck2
#
Ausdruck1 und Ausdruck2 müssen gleich
sein: Beispiele für <h{1-6}#>. . . </h{16}# >sind
• <h2>. . . </h2>
• oder <h5>. . . </h5>
• nicht aber <h2>. . . </h5>
möglich
#1
#1
#2
Ausdruck11 . . . Ausdruck12 Ausdruck21 . . . Ausdruck22
#2
Ausdruck11 und Ausdruck12 müssen gleich
sein und Ausdruck21 und Ausdruck22 müssen
gleich sein
Ausdruckn bzw. (Ausdruck)n
Der voranstehende Ausdruck muss exakt nmal vorkommen.
Ausdruck+ bzw. (Ausdruck)+
Wiederholungen (ein– oder mehrfach) von
voranstehendem Ausdruck
Ausdruck* bzw. (Ausdruck)*
Wiederholungen (keinmal, ein– oder mehrfach) von voranstehendem Ausdruck
202
Dozent Mohamed Naji http://iba-nuernberg.fu-academy.de/ BWL Datenbanksystem http://www.naji.net16.net
Ausdrucka,b bzw. (Ausdruck)a,b
Der voranstehende Ausdruck muss mindestens
a–mal und darf maximal b–mal vorkommen.
Ausdrucka, bzw. (Ausdruck)a,
Der voranstehende Ausdruck muss mindestens
a-mal vorkommen.
Symbol für notwendiges Leerzeichen
\#\@\.\‡\†\^\~\$\!\-\{\}\|\)\(\]\[\*\+\?\\
Metazeichen werden durch ein vorangestelltes
Backslash–Zeichen aufgehoben werden.
0-6
eine Ziffer von 0 bis 6
/*Kommentar*/
Kommentar
<Speicherverzeichnis>
Speicherverzeichnis
<Installationsverzeichnis>
Installationsverzeichnis
<Arbeitsverzeichnis>
Arbeitsverzeichnis
Break
Cbzw.
Symbol für notwendiges Zeilenumbruch (z.B.
bei MatLab Anweisungen)
Symbol für Zeilenfortsetzungszeichen. Es
wird verwendet, um eine einzelne Code–Zeile
auf zwei oder mehr physische Zeilen zu verteilen; z.B. Deklaration von langem String in
Java:
String langeText = "das ist ein
langer Text in
Java. In der
Quellcode
muss in einer Zeile
geschrieben
werden";
C
C
C
Tabelle 56.0.0.1: Notationen
203
Index
Kommando, 79
Tabelle
name, 79
204
Personverzeichnis
Galilei, Galileo ♂italienischer Philosoph, Mathematiker, Physiker und Astronom
(1564; 1642) 78 Jahre, II
205
Herunterladen