Kapitel 3: Datenbanksysteme

Ähnliche Dokumente
Kapitel 3: Datenbanksysteme

Kapitel 5: Sortieren, Gruppieren und Views in SQL

Kapitel 5: Sortieren, Gruppieren und Views in SQL

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

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

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Informatik 12 Datenbanken SQL-Einführung

Vorlesung Datenbankmanagementsysteme

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

7. Übung - Datenbanken

Sichten II. Definition einer Sicht. Sichten. Drei-Ebenen-Schema-Architektur. Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank

Views in SQL. 2 Anlegen und Verwenden von Views 2

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

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

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Unterabfragen (Subqueries)

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

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Bibliografische Informationen digitalisiert durch

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

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

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

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

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Labor 3 - Datenbank mit MySQL

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

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

Professionelle Seminare im Bereich MS-Office

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln

IV. Datenbankmanagement

Abfragen: Grundbausteine

MySQL: Einfaches Rechnen.

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

SQL. Abfragesprache Datenmanipulation - DML

Sructred Query Language

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL structured query language

SQL Intensivpraktikum SS 2008

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

SQL: statische Integrität

Aufgabensammlung SQL SW4 1. Einfache Anfragen

105.3 SQL-Datenverwaltung

Berechnungen in Access Teil I

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

EINFACHES HAUSHALT- KASSABUCH

Vorlesung Dokumentation und Datenbanken Klausur

Erstellen einer Datenbank. Datenbankabfragen

Zeichen bei Zahlen entschlüsseln

Abfrage-Befehle in MySQL -diverse Funktionen -

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Kapitel 3: Datenbanksysteme

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Praktikum Datenbanken. 1. Erstellen Sie eine Abfrage, die die gesamte Tabelle PC ausgibt

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

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

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

5.3 Datenänderung/-zugriff mit SQL (DML)

SQL Performance - Tips Do's & Don'ts

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

Fachhochschule Deggendorf Platzziffer:...

Abfragen (Queries, Subqueries)

Null-Werte in Relationalen Datenbanken

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

MIN oder MAX Bildung per B*Tree Index Hint

Aufgabe 1: [Logische Modellierung]

Beispiel 1: Filmdatenbank

Übersichtlichkeit im Dokumentenmanagement

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

SQL als Zugriffssprache

Klausur zur Vorlesung Datenbanksysteme I

Übersicht der wichtigsten MySQL-Befehle

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Summenbildung in Bauteiltabellen mit If Then Abfrage

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Transkript:

LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung: Prof. Dr. Christian Böhm Übungen: Sebastian Goebl, Dr. Bianca Wackersreuther Skript Christian Böhm http://www.dbs.ifi.lmu.de/cms/ Einführung_in_die_Informatik_Systeme_und_Anwendungen

Überblick 3.1 Einleitung 3.2 Das Relationale Modell 3.3 Die Relationale Algebra 3.5 Das E/R-Modell 3.6 Normalformen 2

Bisher haben wir die Umsetzung der Operatoren der relationalen Algebra in SQL kennen gelernt: SELECT Attribute FROM Relationen WHERE Bedingung sowie die Mengenoperationen (UNION, EXCEPT,...) In diesem Kapitel lernen wir Erweiterungen von SQL kennen, die effektives Arbeiten ermöglichen, u.a. Aggregationen Sortieren und Gruppieren von Tupeln Sichten Darüberhinaus gibt es weitere Konstrukte, die wir im Rahmen dieser Vorlesung nicht genauer vertiefen werden 3

Subqueries An jeder Stelle in der select- und where-klausel, an der ein konstanter Wert stehen kann, kann auch eine Subquery (select...from...where...) stehen. Diese Art heißt auch direkte Subquery Einschränkungen: Subquery darf nur ein Attribut ermitteln (Projektion) Subquery darf nur ein Tupel ermitteln (Selektion) Beispiel: Dollarkurs aus Kurstabelle select Preis, Preis * ( select Kurs from Devisen where DName = US$ ) as USPreis from Waren where... 4

Subquery mit IN Beispiel Gegeben sind die Tabellen MagicNumbers (Name: String, Wert: Int) Primzahlen (Zahl: Int) Anfrage: Alle MagicNumbers, die Primzahlen sind select * from MagicNumbers where Wert in ( select Zahl from Primzahlen ) Anfrage: Alle MagicNumbers, die nicht prim sind select * from MagicNumbers where Wert not in ( select Zahl from Primzahlen ) 5

Subquery mit IN (cont.) Nach dem Ausdruck A i [not] in... kann stehen: Explizite Aufzählung von Werten: A i in (2,3,5,7,11,13) Eine Subquery: A i in (select wert from Primzahlen where wert<=13) Auswertung: Erst Subquery auswerten In explizite Form (2,3,5,7,11,13) umschreiben und einsetzen Zuletzt Hauptquery auswerten 6

Sortieren In SQL mit ORDER BY A 1, A 2,... Bei mehreren Attributen: Lexikographisch A B order by A, B A B order by B, A A B 1 1 3 1 2 2 4 1 3 3 1 1 2 2 3 1 3 3 4 1 1 1 3 1 4 1 2 2 3 3 Steht am Schluss der Anfrage Nach Attribut kann man ASC für aufsteigend (Default) oder DESC für absteigend angeben Nur Attribute der SELECT-Klausel verwendbar 7

Beispiel Gegeben: MagicNumbers (Name: String, Wert: Int) Primzahlen (Zahl: Int) Anfrage: Alle MagicNumbers, die prim sind, sortiert nach dem Wert beginnend mit größtem Nicht möglich: select * from MagicNumbers where Wert in (select Zahl from Primzahlen) order by Wert desc select Name from MagicNumbers order by Wert 8

Aggregation Berechnet Eigenschaften ganzer Tupel-Mengen Arbeitet also Tupel-übergreifend Aggregatfunktionen in SQL: count Anzahl der Tupel bzw. Werte sum Summe der Werte einer Spalte avg Durchschnitt der Werte einer Spalte max größter vorkommender Wert der Spalte min kleinster vorkommender Wert Aggregate können sich erstrecken: auf das gesamte Anfrageergebnis auf einzelne Teilgruppen von Tupeln 9

Aggregatfunktionen stehen in der Select-Klausel Beispiel: Gesamtzahl und Durchschnitt der Einwohnerzahl aller Länder, die mit B beginnen: select sum (Einw), avg (Einw) from länder where LName like B% Ergebnis ist immer ein einzelnes Tupel: Keine Mischung aggregierte/nicht aggregierte Attribute 10

NULL-Werte werden ignoriert (auch bei count) Eine Duplikatelimination kann erzwungen werden count (distinct KName) zählt verschiedene Kunden count (all KName) zählt alle Einträge (außer NULL) count (KName) ist identisch mit count (all KName) count (*) zählt die Tupel des Anfrageergebnisses (macht nur bei NULL-Werten einen Unterschied) Beispiel: Produkt (PName, Preis,...) Alle Produkte, mit unterdurchschnittlichem Preis: select * from Produkt where Preis < (select avg (Preis) from Produkt) 11

Gruppierung Aufteilung der Ergebnis-Tupel in Gruppen Ziel: Aggregationen Beispiel: Gesamtgehalt und Anzahl Mitarbeiter pro Abteilung Mitarbeiter Aggregationen: PNr Name Vorname Abteilung Gehalt Σ Gehalt COUNT 001 Huber Erwin 01 2000 002 Mayer Hugo 01 2500 6300 3 003 Müller Anton 01 1800 004 Schulz Egon 02 2500 005 Bauer Gustav 02 1700 4200 2 Beachte: So in SQL nicht möglich! Anfrage-Ergebnis soll wieder eine Relation sein 12

Mitarbeiter PNr Name Vorname Abteilung Gehalt 001 Huber Erwin 01 2000 002 Mayer Hugo 01 2500 003 Müller Anton 01 1800 004 Schulz Egon 02 2500 005 Bauer Gustav 02 1700 In SQL: select Abteilung, sum (Gehalt), count (*) from Mitarbeiter group by Abteilung Abteilung sum (Gehalt) count (*) 01 6300 3 02 4200 2 13

Syntax in SQL: select... from... [where...] [group by [having...]] A 1, A 2,... [order by...] Wegen Relationen-Eigenschaft des Ergebnisses Einschränkung der select-klausel. Erlaubt sind: Attribute aus der Gruppierungsklausel (incl. arithmetischer Ausdrücke etc.) Aggregationsfunktionen auch über andere Attribute, count (*) in der Regel kein select * from... 14

Beispiel: Mitarbeiter PNr Name Vorname Abteilung Gehalt 001 Huber Erwin 01 2000 002 Mayer Hugo 01 2500 003 Müller Anton 01 1800 004 Schulz Egon 02 2500 005 Bauer Gustav 02 1700 select PNr, Abteilung, sum (Gehalt) from Mitarbeiter group by Abteilung nicht möglich!!! PNr Abteilung Gehalt 001,002,003 01 6300 004,005 02 4200 15

Die Having-Klausel Motivation: Ermittle das Gesamt-Einkommen in jeder Abteilung, die mindestens 5 Mitarbeiter hat In SQL nicht möglich: select ANr, sum (Gehalt) from Mitarbeiter where count (*) >= 5 GEHT NICHT! group by ANr STATTDESSEN: having count (*) >= 5 Grund: Gruppierung wird erst nach den algebraischen Operationen ausgeführt 16

Auswertung der Gruppierung an folgendem Beispiel: select A, sum(c) from... where... group by A having sum (C) < 10 and max (B) = 4 1. Schritt: 2. Schritt: 3. Schritt: 4. Schritt: from/where Gruppenbildung Aggregation having (= Selektion) A B C A B C A sum(c) max(b) A sum(c) max(b) 1 3 4 1 4 5 1 3 4 4 5 1 9 4 2 4 3 1 9 4 2 3 4 2 3 4 3 12 6 3 4 5 3 6 7 3 4 5 6 7 5. Schritt: Projektion A sum(c) 1 9 17

Zur Erinnerung: Drei-Ebenen-Architektur zur Realisierung von physischer und logischer Datenunabhängigkeit (nach ANSI/SPARC) Externe Ebene: Gesamt-Datenbestand ist angepasst, so dass jede Anwendungsgruppe nur die Daten sieht, die sie... sehen will (Übersichtlichkeit) sehen soll (Datenschutz) Logische Datenunabhängigkeit In SQL: Realisiert mit dem Konzept der Sicht (View) 18

Was ist eine Sicht (View)? Virtuelle Relation Was bedeutet virtuell? Die View sieht für den Benutzer aus wie eine Relation: select... from View 1, Relation 2,... where... mit Einschränkung auch: insert, delete und update Aber die Relation ist nicht real existent / gespeichert; Inhalt ergibt sich durch Berechnung aus anderen Relationen Besteht aus zwei Teilen: Relationenschema für die View (nur rudimentär) Berechnungsvorschrift, die den Inhalt festlegt: SQL-Anfrage mit select... from... where 19

Viewdefinition in SQL Das folgende DDL-Kommando erzeugt eine View create [or replace] view VName [(A 1, A 2,...)] as select... relativ unüblich Beispiel: Eine virtuelle Relation Buchhalter, nur mit den Mitarbeitern der Buchhaltungsabteilung: create view Buchhalter as select PNr,Name,Gehalt from Mitarbeiter where ANr=01 Die View Buchhalter wird erzeugt: Mitarbeiter PNr Name Vorname ANr Gehalt 001 Huber Erwin 01 2000 002 Mayer Hugo 01 2500 003 Müller Anton 01 1800 004 Schulz Egon 02 2500 005 Bauer Gustav 02 1700 Buchhalter PNr Name Gehalt 001 Huber 2000 002 Mayer 2500 003 Müller 1800 20

Konsequenzen Automatisch sind in dieser View alle Tupel der Basisrelation, die die Selektionsbedingung erfüllen An diese können beliebige Anfragen gestellt werden, auch in Kombination mit anderen Tabellen (Join) etc: select * from Buchhalter where Name like B% In Wirklichkeit wird lediglich die View-Definition in die Anfrage eingesetzt und dann ausgewertet: select * from Buchhalter where Name like B% Buchhalter: select PNr,Name,Gehalt from Mitarbeiter where ANr=01 ergibt: select * from ( select PNr, Name, Gehalt from Mitarbeiter where ANr=01 ) where Name like B% 21

Bei Updates in der Basisrelation (Mitarbeiter) ändert sich auch die virtuelle Relation (Buchhalter) Umgekehrt können (mit Einschränkungen) auch Änderungen an der View durchgeführt werden, die sich dann auf die Basisrelation auswirken (Stichwort: Effekt-Konformität, wird hier nicht vertieft) Eine View kann selbst wieder Basisrelation einer neuen View sein (View-Hierarchie) Views sind ein wichtiges Strukturierungsmittel für Anfragen und die gesamte Datenbank Löschen einer View: drop view VName 22

Folgende Konstrukte sind in Views erlaubt: Selektion und Projektion (incl. Umbenennung von Attributen, Arithmetik) Kreuzprodukt und Join Vereinigung, Differenz, Schnitt Gruppierung und Aggregation Die verschiedenen Arten von Subqueries Nicht erlaubt: Sortieren 23

Materialisierte View Eine sog. materialisierte View ist keine virtuelle Relation sondern eine real gespeicherte Der Inhalt der Relation wurde aber durch eine Anfrage an andere Relationen und Views ermittelt In SQL einfach erreichbar durch Anlage einer Tabelle MV und Einfügen der Tupel mit: insert into MV (select... from... where) Bei Änderungen an den Basisrelationen keine automatische Änderung in MV und umgekehrt DBS bieten oft auch spezielle Konstrukte zur Aktualisierung (Snapshot, Trigger) 24