Technische Universität München Übung zur Einführung in die Informatik für Hörer anderer Fachrichtungen im Sommersemester 2010 Sitzung 10: SQL (Fortsetzung) Jan Herrmann Lehrstuhl für Angewandte Informatik / Kooperative Systeme Folien angelehnt an Prof. A. Kemper (http://www3.in.tum.de/teaching/ws0910/) Technische Universität München Beispiele zur Relationalen Algebra/SQL 1. 2. 3. 4. 5. 6. Welche Professoren kennt Carnap? Wer ließt mindestens 2 Vorlesungen? Wer hört mindestens eine Vorlesung? Wer hat alle geprüften Vorlesungen auch gehört? Welche Studenten hören Mäeutik oder Ethik Welche Studenten hören Mäeutik und Ethik 2 Technische Universität München SQL • standardisierte - Datendefinitions Sprache (DDL) - create table studenten (MatrNr INT, ….) - Datenmanipulations Sprache (DML) - update Studenten set Semester = Semester +1 - Anfrage (Query)-Sprache - select * from Studenten where … • derzeit aktueller Standard ist SQL 99 und SQL3 (2003) – objektrelationale Erweiterung 3 Technische Universität München Datendefinition in SQL Datentypen • char (n), varchar (n) • integer • blob für sehr große binäre Daten • clob für sehr große String-Attribute • date für Datumsangaben • xml für XML-Dokumente 4 Technische Universität München Create und Alter Befehl Create create table Professoren (PersNr integer not null, Name varchar (30) not null, Rang character (2), Raum integer); Alter •ALTER TABLE Proessoren RENAME TO Professoren; •ALTER TABLE Professoren ADD Familienstatus varchar(50); •ALTER TABLE Professoren DROP COLUMN Wohnort; •… 5 Technische Universität München Veränderung am Datenbestand Einfügen von Tupeln: insert into hören select s.MatrNr, v.VorlNr from Studenten s, Vorlesungen v; insert into Studenten (MatrNr, Name) values (28121, `Archimedes‘); 6 Technische Universität München MatrNr Studenten Name Semester 29120 29555 28121 Theophrastos Feuerbach Archimedes 2 2 - Null-Wert 7 Technische Universität München Veränderungen am Datenbestand Löschen von Tupeln delete from Studenten where Semester > 13; Verändern von Tupeln update Studenten set Semester = Semester + 1; 8 Technische Universität München Einfache SQL-Anfrage select PersNr, Name from Professoren where Rang= ´C4´; PersNr 2125 2126 Name Sokrates Russel 2136 2137 Curie Kant 9 Technische Universität München Duplikateliminierung select distinct Rang from Professoren Rang C3 C4 10 Technische Universität München Sortierung von SQL-Anfragen select p.PersNr, p.Name, p.Rang PersNr Name Rang 2136 Curie C4 2137 Kant C4 2126 Russel C4 2125 Sokrates C4 2134 Augustinus C3 2127 Kopernikus C3 2133 Popper C3 from Professoren p order by p.Rang desc, p.Name asc; 11 Technische Universität München Übersetzung in die relationale Algebra Allgemein hat eine (ungeschachtelte) SQLAnfrage die Form: Übersetzung in die relationale Algebra: Π A1, ..., An(σP (R1 x ... x Rk )) Π A1, ..., An select A1, ..., An σP from R1, ..., Rk x where P; x x R1 Rk R3 R2 12 Technische Universität München Anfragen über mehrere Relationen Welche Studenten hören welche Vorlesungen? select Name, Titel from Studenten, hören, Vorlesungen where Studenten.MatrNr = hören.MatrNr and hören.VorlNr = Vorlesungen.VorlNr; Alternativ: (empfohlen --> Einsatz von Tupelvariablen) select s.Name, v.Titel from Studenten s, hören h, Vorlesungen v where s. MatrNr = h. MatrNr and h.VorlNr = v.VorlNr 13 Technische Universität München Mengenoperationen und geschachtelte Anfragen Mengenoperationen union, intersect, minus ( select Name from Assistenten ) union ( select Name from Professoren); Schemagleichheit! 14