Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Philipp Raphael Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.