Relationale Datenbanken und SQL • Definition einer Datenbank • Dreischichtenmodell • Relationale Algebra • SQL • select • Aussagelogik Worzyk FH Anhalt Medienarchive Winter 2008 SQL 1 1 IBM Computertechnologie Die permanente Innovation Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 SQL 5 5 Beispiel Programmierstile prozedural Eintrag = anfang repeate eintrag = eintrag.next until eintrag.name = ‚Worzyk‘; gesuchte_nummer = eintrag.nummer - 10; for eintrag = anfang to eintrag = ende do if eintrag.nummer = gesuchte_nummer print eintrag.name; eintrag = eintrag.next; end; Worzyk FH Anhalt Medienarchive Winter 2008 SQL 6 6 Beispiel Programmierstile deklarativ SELECT name FROM telefonbuch WHERE nummer = (SELECT nummer from telefonbuch WHERE name = ‘Worzyk‘) - 10; Worzyk FH Anhalt Medienarchive Winter 2008 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. Medienarchive Winter 2008 SQL 8 Worzyk FH Anhalt 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 = {A1, …, Am} 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) Worzyk FH Anhalt Medienarchive Winter 2008 SQL 9 9 Relation Beispiel Attribute 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 Worzyk FH Anhalt Tupel Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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. Worzyk FH Anhalt Medienarchive Winter 2008 SQL 12 12 Relationenalgebra Selektion Aussagen über Konstanten, Attribute und Funktionen mit Hilfe von Vergleichsoperatoren =≠<≤>≥ und logischen Operatoren ¬∧∨ Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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 T1 und T2 enthält alle Tupel, die in der Tabelle T1 aber nicht in der Tabelle T2 enthalten sind. Voraussetzung für die Bildung einer Differenz ist die gleiche Struktur von T1 und T2 Worzyk FH Anhalt Medienarchive Winter 2008 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: T1 enthält die Namen aller Mitarbeiter einer Abteilung T2 enthält die Namen aller Vorgesetzten einer Abteilung T1 - T2 enthält die Namen Mitarbeiter, die keine Vorgesetzten sind. 15 Relation Differenz Tabelle T1 Tabelle T2 Worzyk FH Anhalt 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 Person Ort Auto Alter Wohnung Hans Köthen Z3 23 Miete Jutta Köthen Golf 25 Miete Käfer Anna Köthen 76 Miete Otto Köthen 45 EFH Horst Köthen 50 ETW Medienarchive Winter 2008 SQL 16 Tabelle T1 enthält alle Autobesitzer im Landkreis Tabelle T2 enthält alle Einwohner im Ort Köthen Tabelle T1-T2 enthält alle Autobesitzer, die nicht in Köthen wohnen 16 Relationenalgebra Produkt Das Produkt der Tabellen T1 und T2 hat die Attribute von T1 und T2. Jedes Tupel von T1 wird mit jedem Tupel von T2 verbunden. Worzyk FH Anhalt Medienarchive Winter 2008 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 Name Biemann Biemann Fissgus Fissgus Mylius Mylius Worzyk FH Anhalt Nummer 3100 3100 3121 3121 3123 3123 Lehrgebiet Mathematik Software - Engineering Lehrgebiet Mathematik Software-Engineering Mathematik Software-Engineering Mathematik Software-Engineering Medienarchive Winter 2008 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 Hans Emil Jutta Fritz Anna Else Ort Köthen Wolfen Köthen Aken Köthen Aken Person Emil Anna Fritz Else Hans Jutta Beruf Hausfrau Hebamme Kapitän Lehrer Lehrer Lehrer Beruf Lehrer Hausfrau Kapitän Hebamme Einkommen 500 100 800 600 Mögliche Fragen: wie heißen die Lehrer in Köthen wieviel verdienen die Leute in Aken Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Anton 425 Lehmann Hans 260 Maier Fritz 250 Müller Hermann 111 Köhler Emil 301 Bauer Else 260 Medienarchive Winter 2008 SQL 20 20 select SELECT command ::= SELECT * , DISTINCT ALL column t_alias. c_alias table. , FROM table t_alias WHERE condition Worzyk FH Anhalt Medienarchive Winter 2008 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 ---------------Müller Lehmann Maier Müller Köhler Bauer VORNAME TELEFONNUMMER EINGERICHTET ---------- ------------- -----------Jutta 425 01.09.99 Hans 260 03.01.00 Fritz 250 05.09.98 Anna 111 03.12.99 Emil 301 03.09.99 Else 260 01.09.99 6 Zeilen ausgewählt. Worzyk FH Anhalt Medienarchive Winter 2008 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 ---------Jutta Hans Fritz Anna Emil Else NACHNAME TELEFONNUMMER -------------------- ------------Müller 425 Lehmann 260 Maier 250 Müller 111 Köhler 301 Bauer 260 6 Zeilen ausgewählt. Worzyk FH Anhalt Medienarchive Winter 2008 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 ------------------Müller Müller Worzyk FH Anhalt VORNAME TELEFONNUMMER ---------- ------------Jutta 425 Anna 111 Medienarchive Winter 2008 SQL 24 24 Abfragen Alle Tupel mit einer Telefonnummer >300 SQL> SELECT Nachname, Vorname, Telefonnummer 2 FROM telefonbuch 3 WHERE telefonnummer > 300; NACHNAME -------------------Müller Köhler Worzyk FH Anhalt VORNAME TELEFONNUMMER ---------- ------------Anton 425 Emil 301 Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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 -------------------Müller Lehmann Köhler Worzyk FH Anhalt VORNAME TELEFONNUMMER ---------- ------------Anton 425 Hans 260 Emil 301 Medienarchive Winter 2008 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 -------------------Müller Lehmann Köhler Worzyk FH Anhalt VORNAME TELEFONNUMMER ---------- ------------Anton 425 Hans 260 Emil 301 Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 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: ≡ Worzyk FH Anhalt Medienarchive Winter 2008 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 Worzyk FH Anhalt Medienarchive Winter 2008 SQL 31 31 Beispiele für Ausdrücke p q p∧q r∨q Name = "Müller" Telefonnummer >300 Müller und mit einer Telefonnummer >300 Lehmann oder mit einer Telefonnummer >300 wenn nicht Lehmann dann mit einer ¬r → q 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 Worzyk FH Anhalt Medienarchive Winter 2008 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 ) Worzyk FH Anhalt Medienarchive Winter 2008 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 )) ((p ∨ q) ∨ r ) ≡ (p ∨ (q ∨ r )) (p ∧ (q ∨ r )) ≡ (p ∧ q) ∨ (p ∧ r) Distributivität (p ∨ (q ∧ r )) ≡ (p ∨ q) ∧ (p ∨ r) Worzyk FH Anhalt Assoziativität Medienarchive Winter 2008 SQL 34 34 De Morgan‘sche Regeln ¬(p ∧ q) ≡ ¬(p ∨ q) ≡ Worzyk FH Anhalt ¬p ∨ ¬q ¬p ∧ ¬q Medienarchive Winter 2008 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 Worzyk FH Anhalt SQL> SELECT * FROM stuga; NACHNAME VORNAME STUDIENGANG ---------- ---------- --------------Müller Jutta Informatik Köhler Emil Fachübersetzen Maier Fritz InfManagement Medienarchive Winter 2008 SQL 36 36 Kreuzprodukt SQL> SELECT vorlesung, studiengang 2 FROM belegung, stuga; VORLESUNG --------------Mathematik DBS1 Programmierung Mathematik DBS1 Programmierung Mathematik DBS1 Programmierung Worzyk FH Anhalt STUDIENGANG --------------Informatik Informatik Informatik Fachübersetzen Fachübersetzen Fachübersetzen InfManagement InfManagement InfManagement Medienarchive Winter 2008 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> 2 3 4 5 SELECT ta_stuga.nachname, ta_stuga.vorname, ta_stuga.studiengang, ta_belegung.vorlesung FROM ta_stuga, ta_belegung WHERE ta_stuga.nachname = ta_belegung.nachname AND ta_stuga.vorname = ta_belegung.vorname; NACHNAME ---------Köhler Maier Müller Worzyk FH Anhalt VORNAME ---------Emil Fritz Jutta STUDIENGANG --------------Fachübersetzen InfManagement Informatik VORLESUNG -------------DBS1 Programmierung Mathematik Medienarchive Winter 2008 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 SELECT command ::= SELECT * , DISTINCT ALL column t_alias. c_alias table. , FROM table t_alias WHERE condition , GROUP BY expr HAVING condition , ORDER BY Worzyk FH Anhalt column ASC DESC Medienarchive Winter 2008 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> 2 3 4 5 SELECT s.nachname, s.vorname, s.studiengang, b.vorlesung FROM ta_stuga s, ta_belegung b WHERE s.nachname = b.nachname AND s.vorname = b.vorname; NACHNAME ---------Köhler Maier Müller Worzyk FH Anhalt VORNAME ---------Emil Fritz Jutta STUDIENGANG --------------Fachübersetzen InfManagement Informatik VORLESUNG --------------DBS1 Programmierung Mathematik Medienarchive Winter 2008 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