Relationale Datenbanken und SQL



Ähnliche Dokumente
Informatik 12 Datenbanken SQL-Einführung

7. Übung - Datenbanken

Professionelle Seminare im Bereich MS-Office

Allgemeines zu Datenbanken

Abfragen: Grundbausteine

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

2.5.2 Primärschlüssel

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Datenbanken Microsoft Access 2010

Informationsblatt Induktionsbeweis

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Zeichen bei Zahlen entschlüsseln

Datenbanken Kapitel 2

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

1 Mathematische Grundlagen

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Stammdatenanlage über den Einrichtungsassistenten

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

Themen. M. Duffner: Datenbanksysteme

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

MS Excel 2010 Kompakt

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Relationale Datenbanken Datenbankgrundlagen

Hilfedatei der Oden$-Börse Stand Juni 2014

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Einführung in Datenbanksysteme. H. Wünsch

Aufgabe 1: [Logische Modellierung]

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

ecaros2 - Accountmanager

mobifleet Beschreibung 1. Terminverwaltung in der Zentrale

Info zum Zusammenhang von Auflösung und Genauigkeit

Beweisbar sichere Verschlüsselung

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Kurzübericht der implementierten Funktionen der Fachinformatiker -== Info Datenbank ==-

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

SUDOKU - Strategien zur Lösung

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Inventur. Bemerkung. / Inventur

Nutzung von GiS BasePac 8 im Netzwerk

Grundbegriffe der Informatik

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Mediator 9 - Lernprogramm

Auswahlabfragen mit ACCESS

iphone- und ipad-praxis: Kalender optimal synchronisieren

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Grundlagen der Theoretischen Informatik, SoSe 2008

Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt

SQL structured query language

Fallbeispiel: Eintragen einer Behandlung

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Kapitel 10 Aktive DBMS

Was sind Jahres- und Zielvereinbarungsgespräche?

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Browsereinstellungen für moneycheck24 in Explorer unter Windows

Einführung in die Algebra

Bedienung des Web-Portales der Sportbergbetriebe

4 Aufzählungen und Listen erstellen

Primzahlen und RSA-Verschlüsselung

Dokumentation IBIS Monitor

SEMINAR Modifikation für die Nutzung des Community Builders

Der Kundenmanager. Der Kundenmanager der Firma AED-SICAD ist ein Bestandteil des Web Order System (WOS) und unterscheidet zwischen folgenden Kunden:

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

9. Übung Formale Grundlagen der Informatik

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG

Waimea Phone Monitor. Handbuch. Anzeige von eingehenden Anrufen auf Telefonanlagen mit TAPI-Interface

Datenexport aus JS - Software

Erstellen von x-y-diagrammen in OpenOffice.calc

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Papa - was ist American Dream?

Hinweise zum Übungsblatt Formatierung von Text:

Anleitung über den Umgang mit Schildern

Datenbanken für Online Untersuchungen

Probeklausur Grundlagen der Datenbanksysteme II

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Im Original veränderbare Word-Dateien

Informationen zu den regionalen Startseiten

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Anzeige von eingescannten Rechnungen

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Transkript:

Relationale Datenbanken und SQL Definition einer Datenbank Dreischichtenmodell Relationale Algebra SQL select Aussagelogik SQL 1 1

IBM Computertechnologie Die permanente Innovation SQL 2 In den Anfängen der Verarbeitung großer Datenbestände bildeten Daten und Programme eine Einheit und waren optimal aufeinander abgestimmt. Wenn ein anderes Programm die gleichen Daten bearbeiten wollte, mußte es sich genau an die Datenstruktur anpassen. Wenn dann die Datenstruktur geändert wurde, mußten beide Programme synchron dazu auch geändert werden. Im Lauf der Zeit wurde die Menge der Programme, die den gleichen Datenbestand bearbeiteten immer größer und damit nahm der Koordinierungsaufwand bei Änderung der Datenstruktur zum Teil einen Umfang an, der nicht mehr zu bewältigen war. Er kann abgeschätzt werden an dem Wehklagen einiger Firmen bei der Umstellung von einer zweistelligen auf eine vierstellige Jahreszahl, die zum Jahrhundertwechsel in alten Programmen notwendig ist. Die Nachteile der starren Kopplung zwischen Programmen und Daten wurde recht früh erkannt und es entstanden Konzepte, diese Kopplung flexibel zu gestalten. Ein Konzept wurde 1970 von E.F. Codd vorgestellt und beschreibt relationale Datenbanken, die eine Trennung zwischen Daten und Programmen vorsehen. 2

Definition einer Datenbank Datenbanksystem Datenbankmanagementsystem Abfrage Manipulation Zugriffssteuerung Konsistenzsicherung Datenstrukturen Daten SQL 3 Unter einer Datenbank wollen wir in dieser Vorlesung ein Datenbanksystem und die darin enthaltenen Daten verstehen. Ein Datenbanksystem besteht aus einem Datenbankmanagementsystem (DBMS), welches die Daten bearbeitet und Ergebnisse von Anfragen an den Auftraggeber zurückliefert. Weiterhin ist es für die Verwaltung paralleler Zugriffe und die Sicherung der Konsistenz der Daten zuständig. Zum Datenbanksystem gehört auch die Beschreibung der Datenstruktur. Datenbank: - Datenbanksystem - Datenbankmanagementsystem - Manipulation - Zugriffssteuerung - Konsistenzsicherung - Datenstrukturen - Daten 3

Dreischichtenmodell nach ANSI/SPARC Externe Schicht Benutzersicht Konzeptionelle Schicht Datenbankadministratorsicht Interne Schicht Datenbankherstellersicht SQL 4 Dreischichtenmodell nach ANSI/SPARC Die Trennung zwischen Daten und Programmen, die durch Datenbanksysteme ermöglicht wird, erlaubt unterschiedliche Betrachtungsweisen des Datenbanksystems. Die externe Schicht beschreibt die Sicht des Benutzers oder Programmierers; hier ist die Datenmanipulation im Vordergrund (ansehen, einfügen, ändern und löschen von Datensätzen). Die konzeptionelle Schicht beschreibt die Sicht des Datenbankadministrators; hier ist die Struktur der Daten, die Ordnungsreihenfolge, die Zugriffsberechtigung im Vordergrund. Die interne Schicht beschreibt die Sicht des Entwicklers des Datenbanksystems; hier stehen die physikalische Datenspeicherung, die Mechanismen des konkurrierenden Zugriffs und der Konsistenzsicherung im Vordergrund. Das Dreischichtenmodell ist vom American National Standards Institute definiert worden. SPARC = Standards Planning and Requirements Committee 4

Datenmanipulation Suchen Hinzufügen Ändern Löschen SQL 5 5

Beispiel Programmierstile prozedural Eintrag = anfang repeate eintrag = eintrag.next until eintrag.name = ; gesuchte_nummer = eintrag.nummer - 10; for eintrag = anfang to eintrag = ende do if eintrag.nummer = gesuchte_nummer print eintrag.name; eintrag = eintrag.next; end; SQL 6 6

Beispiel Programmierstile deklarativ SELECT name FROM telefonbuch WHERE nummer = (SELECT nummer from telefonbuch WHERE name = ) - 10; SQL 7 7

Standardisierung von SQL Structured Query Language Grundlage ist das mathematische Modell einer Relationenalgebra -> Entwicklung einer mathematischen Theorie, welche die Eigenschaften des Modells beschreibt -> Implementierung von DBMS, so dass diese Eigenschaften erfüllt sind. SQL 8 Eine Algebra ist allgemein eine Grundmenge und eine Familie von darauf definierten Operationen. Beispiele: Vektorraum mit einem Vektorprodukt Compiler, der Programmcode von einer Sprache in eine andere übersetzt. Die Eigenschaften der Relationenalgebra können unabhängig von einem konkreten Problem definiert werden und so formuliert werden, dass sie möglichst universell sind. Es findet eine Arbeitsteilung zwischen den Theoretikern, die Anforderungen definieren und den Praktikern, die Datenbankmanagementsysteme entsprechende den Anforderungen realisieren und auf Praktikabilität testen. 8

Relation Sei X = {A 1,, A m } eine Menge von Attributen, wobei jedes Attribut A X einen nicht-leeren, endlichen Wertebereich wb(x) atomarer Werte besitze. Ein Tupel über X ist eine Abbildung μ: X -> wb(x), für die für jedes A X gilt: μ(a) wb(x) Eine Relation r über X ist eine endliche Menge von Tupeln über X: r Tup(X) SQL 9 9

Person Ort Relation Beispiel Auto Alter Wohnung Attribute Hans Köthen Z3 23 Miete Emil Jutta Wolfen Köthen Manta Golf 35 25 ETW Miete Tupel Fritz Aken C5 45 EFH Anna Köthen Käfer 76 Miete Else Aken Audi 50 ETW SQL 10 Attribute und deren Wertebereiche: Person: Alle Buchstabenkombinationen, die in irgend einer Sprache einen Namen ergeben Ort: Alle bekannten Orte einer bestimmten Region Auto: Der Wertebereich ist unklar definiert, er enthält Modelle: Z3, Manta, C5; Kategorie: Golf; Marken: Audi und Umschreibungen: Käfer Alter: Ganze zweistellige Zahl Wohnung: nur die erlaubten Werte: Miete, ETW, EFH 10

Relationenalgebra Projektion Person Ort Auto Alter Wohnung Hans Köthen Z3 23 Miete Emil Wolfen Manta 35 ETW Jutta Köthen Golf 25 Miete Fritz Aken C5 45 EFH Anna Köthen Käfer 76 Miete Else Aken Audi 50 ETW SQL 11 Einzelne Attribute können ausgeblendet werden 11

Relationenalgebra Selektion Aus einer Tabelle werden Tupel mit bestimmten Eigenschaften ausgewählt und dem Anwendungsprogramm präsentiert. Die Auswahl wird mit Hilfe der Aussagelogik getroffen. SQL 12 12

Relationenalgebra Selektion Aussagen über Konstanten, Attribute und Funktionen mit Hilfe von Vergleichsoperatoren = < > und logischen Operatoren SQL 13 13

Relationenalgebra Selektion Person Ort Auto Alter Wohnung Hans Köthen Z3 23 Miete Emil Wolfen Manta 35 Miete Jutta Köthen Golf 25 Miete Fritz Aken C5 45 EFH Anna Köthen Käfer 76 ETW Else Aken Audi 50 ETW Alle Personen aus Köthen und in einer Mietwohnung SQL 14 Anna wird nicht ausgewählt, weil sie zwar in Köthen wohnt, aber nicht in einer Mietwohnung sondern in einer Eigentumswohnung. 14

Relationenalgebra Differenz Die Differenz zweier Tabellen T 1 und T 2 enthält alle Tupel, die in der Tabelle T 1 aber nicht in der Tabelle T 2 enthalten sind. Voraussetzung für die Bildung einer Differenz ist die gleiche Struktur von T 1 und T 2 SQL 15 Die gleiche Struktur besagt, dass die Menge der Attribute und die Eigenschaften der Attribute übereinstimmen müssen. Die Bedeutung der Attribute kann unterschiedlich sein. Beispiel: T 1 enthält die Namen aller Mitarbeiter einer Abteilung T 2 enthält die Namen aller Vorgesetzten einer Abteilung T 1 -T 2 enthält die Namen Mitarbeiter, die keine Vorgesetzten sind. 15

Relation Differenz Person Ort Auto Alter Wohnung Hans Köthen Z3 23 Miete Tabelle T 1 Emil Jutta Wolfen Köthen Manta Golf 35 25 ETW Miete Fritz Aken C5 45 EFH Anna Köthen Käfer 76 Miete Else Aken Audi 50 ETW Person Ort Auto Alter Wohnung Hans Köthen Z3 23 Miete Tabelle T 2 Jutta Anna Köthen Köthen Golf Käfer 25 76 Miete Miete Otto Köthen 45 EFH Horst Köthen 50 ETW SQL 16 Tabelle T 1 enthält alle Autobesitzer im Landkreis Tabelle T 2 enthält alle Einwohner im Ort Köthen Tabelle T 1 -T 2 enthält alle Autobesitzer, die nicht in Köthen wohnen 16

Relationenalgebra Produkt Das Produkt der Tabellen T 1 und T 2 hat die Attribute von T 1 und T 2. Jedes Tupel von T 1 wird mit jedem Tupel von T 2 verbunden. SQL 17 Das Produkt wird ohne Rücksicht auf die Bedeutung der Attribute und die Sinnhaftigkeit der Ergebnisse gebildet. Es ist die Kunst den Programmierers, aus dieser Menge diejenigen Tupel auszuwählen, die für die weitere Verarbeitung sinnvoll sind. 17

Relationenalgebra Produkt name nummer Biemann 3100 Fissgus 3121 Mylius 3123 Lehrgebiet Mathematik Software - Engineering Name Nummer Lehrgebiet Biemann 3100 Mathematik Biemann 3100 Software-Engineering Fissgus 3121 Mathematik Fissgus 3121 Software-Engineering Mylius 3123 Mathematik Mylius 3123 Software-Engineering SQL 18 Die oberste Zeile enthält die Attribute der einzelnen Spalten: die erste Spalte enthält Namen, die zweite Spalte enthält (Telefon-)nummern. Die weiteren Zeilen enthalten jeweils ein Tupel bestehend aus einem Namen und der dazugehörenden Telefonnummer. 18

Relationenalgebra Produkt und Selektion Person Ort Person Beruf Beruf Einkommen Hans Köthen Emil Hausfrau Lehrer 500 Emil Wolfen Anna Hebamme Hausfrau 100 Jutta Köthen Fritz Kapitän Kapitän 800 Fritz Aken Else Lehrer Hebamme 600 Anna Köthen Hans Lehrer Else Aken Jutta Lehrer Mögliche Fragen: wie heißen die Lehrer in Köthen wieviel verdienen die Leute in Aken SQL 19 Suche Person aus (Person,Ort) für die gilt: Person aus (Person,Ort) = Person aus (Person,Beruf) Beruf aus (Person,Beruf) = Lehrer 19

Aussagen über Tabelleninhalte Müller Anton 425 Lehmann Hans 260 Maier Fritz 250 Müller Hermann 111 Köhler Emil 301 Bauer Else 260 SQL 20 20

select SELECT command ::= SELECT *, DISTINCT ALL t_alias. column c_alias table., FROM table t_alias WHERE condition SQL 21 SELECT: Schlüsselwort, das den Auswahlbefehl und die Liste der anzuzeigenden Spalten einleitet DISTINCT: Es werden nur die Zeilen angezeigt, die sich paarweise in mindestens einem Wert unterscheiden ALL: es werden alle Zeilen angezeigt t_alias: Alias für eine Tabellennamen table: Tabellenname column: Name der Spalten, die angezeigt werden sollen FROM: Schlüsselwort, das die Liste der Tabellen einleitet, für die die Auswahl getroffen werden soll table: Tabnellenname t_alias: Alias für eine Tabellennamen; wird an dieser Stelle definiert und kann dann in der SELECT-Liste benutzt werden WHERE: Schlüsselwort, das die Auswahlbedingungen einleitet condition: Auswahlbedingung für die anzuzeigenden Zeilen 21

select SQL> SELECT * FROM telefonbuch; NACHNAME VORNAME TELEFONNUMMER EINGERICHTET ---------------- ---------- ------------- ------------ Müller Jutta 425 01.09.99 Lehmann Hans 260 03.01.00 Maier Fritz 250 05.09.98 Müller Anna 111 03.12.99 Köhler Emil 301 03.09.99 Bauer Else 260 01.09.99 6 Zeilen ausgewählt. SQL 22 SQL> ist die Eingabeaufforderung, mit der sich SQL Plus meldet. * bedeutet die Aufforderung, alle vorhandenen Spalten der angegebenen Tabelle(n) anzuzeigen. Spaltenüberschriften und Tabellennamen werden in ORACLE in Großbuchstaben gespeichert. Sie können in Groß- oder Kleinbuchstaben eingegeben werden. 22

select SQL> SELECT vorname, nachname, telefonnummer 2 FROM telefonbuch; VORNAME NACHNAME TELEFONNUMMER ---------- -------------------- ------------- Jutta Müller 425 Hans Lehmann 260 Fritz Maier 250 Anna Müller 111 Emil Köhler 301 Else Bauer 260 6 Zeilen ausgewählt. SQL 23 In diesem Beispiel werden die anzuzeigenden Spalten explizit angegeben. Wenn der select-befehl innerhalb eines Programmes benutzt wird, sollte nie * angegeben werden, sondern es sollte immer die Liste der gewünschten Spalten angegeben werden. Im anderen Fall kann ein Ändern der Reihenfolge oder ein Hinzufügen einer neuen Spalte zu einem Abbruch des aufrufenden Programms führen. 23

Abfragen Alle Tupel von Müller SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE nachname = 'Müller'; NACHNAME VORNAME TELEFONNUMMER ------------------- ---------- ------------- Müller Jutta 425 Müller Anna 111 SQL 24 24

Abfragen Alle Tupel mit einer Telefonnummer >300 SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE telefonnummer > 300; NACHNAME VORNAME TELEFONNUMMER -------------------- ---------- ------------- Müller Anton 425 Köhler Emil 301 SQL 25 25

Abfragen Alle Tupel von Müller und mit einer Telefonnummer >300 SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE nachname = 'Müller' 4 AND telefonnummer > 300; NACHNAME VORNAME TELEFONNUMMER -------------------- ---------- ------------- Müller Anton 425 SQL 26 26

Abfragen Alle Tupel von Lehmann oder mit einer Telefonnummer>300 SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE Nachname = 'Lehmann' 4 OR telefonnummer > 300; NACHNAME VORNAME TELEFONNUMMER -------------------- ---------- ------------- Müller Anton 425 Lehmann Hans 260 Köhler Emil 301 SQL 27 27

Abfragen Alle Tupel für die nicht gilt: Der Name ist nicht Lehmann und die Telefonnummer ist nicht > 300 SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE NOT( Nachname!= 'Lehmann' 4 AND NOT telefonnummer > 300); NACHNAME VORNAME TELEFONNUMMER -------------------- ---------- ------------- Müller Anton 425 Lehmann Hans 260 Köhler Emil 301 SQL 28 28

Aussagen über Tabelleninhalte Unterschiedliche Aussagen können zu gleichen Ergebnissen führen Exakte Aussagen sind schwierig zu formulieren Umgangssprachliche Aussagen sind häufig nicht exakt SQL 29 Es ist also möglich, Abfragen zu ändern und trotzdem die gleiche Ergebnismenge zu bekommen. Unter Umständen ist eine umformulierte Abfrage für das DBMS einfacher zu bearbeiten und es können dadurch bis zu 100 mal schnellere Antwortzeiten erzielt werden. Wenn schon vor der Abfrage bekannt ist, dass diese Abfrage immer die gesamte Ergebnismenge oder immer die leere Menge liefert, kann diese Abfrage auch unterbleiben. Die Aussagelogik liefert uns die Möglichkeit, Abfragen an die Datenbank unter einem formalen Gesichtspunkt zu betrachten und unter anderem Regeln für die Gleichheit von Aussagen aufzustellen. 29

Aussagelogik Grundzeichen des Aussagenkalküls: Aussagevariablen: p, q, r,... Konnektoren:,,,, Technische Zeichen: (, ) Metasprache: SQL 30 30

Aussagelogik Bildungsregeln für Ausdrücke: Jede Aussagevariablen ist ein Ausdruck Wenn p q Ausdrücke sind, dann auch p Negation p q Konjunktion p q Alternative p q Implikation p q Äquivalenz p q Antivalenz Ausdrücke SQL 31 31

Beispiele für Ausdrücke p Name = "Müller" q Telefonnummer >300 p q Müller und mit einer Telefonnummer >300 r q Lehmann oder mit einer Telefonnummer >300 r q wenn nicht Lehmann dann mit einer Telefonnummer >300 (p q) Alle Tupel von Müller und der TelNr > 300 ( p q) oder wenn der Name Müller" ist, dann TelNr 300, sonst egal SQL 32 32

Äquivalenzen p q ( p q) p q ( p q) p q p q p q (p q) (q p) ( p q) ( q p ) p q (p q) (q p ) SQL 33 Die Äquivalenzen und Umformungen von p q und π θ sind für das Arbeiten mit relationalen Datenbanken notwendig, da in dem Sprachumfang von SQL keine Ausdrücke für die Pfeile vorhanden sind (Pfeil-freie Ausdrücke). Umgangssprachliche Ausdrücke können falsch oder ungenau sein: Parkverbot an Sonn- und Feiertagen Ich gehe schwimmen oder ins Kino (Aber nicht beides gleichzeitig) Hans liebt Else oder Inge ( oder beide) Ich gehe ins Kino und ich esse Popcorn. Es ist falsch, dass ich nicht ins Kino gehe oder kein Popcorn esse. Hans liebt Else oder Hans liebt Inge. Es ist falsch, dass Hans nicht Else liebt und nicht Inge liebt. Wenn der Petersberg höher als der Brocken ist und die Zugspitze höher als der Petersberg ist, dann ist die Zugspitze höher als der Brocken Der Brocken ist höher als der Petersberg oder die Zugspitze ist höher als der Petersberg. Die Zugspitze ist höher als der Brocken ist äquivalent zu Der Brocken ist niedriger als die Zugspitze Die Zugspitze ist niedriger als der Brocken oder Der Brocken ist niedriger als die Zugspitze und Der Brocken ist höher als die Zugspitze oder Die Zugspitze ist höher als der Brocken Wenn ich mit dem Fahrrad fahre, dann fahre ich nicht mit dem Auto Ich fahre entweder mit dem Fahrrad oder mit dem Auto und nicht mit beiden gleichzeitig 33

Klammerregeln ((p q) r ) (p (q r )) Assoziativität ((p q) r ) (p (q r )) (p (q r )) (p q) (p r) Distributivität (p (q r )) (p q) (p r) SQL 34 34

De Morgan sche Regeln (p q) p q (p q) p q SQL 35 Die oder - Verknüpfung kann bei großen Datenmengen in einigen Datenbanksystemen zu langen Laufzeiten führen, weil die beiden Teilergebnisse hintereinander ausgeführt werden und dann zusammengeführt werden. Durch die Anwendung einer Regel von de Morgan kann aus der oder Verknüpfung eine und Verknüpfung erzeugt werden, die eventuell schneller arbeitet. 35

Kreuzprodukt SQL> SELECT * FROM belegung; NACHNAME VORNAME VORLESUNG ---------- ---------- --------------- Müller Jutta Mathematik Köhler Emil DBS1 Maier Fritz Programmierung SQL> SELECT * FROM stuga; NACHNAME VORNAME STUDIENGANG ---------- ---------- --------------- Müller Jutta Informatik Köhler Emil Fachübersetzen Maier Fritz InfManagement SQL 36 36

Kreuzprodukt SQL> SELECT vorlesung, studiengang 2 FROM belegung, stuga; VORLESUNG STUDIENGANG --------------- --------------- Mathematik Informatik DBS1 Informatik Programmierung Informatik Mathematik Fachübersetzen DBS1 Fachübersetzen Programmierung Fachübersetzen Mathematik InfManagement DBS1 InfManagement Programmierung InfManagement SQL 37 Es wird jedes Element der Tabelle belegung mit jedem Element der Tabelle stuga verknüpft. Oracle bestimmt die Reihenfolge der Verknüpfungen an Hand von Zusatzinformationen zu den einzelnen Tabellen wie z.b. vorhandene Indizes oder die Größe der Tabelle. Da in diesem Beispiel keinerlei Zusatzinformationen vorliegen, entspricht die Reihenfolge der Verknüpfungen der Reihenfolge der angegebenen Tabellen. 37

equijoun SQL> SELECT ta_stuga.nachname, ta_stuga.vorname, 2 ta_stuga.studiengang, ta_belegung.vorlesung 3 FROM ta_stuga, ta_belegung 4 WHERE ta_stuga.nachname = ta_belegung.nachname 5 AND ta_stuga.vorname = ta_belegung.vorname; NACHNAME VORNAME STUDIENGANG VORLESUNG ---------- ---------- --------------- -------------- Köhler Emil Fachübersetzen DBS1 Maier Fritz InfManagement Programmierung Müller Jutta Informatik Mathematik SQL 38 Die einfachste und an meisten verwendete Art, sinnvolle Ergebnisse aus dem Produkt zweier oder mehrerer Tabellen zu bekommen, ist der equi-join. Hierbei werden in der where-klausel nur solche Tupel ausgewählt, die identische Attributwerte in den unterschiedlichen Tabellen besitzen. 38

SELECT command ::= select SELECT *, FROM DISTINCT ALL column t_alias. c_alias table., table t_alias WHERE condition GROUP BY, expr HAVING condition ORDER BY column, ASC DESC SQL 39 table: Tabellenname; ist notwendig, wenn identische Spaltennamen in unterschiedlichen Tabellen angesprochen werden. t_alias: Alias für einen Tabellennamen. Der Alias wird in der FROM-Klausel definiert und kann in allen anderen Klauseln benutzt werden. 39

equijoun SQL> SELECT s.nachname, s.vorname, 2 s.studiengang, b.vorlesung 3 FROM ta_stuga s, ta_belegung b 4 WHERE s.nachname = b.nachname 5 AND s.vorname = b.vorname; NACHNAME VORNAME STUDIENGANG VORLESUNG ---------- ---------- --------------- --------------- Köhler Emil Fachübersetzen DBS1 Maier Fritz InfManagement Programmierung Müller Jutta Informatik Mathematik SQL 40 Durch die Einführung eines Tabellenalias wird die SELECT-Anweisung übersichtlicher. SELECT-Anweisungen von mehr als einer DIN A4 Seite und mehr als 10 Tabellen sind keine Seltenheit. 40