Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #4 SQL (Teil 1)

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #4 SQL (Teil 1)"—  Präsentation transkript:

1 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #4 SQL (Teil 1)

2 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)2 Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE) SQL Abfragen Aggregation und Gruppierung Null-Werte, 3-wertige Logik

3 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)3 Geschichte von SQL 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)

4 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)4 Datentypen in SQL 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), benutzer- definierte Typen als objektrelationale Erweiterung...

5 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)5 Einfache Datendefinition SQL DDL (Data Definition Language) CREATE TABLE Professoren (PersNrINTEGER, Name CHARACTER VARYING(30), RangCHARACTER(2)); CREATE TABLE professoren (persnr NUMBER(*,0), name VARCHAR2(30), rang CHAR(2));

6 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)6 Schemaveränderungen 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;

7 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)7 Datenmanipulation (1) 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);

8 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)8 Datenmanipulation (2) SQL DML (Data Manipultaion Language) Löschen von Tupeln delete Studenten where Semester > 13; Verändern von Tupeln update Studenten set Semester= Semester + 1;

9 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)9 Einfache SQL Anfragen PersNrName 2125Sokrates 2126Russel 2136Curie 2137Kant selectPersNr, Name fromProfessoren whereRang= ´C4´;

10 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)10 Einfache SQL Anfragen (2) Sortierung select PersNr, Name, Rang fromProfessoren order by Rang desc, Name asc; desc – descending asc – ascending PersNrNameRang 2136CurieC4 2137KantC4 2126RusselC4 2125SokratesC4 2134AugustinusC3 2127KopernikusC3 2133PopperC3

11 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)11 Einfache SQL Anfragen (3) Duplikateliminierung select distinct Rang from Professoren; Rang C3 C4

12 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)12 Anfragen über mehrere Relationen Welcher Professor liest "Mäeutik"? select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenVon and Titel = `Mäeutik ;

13 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)13 Anfragen über mehrere Relationen (2) RaumRangNamePersNr 226 232 7 C4 Sokrates Russel Kant 2125 2126 2137 Professoren gelesenVonSWSTitelVorlNr 21374Grundzüge5001 21374Die 3 Kritiken4630 21252Mäeutik5049 21254Ethik5041 Vorlesungen Verknüpfung

14 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)14

15 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)15 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

16 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)16

17 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)17 Aggregatfunktionen min, max, avg, sum, count SELECT min(Semester) FROM Studenten; SELECT max(Semester) FROM Studenten; SELECT avg(Semester) FROM Studenten; SELECT sum(Semester) FROM Studenten; SELECT count(MatrNr), -- count(*) count(DISTINCT Semester) FROM Studenten;

18 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)18... mit Gruppierung min, max, avg, sum, count mit GROUP BY select gelesenVon, sum (SWS) from Vorlesungen group by gelesenVon; mit HAVING select gelesenVon, Name, sum (SWS) from Vorlesungen, Professoren where gelesenVon = PersNr and Rang = ´C4´ group by gelesenVon, Name having avg (SWS) >= 3;

19 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)19 Besonderheiten bei Aggregatoperationen SQL erzeugt pro Gruppe ein Ergebnistupel Deshalb müssen alle in der select-Klausel aufgeführten Attribute - außer den aggregierten – auch in der group by- Klausel aufgeführt werden Nur so kann SQL sicherstellen, dass sich das Attribut nicht innerhalb der Gruppe ändert SELECT A 1, A 2, A n, count(*) FROM... WHERE.. GROUP BY A1, A2, An

20 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)20

21 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)21

22 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)22

23 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)23 Ergebnis der Abfrage gelesenVonNamesum (SWS) 2125Sokrates10 2137Kant8

24 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)24 Nullwerte unbekannter Wert wird vielleicht später nachgereicht Nullwerte können auch im Zuge der Anfrageauswertung entstehen (Bsp. äußere Joins) manchmal sehr überraschende Anfrageergebnisse, wenn Nullwerte vorkommen UPDATE studenten SET semester = '' WHERE matrnr = 24002; select count (*) from Studenten where Semester = 13 Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt !!!

25 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)25 Nullwerte (2) NULL + 1 = NULL, NULL * 1 = NULL Beispiele (Oracle) SELECT NULL + 2 FROM Dual; SELECT NULL * 2 FROM Dual; Dual ist so etwas wie Dummy-Tabelle in Oracle Es gilt die sogenannte 3-wertige Logik in SQL

26 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)26 3-wertige Logik (NULL Logik) not TRUEFALSE NULL FALSETRUE andTRUENULLFALSE TRUE NULLFALSE NULL FALSE orTRUENULLFALSE TRUE NULLTRUENULL FALSETRUENULLFALSE

27 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)27 Regeln für NULL Werte In arithmetischen Ausdrücken werden NULL Werte propagiert (NULL + 3 = NULL) Es gilt die 3-wertige Logik. Vergleichsoperatoren (=, >,<=) liefern immer NULL zurück, wenn mindestens ein Argument NULL ist Logische Ausdrücke werden entsprechend den vorgestellten 3-wertige-Logik Tabellen ausgewertet Tupeln mit NULL als Ergebnis in einer WHERE Klausel werden nicht weitergereicht, d.h NULL Werte werden in WHERE Klauseln ausgelassen Bei Gruppierung ist NULL ein eigenständiger Wert

28 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)28 Behandlung von NULL Werten (Oracle und SQL-92) In Oracle gibt es eine null value Funktion nvl (if NULL then): SELECT nvl(NULL,5) + 2 AS Result FROM Dual; Result ------ 7 Man kann NULL Werte mit IS NULL oder IS NOT NULL testen (SQL-92)

29 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 © Bojan Milijaš, 28.10.2011Vorlesung #4 - SQL (Teil 1)29 SQL, Fortsetzung Geschachtelte Anfragen Korrelierte Anfragen Mengenoperationen Quantifizierte Anfragen (, ) Spezielle Sprachkonstrukte Joins in SQL-92, SQL-99 Rekursion Sichten (Views) Ausblick Vorlesung #4

30 WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #4 Ende


Herunterladen ppt "WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #4 SQL (Teil 1)"

Ähnliche Präsentationen


Google-Anzeigen