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

Slides:



Advertisements
Ähnliche Präsentationen
Objekt-relationale und erweiterbare Datenbanksysteme
Advertisements

ER-Datenmodell und Abfragen in SQL
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Objekt-relationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 Objekt-relationale Modellierung.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 5 SQL DDL + DML.
Kapitel 2 SQL Anfragen.
Kapitel 2 SQL Anfragen.
Objekt-relationale und erweiterbare Datenbanksysteme
SQL als Abfragesprache
SQL als Abfragesprache
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
Information Systems & Semantic Web University of Koblenz Landau, Germany Vorlesung Multimedia-Datenbanken Objekt-relationale Datenbanksysteme (Folien nach.
Kapitel 4 SQL: Grundlagen.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
2.2 Definition eines Datenbankschemas (SQL-DDL)
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Information Systems & Semantic Web University of Koblenz Landau, Germany Vorlesung Multimedia-Datenbanken Objekt-relationale Datenbanksysteme (Folien nach.
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #2 Das relationale Modell (Teil 1)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #2 Das relationale Modell (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2013/14 Datenbanksysteme Fr 17:00 – 18:30 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #2 Das relationale Modell (Teil 1)
Befehle in SQL Erläuterungen.
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Vorlesung #10 Physische Datenorganisation
Relationales Datenmodell und DDL
Verdichten von Daten mit Gruppenfunktionen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
Structured Query Language
Vorlesung #5 SQL (Teil 2).
Vorlesung #2 Das relationale Modell (Teil 1)
SQL - Structured Query Language  AIFB SS (1|3) 2.1 Allgemeines zu SQL (1|3) Benennung: SQL: „structured query language" ursprünglich: SEQUEL –
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
SS 2015 – IBB4C Datenmanagement Fr 17:00 – 18:30 R Vorlesung #4 Überführung des ER-Modells in das relationale Modell.
Datenbanken abfragen mit SQL
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
Vorlesung #7 SQL (Teil 4).
(Structured Query Language)
 Präsentation transkript:

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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 SQL Norm von ANSI Comitee 1992: SQL-92 bzw. SQL : SQL-99 bzw. SQL-3 (objektrelationale Erweiterungen)

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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...

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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));

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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;

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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);

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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;

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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 ;

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #4 - SQL (Teil 1)13 Anfragen über mehrere Relationen (2) RaumRangNamePersNr C4 Sokrates Russel Kant Professoren gelesenVonSWSTitelVorlNr 21374Grundzüge Die 3 Kritiken Mäeutik Ethik5041 Vorlesungen Verknüpfung

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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;

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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;

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

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

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

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

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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 !!!

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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 Man kann NULL Werte mit IS NULL oder IS NOT NULL testen (SQL-92)

WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #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

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