Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)

Ähnliche Präsentationen


Präsentation zum Thema: "SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)"—  Präsentation transkript:

1 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)

2 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)2 Fahrplan Besprechung der Übungsaufgaben Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE) SQL Abfragen Aggregation und Gruppierung Null-Werte, 3-wertige Logik

3 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)9 Einfache SQL Anfragen PersNrName 2125Sokrates 2126Russel 2136Curie 2137Kant selectPersNr, Name fromProfessoren whereRang= ´C4´;

10 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)11 Einfache SQL Anfragen (3) Duplikateliminierung select distinct Rang from Professoren; Rang C3 C4

12 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)14

15 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)16

17 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)20

21 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)21

22 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)22

23 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)23 Ergebnis der Abfrage gelesenVonNamesum (SWS) 2125Sokrates10 2137Kant8

24 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 select count (*) from Studenten where Semester = 13 Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt !!!

25 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)26 3-wertige Logik (NULL Logik) not TRUEFALSE NULL FALSETRUE andTRUENULLFALSE TRUE NULLFALSE NULL FALSE orTRUENULLFALSE TRUE NULLTRUENULL FALSETRUENULLFALSE

27 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - 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 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, 21.04.2004Vorlesung #6 - SQL (Teil 1)29 SQL, Fortsetzung Geschachtelte Anfragen Korrelierte Anfragen Mengenoperationen Quantifizierte Anfragen (, ) Spezielle Sprachkonstrukte Joins in SQL-92 Rekursion Sichten (Views) Ausblick Vorlesung #7

30 SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 Ende


Herunterladen ppt "SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)"

Ähnliche Präsentationen


Google-Anzeigen