Informationsmanagement u. Numerische Methoden - Semester 2. Vorlesung: SQL II Relationale und - TU Dresden
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Fakultät Bauingenieurwesen Institut für Bauinformatik, Prof. Dr.-Ing. Raimar J. Scherer Informationsmanagement u. Numerische Methoden Relationale und Objekt-orientierte Datenstrukturen 6. Semester 2. Vorlesung: SQL II
Übersicht 1) Daten im Bauwesen 2) Von Tabellen zu Relationen 3) Die Datenbanksprache SQL a) Historie b) Eigenschaften c) Sprachelemente i. Schlüsselwörter ii. Syntax iii. Datendefinition: Create, Datentypen iv. Datenmanipulation: INSERT, UPDATE, DELETE v. Abfrage: Select TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 2 Prof. Dr.-Ing. R.-J. Scherer
Operationen auf relationalen Datenstrukturen Die 4 Grundoperationen sind: 1. Projektion 2. Vereinigung 3. Restriktion 4. Division. Sie basieren auf den 3 klassischen Mengenoperationen: Vereinigung: r1 ∪ r2 : = {x | x ∈ r1 oder x ∈ r2} Durchschnitt: r1 ∩ r2 : = {x | x ∈ r1 und x ∈ r2} Differenz: r1 \ r2 : = {x | x ∈ r1 und x ∉ r2} Die Verknüpfung dieser Operationen mit der Objektmenge wird auch als Relationenalgebra bezeichnet. Die Operationen gelten für beliebige n-stellige Relationen mit n ≥ 2. Alle Operationen werden durch den SELECT Befehl abgebildet.
Projektion Durch die Projektion werden aus einer n-stelligen Relation einzelne Spalten entfernt, d.h. die Relation wird auf eine neue Relation projiziert, die genau die nicht zu entfernenden Spalten enthält. Die Zeilen, die identische Werte enthalten, sind nur einmal zu erstellen, d. h. doppelte Zeilen werden gelöscht. Die Projektionsoperation wird mit π bezeichnet, Rneu = π (L) Ralt L ist eine Liste von den Attributen, die erhalten bleiben. Rneu muss natürlich eine n-stellige Relation mit n > 2 sein. Beispiel: Mitarbeiterkurzform = π (Pers.-Nr., Name, Vorname) Mitarbeiter Neue Relation Attribute der neuen Relation Ursprüngl. Relation Folie 4 2. VO Informationsmanagement: SQL
Projektion Mit- Pers- Name Vor- Wohnort Ge- Beruf Steuer- arbeiter Nr. name schlecht klasse 1 1015 Müller Hans Dresden m Müller 1 2 1055 Müller Rolf Freiberg m Bäcker 3 3 1075 Klein Otto Radeberg m Maler 1 4 2015 Adler Fritz Dresden m Polititker 3 5 2020 Schmidt Anton Freiberg m Student 5 6 2090 Walther Anna Zittau w Lehrerin 1 Rneu = π (Mitarb., Pers-Nr., Name, Vorname) Ralt Mitarbeiter Pers-Nr. Name Vorname 1 1015 Müller Hans 2 1055 Müller Rolf 3 1075 Klein Otto 4 2015 Adler Fritz 5 2020 Schmidt Anton 6 2090 Walther Anna Folie 5
Verbund 1) Bildung des Kreuzproduktes zweier Mengen 2) Selektion nach einer definierten Bedingung Mutter M_Name Kind Vater V_Name Kind Alter des Anabel Enrico Kindes Sophia Lotta Jörg Enrico 4 Marlen Ina Werner Lotta 7 Almuth Tom Thomas Tom 5 Heike Anna Marc Anna 3 Charlotte Franco Eltern = Vater Vater.Kind = Mutter.Kind Mutter Eltern V_Name Kind Alter des M_Name Kindes Jörg Enrico 4 Anabel Werner Lotta 7 Sophia Thomas Tom 5 Almuth Marc Anna 3 Heike Folie 6 2. VO Informationsmanagement:
Vereinigung Vereinigung Aus zwei typkompatiblen Relationen Relm und Relt wird eine neue Relation erzeugt, die alle Tupel t enthält, die in wenigstens einer der beiden Relationen vorkommen: Re l m ∪ Re l t := {t | t ∈ Re l m ∨ t ∈ Re l t } Anmerkung: Sind die zu vereinigenden Relationen nicht typkompatibel muss zunächst eine Anpassung stattfinden, indem beide Relationen durch eine Projektion bspw. auf semantisch identische Attribute beschränkt werden. Die Vereinigung ist assoziativ und kommutativ. Folie 7 2. VO Informationsmanagement
Vereinigung Pers- Name Vor- Steuer- Kunden- Name Vor- Wohnort Nr. name klasse Nr. name 1015 Müller Hans 1 1 Meier Heiner Dresden 1055 Müller Rolf 3 2 Müller Rolf Freiberg 1075 Klein Otto 1 3 Weber Gabi Radeberg 2015 Adler Fritz 3 4 Adler Fritz Dresden 2020 Schmidt Anton 5 Name Vorname 2090 Walther Anna 1 Müller Hans Müller Rolf Relneu = Mitarbeiter{Name,Vorname} υ Klein Otto Kunden{Name,Vorname} Adler Fritz Schmidt Anton Walther Anna Meier Heiner Weber Gabi Folie 8 2. VO Informationsmanagement
Restriktion Restriktion (Selektion) „Horizontale Zerlegung“ Eine Restriktion erzeugt aus einer Relation Rel1 eine neue Relation Rel2, die alle Tupel aus Rel1 enthält, welche eine oder mehrere Selektionsbedingungen erfüllen. Die Restriktionsoperation wird mit σ bezeichnet: σ Bedingung (Re l ) := {t | t ∈ Re l ∧ Bedingung (t ) = TRUE} Es wird unterschieden zwischen Konstantenselektion: Die Selektionsbedingung formuliert eine bestimmte Beziehung zwischen dem Attributwert und einer Konstanten; a(i) = c. Attributselektion: Die Selektionsbedingung formuliert eine bestimmte Beziehung zwischen den Werten zweier typkompatibler Attribute eines Tupels; a(i) = b(j) oder f[b(j)]. Die Beziehung werden durch einen Vergleichsoperator θ mit θ є {=,≠,,≤,≥} festgelegt, nicht nur =. Folie 9 2. VO Informationsmanagement
Restriktion (Selektion) „Horizontale Zerlegung“ Mit- Pers- Name Vor- Wohnort Ge- Beruf Steuer arbeite Nr. name schlech - r t klasse 1 1015 Müller Hans Dresden m Müller 1 2 1055 Müller Rolf Freiberg m Bäcker 3 3 1075 Klein Otto Radeberg m Maler 1 4 2015 Adler Fritz Dresden m Politiker 3 5 2020 Schmidt Anton Freiberg m Student 5 6 2090 Walther Anna Zittau w Lehrerin 1 Relneu = σ{Steuerklasse = 1} (Mitarbeiter) Mit- Pers Name Vor- Wohnor Ge- Beruf Steuer arbeite - name t schlech - r Nr. t klasse 1 1015 Müller Hans Dresden m Müller 1 3 1075 Klein Otto Radeber m Maler 1 g 6 10 Folie 2090 Walther Anna 2. Zittau VO Informationsmanagement w Lehrerin 1
Differenz Differenz Aus den beiden typkompatiblen Relationen Relm und Relt wird eine neue Relation erzeugt, die nur die Tupel t enthält, die in Relm, aber nicht in Relt vorkommen: Re l m \ Re l t := {t | t ∈ Re l m ∧ t ∉ Re l t } Die Differenz ist weder assoziativ noch kommutativ. Folie 11 2. VO Informationsmanagement
Differenz Pers- Name Vor- Steuer- Nr. name klasse Kunden- Name Vor- Wohnort Nr. name 1015 Müller Hans 1 1 Meier Heiner Dresden 1055 Müller Rolf 3 2 Müller Rolf Freiberg 1075 Klein Otto 1 3 Weber Gabi Radeberg 2015 Adler Fritz 3 4 Adler Fritz Dresden 2020 Schmidt Anton 5 2090 Walther Anna 1 Name Vorname Relneu = Mitarbeiter{Name,Vorname} \ Kunden{Name,Vorname} Müller Hans Klein Otto Schmidt Anton Walther Anna Folie 12 2. VO Informationsmanagement
SQL – Der Befehl SELECT SELECT ist der einzige Befehl zur Suche und Abfrage von Daten einer Datenbank. Syntax für den Hauptteil des SELECT-Befehls: SELECT Spaltenauswahlliste FROM Tabellenliste [ WHERE Bedingung ] [ GROUP BY Spaltenliste [ HAVING Bedingung ] ] Der SELECT Befehl entspricht der Mengenoperation PROJEKTION, kombiniert mit einer RESTRIKTION. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 13 Prof. Dr.-Ing. R.-J. Scherer
SQL – Der Befehl SELECT Ein kompletter SELECT-Befehl kann aus beliebig vielen Hauptteilen, die über UNION, EXCEPT oder INTERSECT miteinander verknüpft sind, bestehen. SELECT-Hauptteil: [ { UNION | EXCEPT| INTERSECT } SELECT-Hauptteil: [ { UNION | EXCEPT | INTERSECT } . . . ] ] [ ORDER BY Ordnungsliste ] Die Punkte deuten an, dass die Aufzählung beliebig fortgesetzt werden kann. Bei mehr als zwei Verknüpfungen sollten jedoch Klammern gesetzt werden, um die Eindeutigkeit der Reihenfolge zu garantieren. Nach der Verknüpfung kann das Resultat mittels ORDER-BY-Klausel noch geordnet werden. Anm.: In ORACLE muss der Bezeichner EXCEPT durch MINUS ersetzt werden. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 14 Prof. Dr.-Ing. R.-J. Scherer
SQL – Der Befehl SELECT UNION – Vereinigung der Ergebnismengen, wobei mehrfach vorkommende Ergebnistupel (wie bei DISTINCT) entfernt werden. VEREINIGUNG EXCEPT – liefert die Tupel, die in Relation A jedoch nicht in Relation B vorkommen. Mehrfach vorkommende Ergebnistupel werden entfernt. DIFFERENZ INTERSECT – liefert die Schnittmenge zweier Ergebnismengen. Mehrfach vorkommende Ergebnistupel werden entfernt. SCHNITT TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 15 Prof. Dr.-Ing. R.-J. Scherer
SQL – Der Befehl SELECT: Beispiel SELECT Bauleiter.PersNr, Name, COUNT (*) FROM Bauleiter, Baustelle WHERE Bauleiter.PersNr = Baustelle.PersNr GROUP BY Bauleiter.PersNr, Name UNION SELECT PersNr, Name FROM Bauleiter WHERE PersNr NOT IN (SELECT PersNr FROM Baustelle); TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 16 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Logische Arbeitsfolge Alle in der Tabellenliste angegebenen Relationen werden (über das Kreuzprodukt oder einen Join) miteinander verknüpft. 1. Aus dieser verknüpften Relation werden die Tupel (Datensätze, Zeilen) ausgewählt, die die angegebene WHERE-Bedingung erfüllen. Es liegt eine Restriktion vor. 2. Mittels Auswahlliste am Anfang des SELECT-Befehls findet auf das bisherige Resultat eine Projektion auf die angegebenen Spalten statt. 3. Dann wird eine Gruppierung gemäß der GROUP-BY-Klausel durchgeführt. Eine Gruppierung fasst dabei mehrere Tupel zu einem Tupel zusammen, so dass die Ergebnisrelation weniger Tupel enthält. 4. Eine folgende HAVING-Klausel führt jetzt auf das Ergebnis der Gruppierung nochmals eine Restriktion auf bestimmte Tupel durch. 5. Alle so erstellten Hauptteile des SELECT-Befehls werden jetzt mittels UNION, INTERSECT oder EXCEPT miteinander verknüpft. 6. Die Ergebnisrelation wird nach den Vorgaben in der Ordnungsliste der ORDER-BY-Klausel sortiert. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 17 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Einfache Grundform SELECT . . . FROM . . . ; Semikolon schließt den Befehl ab Name der Tabelle mit den Daten Schlüsselwort für Tabellenangabe anzuzeigende Spalten Schlüsselwort für Abfrage Beispiele: Auflisten aller Spalten einer Tabelle: mit allen Spalten einer Tabelle in der gespeicherten Reihenfolge: SELECT * FROM Mitarbeiter; Auflisten aller Datensätze mit allen Spalten der Tabelle in der abgespeicherten Reihenfolge TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 18 Prof. Dr.-Ing. R.-J. Scherer
Projektion SQL – SELECT: Einfache Grundform Auflisten (nur) bestimmter Spalten einer Tabelle: SELECT Name , Vorname FROM Mitarbeiter ; Es werden nur die Spalten Name und Vorname von der Tabelle Mitarbeiter in der Reihenfolge: Name, Vorname aufgelistet. Auflisten (nur) bestimmter Spalten in abweichender Reihenfolge: SELECT Vorname , Name, PersNr FROM Mitarbeiter ; Es werden nur die Spalten Vorname, Name und PersNr in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 19 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Beispiel Es können nicht nur Spalten, sondern auch beliebige Spaltenausdrücke angegeben werden: SELECT Name , Vorname, 12 * Gehalt AS Jahresgehalt FROM Mitarbeiter ; oder: SELECT Name , Vorname, 12 * Gehalt FROM Mitarbeiter ; Es werden die 3 Spalten: Name, Vorname und Jahresgehalt ausgegeben. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 20 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Beispiel Attribute (Spalten) können im Rahmen syntaktisch korrekter Ausdrücke beliebig miteinander in Verbindung gebracht werden. PersNr Name Vorname Gehalt Zuwdg Sonderz. 0120 Ahrend Jens 6000 5000 2001 0130 Berger Peter 6800 5500 1980 0135 Müller Paul 5800 4800 2200 ... ... ... ... ... ... SELECT Name , Vorname, (12 * Gehalt + Zuwdg * 6 - Sonderz) AS Jahresgehalt FROM Mitarbeiter ; Es werden die 3 Spalten: Name, Vorname und Jahresgehalt ausgegeben. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 21 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Einfache Grundform Auflisten von Spalten mehrerer Tabellen: SELECT * FROM Bauleiter, Baustellen ; oder: SELECT Bauleiter.* , Baustellen.* FROM Bauleiter, Baustellen ; * = Es wird das Kreuzprodukt aller Spalten der beiden Tabellen ausgegeben, d. h. alle möglichen Kombinationen aller Spalten der 1. Tabelle mit allen Spalten der 2. Tabelle – vgl. Kartesisches Produkt. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 22 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: WHERE-Klausel Restriktion Auflisten (nur) bestimmter Datensätze in Abhängigkeit von einer Bedingung: SELECT * FROM Mitarbeiter WHERE LOHN
SQL – SELECT: WHERE-Klausel Als Relation können verwendet werden: Vergleichsoperatoren: Kleiner < Kleiner gleich Größer geich >= Weitere Operatoren: ungleich Intervalloperator [NOT] BETWEEN…AND Enthaltenoperator [NOT] IN Auswahloperatoren ALL, ANY, SOME Ähnlichkeitsoperator [NOT] LIKE Existenzoperator EXISTS Eindeutigkeitsoperator UNIQUE Nulloperator IS [NOT] NULL TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 24 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: ORDER BY Sortieren der aufzulistenden Daten Die Sortierung erfolgt (automatisch) je nach Datentyp: alphabetisch bzw. chronologisch z. B. bei Spalten vom Typ CHAR, CHARACTER usw.: alphabetisch bei Spalten vom Typ INTEGER, NUMERIC usw.: chronologisch Mit ASC (ascending) bzw. DESC (descending), kann festgelegt werden, ob aufwärts oder abwärts sortiert werden soll. Wenn nichts angegeben wird, wird automatisch in aufsteigender Folge sortiert. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 25 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: ORDER BY Auflisten von Datensätzen, sortiert (in aufsteigender Folge): SELECT * FROM Mitarbeiter ORDER BY PersNr ; Es werden alle Datensätze, geordnet nach Personalnummern, (automatisch) in aufsteigender chronologischer Folge, aufgelistet, falls die Spalte PersNr mit einem numerischen Typ vereinbart wurde. SELECT * FROM Mitarbeiter ORDER BY Name, Vorname ; Es werden alle Datensätze, geordnet nach Namen, (automatisch) in aufsteigender alphabetischer Folge aufgelistet, wenn die Spalte Name z. B. mit dem Typ CHARACTER vereinbart wurde. Bei gleichen Namen wird zusätzlich nach Vornamen sortiert. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 26 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: ORDER BY Auflisten von Datensätzen, sortiert in absteigender Folge: SELECT * FROM Mitarbeiter ORDER BY Name DESC, Vorname DESC ; Es werden alle Datensätze, geordnet nach Namen in absteigender Alphabetischer Folge, bei gleichen Namen nach Vornamen, hier ebenfalls in absteigender alphabetischer Folge aufgelistet. Würde hier nach Vorname nicht nochmals DESC stehen, würden die Vornamen (automatisch) in aufsteigender Folge sortiert. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 27 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: ORDER BY Auflisten von Datensätzen, sortiert in auf- bzw. absteigender Folge: SELECT Vorname, Name, PersNr FROM Mitarbeiter WHERE Name = ‘Berger‘ ORDER BY Name DESC, Vorname ; Es werden die Spalten Vorname, Name, PersNr in der hier angegebenen (nicht in der abgespeicherten) Reihenfolge für alle Datensätze aufgelistet, bei denen die Spalte Name=‘Berger‘ ist, geordnet nach Namen in absteigender alphabetischer Folge und Vornamen in aufsteigender alphabetischer Folge. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 28 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: WHERE, ORDER BY Anmerkung: Die gespeicherten Daten bleiben bei der Auswahl durch WHERE oder Umordnung durch ORDER BY unverändert gespeichert. Die Auswahl- und Ordnungskriterien beziehen sich lediglich auf das Auflisten der Daten. Allgemein: Ein SELECT-Befehl (Abfragebefehl) ändert nie etwas in der Datenbank. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 29 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Statistikfunktionen AVG Average Durchschnittswert, ermittelt über alle Zeilen COUNT Count Anzahl aller Zeilen MAX Maximum Maximalwert aller Zeilen MIN Minimum Minimalwert aller Zeilen SUM Sum Summenwert, summiert über alle Zeilen Durchschnittswert aller Zeilen einer Spalte: SELECT AVG (Gehalt) FROM Bauleiter ; Anzahl aller Zeilen innerhalb einer Tabelle: SELECT COUNT ( * ) AS Bauleiteranzahl FROM Bauleiter ; Es wird die Anzahl der in der Tabelle gespeicherten Bauleiter als Bauleiteranzahl ausgegeben. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 30 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Statistikfunktionen SELECT COUNT ( Bemerkung ) FROM Bauleiter ; Es werden nur die Eintragungen in der Spalte „Bemerkung“ gezählt, die nicht NULL sind. Anzahl aller Zeilen innerhalb einer Tabelle: SELECT COUNT ( DISTINCT Name ) FROM Bauleiter ; Es werden nur die unterschiedlichen Einträge in der Spalte „Name“ gezählt. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 31 Prof. Dr.-Ing. R.-J. Scherer
SQL – SELECT: Statistikfunktionen Minimum aller Zeilen einer Spalte: SELECT MIN (Gehalt) FROM Bauleiter WHERE Gehalt > 5000 ; Es wird das Minimum der Spalte „Gehalt“ aus allen Werten die größer als 5000 sind in der Tabelle Bauleiter ermittelt. Aufsummieren von Zeilen innerhalb einer Tabelle: SELECT SUM (12 * Gehalt + Zuwdg * 6 - Sonderz) AS Einkommen FROM Mitarbeiter ; Es wird das Einkommen aller Mitarbeiter aufsummiert. TUD, Institut f. Bauinformatik 1. VO Informationsmanagement: SQL Folie 32 Prof. Dr.-Ing. R.-J. Scherer
Sie können auch lesen