WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Vorlesung #4 SQL (Teil 1) WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 „Fahrplan“ Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE ...) SQL DML (INSERT, UPDATE, DELETE) SQL Abfragen © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 2 Geschichte von SQL WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Anfang 70er Jahre „System R“ von IBM mit der Sprache „SEQUEL“ – Structured English Query Language, später aus patentrechtlichen Gründen in SQL unbenannt Parallel entwickelte man QUEL als Anfragesprache für das INGRES-System SQL setzte sich durch als Industrie-Standard (wegen „Ignorranz“ der INGRES-Entwickler) 1986: SQL-86 1. SQL Norm von ANSI Comitee 1992: SQL-92 bzw. SQL-2 1999: SQL-99 bzw. SQL-3 (objektrelationale Erweiterungen) © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 3 Datentypen in SQL WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Atomare Datentypen als Attribut-Domänen Zahlen numeric(p,s) – number(p,s) integer float Zeichenketten character(n) – char(n) char varying (n) – varchar(n), varchar2(n) Datumstyp date Weitere: BLOB (Binary Large Objects), RAW für große Binärdatein, CLOB (Character LOB), benutzerdefinierte Typen als objektrelationale Erweiterung ... © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 4 Einfache Datendefinition WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 SQL DDL (Data Definition Language) CREATE TABLE Professoren (PersNr INTEGER, Name CHARACTER VARYING(30), Rang CHARACTER(2)); CREATE TABLE professoren (persnr NUMBER(*,0), name VARCHAR2(30), rang CHAR(2)); © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 5 Schemaveränderungen WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 SQL DDL (Data Definition Language) Hinzufügen eines Attributs bzw. einer Spalte ALTER TABLE Professoren ADD Raum INTEGER; Löschen eines Attributs bzw. einer Spalte ALTER TABLE Professoren DROP COLUMN Raum; © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 6 Datenmanipulation (1) WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 SQL DML (Data Manipultaion Language) Einfügen von Tupeln insert into hören select MatrNr, VorlNr from Studenten, Vorlesungen where Titel= `Logik‘ ; insert into Studenten (MatrNr, Name) values (28121, `Archimedes‘); © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 7 Datenmanipulation (2) WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 SQL DML (Data Manipultaion Language) Löschen von Tupeln delete Studenten where Semester > 13; Verändern von Tupeln update Studenten set Semester= Semester + 1; © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 8 Einfache SQL Anfragen select PersNr, Name from Professoren where Rang= ´C4´; WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 PersNr Name 2125 Sokrates 2126 Russel 2136 Curie 2137 Kant © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 9 Einfache SQL Anfragen (2) WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Sortierung PersNr Name Rang 2136 Curie C4 from Professoren 2137 Kant C4 order by Rang desc, Name asc; 2126 Russel C4 2125 Sokrates C4 select PersNr, Name, Rang 2134 Augustinus C3 desc – descending 2127 Kopernikus C3 asc – ascending 2133 © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) Popper C3 10 Einfache SQL Anfragen (3) WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Duplikateliminierung select distinct Rang from Professoren; © Bojan Milijaš, 24.10.2013 Rang C3 C4 Vorlesung #4 - SQL (Teil 1) 11 Anfragen über mehrere Relationen WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Welcher Professor liest "Mäeutik"? select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenVon and Titel = `Mäeutik‘ ; Name, Titel ( PersNr gelesenVon Titel ' Mäeutik' (Professor en Vorlesunge n)) © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 12 WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Anfragen über mehrere Relationen (2) Professoren PersNr Name Rang Raum 2125 Sokrates C4 226 2126 Russel C4 232 2137 Kant C4 7 Vorlesungen VorlNr Titel SWS gelesenVon 5001 Grundzüge 4 2137 5041 Ethik 4 2125 5049 Mäeutik 4630 Die 3 Kritiken 2 2125 4 2137 Verknüpfung © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 13 WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 14 WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 3 Wege Join 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: select s.Name, v.Titel from Studenten s, hören h, Vorlesungen v where s. MatrNr = h. MatrNr and h.VorlNr = v.VorlNr © Bojan Milijaš, 24.10.2013 Vorlesung #4 - SQL (Teil 1) 15 WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Vorlesung #4 Ende