Termin 12: Datenbanksysteme (2) - Einführung in SQL



Ähnliche Dokumente
Datenbanksysteme (2) Einführung in SQL

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Datenbanksysteme SS 2007

Fortsetzung: Projektion Selektion. NULL Werte

DATENBANKSYSTEME: SQL

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Wiederholung VU Datenmodellierung

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Übung 3. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

Entity Relationship Modell

Wiederholung VU Datenmodellierung

Vorlesung Datenbanksysteme vom

Architektur eines DBMS Logische Optimierung

Wiederholung: Relationale Algebra

Referentielle Integrität

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

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

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

Referentielle Integrität

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator

Informatik 12 Datenbanken SQL-Einführung

Relationale Kalküle. Grundlagen der Datenbanken. Dr. Jérôme Kunegis Wintersemester 2013/14

Kapitel 7 Dr. Jérôme Kunegis. Logische Kalküle. WeST Web Science & Technologies

Vorlesung Datenbankmanagementsysteme

Datenintegrität. Kapitel 5 1

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

Datenintegrität. Bisherige Integritätsbedingungen

Datenbanksysteme 2013

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

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

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

Kapitel 8: Datenintegrität

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

IV. Datenbankmanagement

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

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

Datenbanksysteme Vorlesung vom noch Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

SQL structured query language

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Sructred Query Language

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

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

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme (1)

Erstellen einer Datenbank. Datenbankabfragen

Das relationale Modell

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

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Bibliografische Informationen digitalisiert durch

Datenintegrität. Kapitel 5 1

Abfragen (Queries, Subqueries)

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

Relationale Abfragesprachen

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

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

Übersicht der wichtigsten MySQL-Befehle

Abfragen: Grundbausteine

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

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

ACCESS SQL ACCESS SQL

SQL (Structured Query Language) Schemata Datentypen

Labor 3 - Datenbank mit MySQL

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Diskussion: Personal (1)

Transkript:

Termin 12: Datenbanksysteme (2) - Einführung in SQL Grundlagen der Informatik Wintersemester 2006/07 Prof. Bernhard Jung Übersicht 1. Einführung SQL 2. Datenbankanfragen mit SQL (select from where) 3. Erzeugen, Ändern und Löschen von Tabelleninhalten mit SQL 4. Erzeugen, Ändern und Löschen von Tabellen mit SQL (DDL) Hauptlernziele Die Umsetzung der Relationenalgebra in SQL verstehen Fähigkeit, einfachere Datenbankabfragen u. andere Datenbankoperationen in SQL zu formulieren Literatur Gumm & Sommer. Einführung in die Informatik. Oldenbourg. 2004. Lehrhilfe SQL. Institut für Informatik, TU Bergakademie Freiberg. - erhältlich im Institut für Informatik, Fr. Schüttauf, für 1,00 1

Datenbanksysteme - Statistiken (1) Markt für Datenbanksysteme (nach www.idc.com) 2003: $13.6 Milliarden 2008: ca $20 Milliarden Linux / Open Source Databanken 2003: $299 Millionen Markt-Anteile (2004; IDC / Gartner Dataquest) Oracle: 41.3% / 33.9% IBM: 30.6% / 34.2 % Microsoft: 13.4% / 20.0% Datenbanksysteme Statistiken (2) 2

Datenbanksysteme Statistiken (3) from http://www.informationweek.com/story/showarticle.jhtml?articleid=23901139 Wdh - Beispielrelationen 1 Assistent: Persnr Name Fachgebiet Boss 3002 Platon Ideenlehre 2125 3003 Aristoteles Syllogistik 2125 3004 Wittgenstein Sprachtheorie 2126 3005 Rhetikus Planetenbewegung 2127 3006 Newton Keplersche Gesetze 2127 3007 Spinoza Gott und Natur 2134 Student: Professor: Matrnr Name Sem Persnr Name Rang Raum 24002 Xenokrates 18 2125 Sokrates C4 226 25403 Jonas 12 2126 Russel C4 232 26120 Fichte 10 2127 Kopernikus C3 310 26830 Aristoxenos 8 2133 Popper C3 52 27550 Schopenhauer 6 2134 Augustinus C3 309 28106 Carnap 3 2136 Curie C4 36 29120 Theophrastos 2 2137 Kant C4 7 29555 Feuerbach 2 3

Wdh - Beispielrelationen 2 Vorlesung: voraussetzen: hören: Vorlnr Titel SWS Leser Vorgänger Nachfolger Matrnr Vorlnr 5001 Grundzüge 4 2137 5041 Ethik 4 2125 5043 Erkenntnistheorie 3 2126 5049 Gewäsch 2 2125 4052 Logik 4 2125 5052 Wissenschaftstheorie 3 2126 5216 Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 4630 Die 3 Kritiken 4 2137 prüfen: 5001 5041 5001 5043 5001 5049 5041 5216 5043 5052 5041 5052 5052 5259 26120 5001 27550 5001 27550 4052 28106 5041 28106 5052 28106 5216 28106 5259 29120 5001 29120 5041 29120 5049 29555 5022 25403 5022 29555 5001 Matrnr Vorlnr Persnr Note 28106 5001 2126 1 25403 5041 2125 2 27550 4630 2137 2 Was ist SQL? SQL = Structured Query Language SQL ist Standardsprache für relationale Datenbankmanagementsysteme (DBMS) SQL stellt Möglichkeiten bereit zur Definition der Struktur von Datenbanken (Datendefinitionssprache; DDL) Manipulation der Datenbankinhalte (Datenmanipulationssprache; DML) anfragen, einfügen, löschen, ändern von Datensätzen SQL ist eine deklarative Programmiersprache i.ggs. zu imperativen oder objekt-orientierten Programmiersprachen (wie Python, Java, C++, C#, ) SQL ist eine Implementierung der Relationenalgebra aber kleinere Unterschiede z.b. Ordnung der Tabellenzeilen in SQL z.b. Duplikate von Tabellenzeilen in SQL erlaubt Bekannte auf SQL basierende DBMS: Oracle, IBM DB2, Microsoft SQL Server, Access, Ingres, MySQL, 4

SQL Historie ca. 1975 SEQUEL, Vorläufer von SQL wird für das Projekt System R von IBM entwickelt. 1981 SQL gelangt mit SQL/Data Systems erstmals durch IBM auf den Markt. 1986 SQL1 wird von ANSI als Standard verabschiedet. 1987 SQL1 wird jetzt auch von ISO als Standard verabschiedet und 1989 nochmals überarbeitet. 1992 Der SQL2 bzw. SQL-92 Standard wird von der ISO verabschiedet. 1999 SQL3 bzw. SQL:1999 wird verabschiedet. 2003 SQL:2003 wird von der ISO als Nachfolger des SQL:1999 Standards verabschiedet. Relationale Datenbanksprache SQL Datenbanksprache (DL): - Datendefinitionssprache (DDL) - Datenmanipulationssprache (DML): - Änderungssprache - Anfragesprache Datenmanipulationssprache / Anfrage Standardanfrageschema: select... Projektion from... Relation / Produkt / Join where... Selektion / Differenz / Durchschnitt all / any / in / exists... Division / Quantifizierung group by... Aggregation union... Vereinigung order by... Sortierung 5

SQL Einfache Anfragen Einfache Anfragen: select Spalte(n) from Tabelle(n) where Bedingung; Anzeigen von Spalte(n) der Zeilen aus Tabelle(n), die einer Bedingung genügen Umfasst Projektion, Selektion und Join der Relationenalgebra! Anfragen über einer Tabelle: select * from Assistent; select Matrnr, Name, Sem from Student where Sem < 5; select distinct SWS from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; Spaltenauswahl Projektion in Relationenalgebra Spaltenname, Konstante ** distinct, all all SQL> select Boss from Assistent; BOSS --------- 2125 2125 2126 2127 2127 2134 Auswahl von Spalten, Konstanten Auswahl aller Spalten Duplikatebeseitigung SQL> select distinct Boss from Assistent; BOSS --------- 2125 2126 2127 2134 gleiches Ergebnis wie bei: select all Boss from Assistent; 6

Spaltenauswahl Spaltenname, Konstante ** distinct, all all Auswahl von Spalten, Konstanten Auswahl aller Spalten Duplikatebeseitigung SQL> select 'Guten Tag, ', Name from Assistent; 'GUTENTAG NAME ----------- ------------------------------ Guten Tag, Platon Guten Tag, Aristoteles Guten Tag, Wittgenstein Guten Tag, Rhetikus Guten Tag, Newton Guten Tag, Spinoza Zeilenauswahl Selektion in Relationenalgebra SQL: durch Formulierung von Bedingungen in WHERE-Klausel: Spaltenname, Konstante =, =,!=,!=, <>, <>, >, >, >=, >=, <, <, <= <= and, and, or, or, not not between...... and and like like...%..._... is is null, null, is is not not null null Angabe von Spalten und Konstanten Vergleichsoperator logische Verknüpfung Bereichsangabe Zeichenmuster Leerwert select Titel from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; 7

Zeilenauswahl - Beispiele SQL> select * from Vorlesung where Leser = 2125; VORLNR TITEL SWS LESER --------- ------------------------------- --------- --------- 5041 Ethik 4 2125 5049 Gewäsch 2 2125 4052 Logik 4 2125 SQL> select Titel from Vorlesung where Leser = 2125; TITEL --------------------------- Ethik Gewäsch Logik SQL> select Titel from Vorlesung where Leser = 2125 and not Titel = 'Ethik'; TITEL ------------------------------- Gewäsch Logik SQL Anfragen über mehrere Tabellen Join in Relationenalgebra in Beispielen jeweils Equi-Join (d.h. Gleichheit von Attributwerten): select Name, Titel from Professor, Vorlesung where Persnr = Leser and Titel = 'Logik'; Welche Professoren lesen 'Logik'? Join select Name, Titel from Student, hören, Vorlesung where Student.Matrnr = hören.matrnr and hören.vorlnr = Vorlesung.Vorlnr; select s.name, v.titel from Student s, hören h, Vorlesung v where s.matrnr = h.matrnr and h.vorlnr = v.vorlnr; Welche Studenten hören welche Vorlesung? Welche Studenten hören welche Vorlesung? (alternative Syntax) 8

Ergebnisse der Anfragen der vorangehenden Folie NAME TITEL ------------------------------ ------------------------ Sokrates Logik NAME TITEL ------------------------------ ------------------------------- Jonas Glaube und Wissen Fichte Grundzüge Schopenhauer Logik Schopenhauer Grundzüge Carnap Ethik Carnap Wissenschaftstheorie Carnap Der Wiener Kreis Theophrastos Grundzüge Theophrastos Ethik Theophrastos Gewäsch Feuerbach Grundzüge Feuerbach Glaube und Wissen Geschachtelte Anfragen select * from Assistent where Boss = (select Persnr from Professor where Name = 'Sokrates'); Wer sind die Assistenten von Sokrates? Ergebnistabelle PERSNR NAME FACHGEBIET BOSS --------- -------------------- ------------------------------ --------- 3002 Platon Ideenlehre 2125 3003 Aristoteles Syllogistik 2125 9

Geschachtelte Anfragen select * from prüfen where Note < (select avg (Note) from prüfen); Welche Prüfungen haben mit einer überdurchschnittlichen Note geendet? Ergebnistabelle MATRNR VORLNR PERSNR NOTE --------- --------- --------- --------- 28106 5001 2126 1 Mengenoperationen Voraussetzung: Gleichförmigkeit der verknüpften Tabellen gleiche Anzahl und gleicher Typ der Attribute union union (intersect, except) Vereinigung von Tabellen (Durchschnitt, Differenz) (select Name from Assistent) union (select Name from Professor); Namen von Assistenten und Professoren 10

Mengenoperationen Welche Vorlesungen werden von Studenten gehört? (select Vorlnr from Vorlesung) intersect (select Vorlnr from hören); Ergebnistabelle: VORLNR --------- 4052 5001 5022 5041 5049 5052 5259 Mengenoperationen Welche Vorlesungen werden von keinem Studenten gehört? oder: Für welche Vorlesungen sind keine Studierenden registriert? Nach SQL Standard (klappt nicht in Oracle 8): (select Vorlnr from Vorlesung) except (select Vorlnr from hören); In Oracle 8: select Vorlnr from Vorlesung where Vorlnr not in (select Vorlnr from hören); Ergebnistabelle: VORLNR --------- 5043 5216 4630 11

Quantifizierung all, all, any, any, some some in, in, not not in in exists, exists, not not exists exists für alle, für ein Element von, nicht Element von es existiert ein, es existiert kein Welche Studenten studieren am längsten? select Name from Student where Sem >= all (select Sem from Student); ( Xenokrates mit 18 Semestern) Quantifizierung Welche Professoren halten (dieses Semester) keine Vorlesung? select Name from Professor where not exists (select * from Vorlesung where Leser = Persnr); Sämtliche Informationen über Vorlesungen 5001 bzw 5041 select * from Vorlesung where Vorlnr in (5001, 5041); 12

Gruppierungsfunktion count, count, sum, sum, avg, avg, max, max, min min Ausführen von Operationen auf Tupelmengen Durchschnittliche Semesterzahl der Studenten select avg (Sem) from Student; Beste bzw. schlechteste Note in Kursen 5001 oder 5041 select min (Note), max (Note) from prüfen where Vorlnr = 5001 or Vorlnr = 5041; Anzahl der Tupel der Tabelle hören; d.h. Anzahl der registrierten Hörer für alle Vorlesungen select count (*) from hören; Gruppierung group groupby byspalte(n) Gruppierung der Zeilen der Ergebnistabelle Summe SWS pro Leser select Leser, sum (Sws) from Vorlesung group by Leser; Ergebnistabelle: LESER SUM(SWS) --------- --------- 2125 10 2126 8 2133 2 2134 2 2137 8 13

Gruppierung group groupby byspalte(n) having havingbedingung Gruppierung der Zeilen der Ergebnistabelle und Ausführung von Gruppierungsfunktionen Summe SWS pro Leser -aber nur für Leser, deren Veranstaltungen insgesamt einen Umfang von mindestens 6 SWS haben select Leser, sum (Sws) from Vorlesung group by Leser having sum (Sws) >= 6; Ergebnistabelle: LESER SUM(SWS) --------- --------- 2125 10 2126 8 2137 8 Gruppierung Pesrnr, Name, Summe SWS der C4-Professoren, die im Umfang von mindestens 8 SWS Vorlesungen geben select Leser, Name, sum (Sws) from Vorlesung, Professor where Leser = Persnr and Rang = 'C4' group by Leser, Name having sum(sws) >= 8; Ergebnistabelle: LESER NAME SUM(SWS) --------- ------------------------------ --------- 2125 Sokrates 10 2126 Russel 8 2137 Kant 8 14

Sortierung order by by Spalte(n) asc asc // desc Festlegen der Sortierreihenfolge der Ergebnistabelle (aufsteigend bzw. absteigend) Ausgabe der Studierendendatensätze, geordnet nach Matrikelnr select Name, Matrnr from Student order by Matrnr; Auflistung der Professoren, geordnet nach Rang (lexikalisch absteigend d.h. C4 vor C3), dann alphabetisch select Persnr, Name, Rang from Professor order by Rang desc, Name asc; Sortierung Ergebnisse der Anfragen auf voriger Folie select Name, Matrnr from Student order by Matrnr; select Persnr, Name, Rang from Professor order by Rang desc, Name asc; NAME MATRNR ------------------ --------- Xenokrates 24002 Jonas 25403 Fichte 26120 Aristoxenos 26830 Schopenhauer 27550 Carnap 28106 Theophrastos 29120 Feuerbach 29555 PERSNR NAME RA --------- ------------------- -- 2136 Curie C4 2137 Kant C4 2126 Russel C4 2125 Sokrates C4 2134 Augustinus C3 2127 Kopernikus C3 2133 Popper C3 15

Elementfunktion +, +, -, -,*, *,/,/,...... char_length, substring,,,...... current_time, current_date, +, +, -, -,*, *,...... arithmetische Funktion Zeichenkettenfunktion Datumsfunktion Um 1.0 verbesserte Noten für Kurs 4630 select Matrnr, Note - 1 from prüfen where Vorlnr = 4630; select Name, Rang '-Professur' from Professor; NAME RANG '-PROF ------------------------------ ------------ Sokrates C4-Professur Russel C4-Professur Kopernikus C3-Professur Popper C3-Professur Augustinus C3-Professur Curie C4-Professur Prof. B. Jung Kant C4-Professur Grundlagen der Informatik, WS 2006/07 Elementfunktion Ausgabe von Studentendaten mit Zeitpunkt des Zugriffs auf Datensätze select Matrnr, Sem, current_time from Student; MATRNR SEM CURRENT_T --------- --------- --------- 24002 18 00:34:50 25403 12 00:34:50 26120 10 00:34:50 26830 8 00:34:50 27550 6 00:34:50 28106 3 00:34:50 29120 2 00:34:50 29555 2 00:34:50 16

Datenmanipulationssprache / Änderung Standard-Änderungsoperationen: insert... Einfügen update... Ändern delete... Löschen Einfügen von Datensätzen insert insertinto intotabelle values valuestupel; Einfügen von Zeilen in eine existierende Tabelle insert insertinto intotabelle Anfrage; Beispiele: Einfügen neuer Datensätze insert into Professor values (2136, 'Einstein', 'C4', null); Werte für alle Spalten insert into Student (Matrnr, Name) values (25000, 'Goethe'); Werte für benannte Spalten (andere Spalten: Default-Werte) 17

Einfügen von Datensätzen Alle Studenten mit mehr als 15 Semestern Studienzeit zu Assistenten befördern insert into Assistent (Persnr, Name) select Matrnr, Name from Student where Sem > 15; Ändern von Datensätzen update update Tabelle Tabelle set setwerteänderung where wherebedingung Ändern von Zeilen in einer existierenden Tabelle Alle Vorlesungen auf 2 SWS setzen update Vorlesung set Sws = 2; Semesteranzahl von allen Studenten um 1 erhöhen update Student set Sem = Sem + 1; Prof. Russel zieht in Raum 213 ein update Professor set Raum = 213 where name = 'Russel'; Daten zur Vorlesung 5001 aktualisieren update Vorlesung set Titel = 'Grundlagen', Sws = 3, Leser = 2125 where Vorlnr = 5001; 18

Löschen von Datensätzen delete deletefrom fromtabelle where wherebedingung Löschen von Zeilen in einer existierenden Tabelle Alle Prüfungsdatensätze löschen delete from prüfen Datensatz zur Vorlesung 5001 löschen delete from Vorlesung where Vorlnr = 5001; Datensätze der Studenten über 15. Semester löschen delete from Student where Sem >= 15; Vorlesungen, die andere Vorlesungen voraussetzen, sollen ihrerseits keine Voraussetzung für weitere Vorlesungen sein delete from voraussetzen where Vorgänger in (select Nachfolger from voraussetzen); Datendefinitionssprache (DDL) Standarddefinitionsoperationen: Erzeugen (create), Ändern (alter), Löschen (drop) für: Tabelle (table), Sicht (view),... und Erteilung (grant) und Entzug (revoke) von Rechten Datentypen: char(n), varchar(n), number(p), number(p,s), date, long, blob,... Namen: 1. Zeichen Buchstabe, dann Buchstaben, Ziffern, _ oder $ 19

DDL: Erzeugen von Tabellen create createtable tabletabellen-name (Spalten-Name Typ, Typ, Spalten-Name Typ Typnot notnull, null, Spalten-Name Typ Typnot notnull null unique,...).) Definition einer Tabelle mit Spalten und Integritätsbedingungen Beispiele: create table Professor create table voraussetzen (persnr number (5) not null unique, (Vorgänger number (5), Name varchar (20) not null, Nachfolger number (5)); Rang char (2), Raum number (4)); Systemüberblick Server OS- Toolbox SQL- DDL Datenbank Datenbank "Maschine" "Maschine" SQL-DML Anwendungs- Anwendungs- Programm Programm B SQL- DML OS-Toolbox evtl. Netzwerk Datenbank Datenbank entwurf entwurf Anwendungs- Anwendungs- Programm Programm A Verwaltung Verwaltung Beispiele: Microsoft Access Oracle Ingres MySQL Klient OS-Toolbox evtl. Netzwerk Buchungs Buchungs -system -system Klient 20