Top Banner
SQL - Tutorial Hubert Baumgartner SS 06 INSO - Industrial Software Institut für Rechnergestützte Automation | Fakultät für Informatik | Technische Universität Wien SQL Tutorial
33

SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

Apr 28, 2018

Download

Documents

vuongdung
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

SQL - Tutorial

Hubert Baumgartner

SS 06

INSO - Industrial SoftwareInstitut für Rechnergestützte Automation | Fakultät für Informatik | Technische Universität Wien

SQL Tutorial

Page 2: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

2Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

Page 3: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

3Sof tware Engineering 2005W | SQL-Tutorial

Gründe für die Verwendung einer Datenbank

Redundanz

Konsistenz

Sicherheit

Mehrbenutzerfähig

Integritätsüberprüfung

Page 4: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

4Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

Page 5: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

5Sof tware Engineering 2005W | SQL-Tutorial

Wichtige Begriffe

Entität (Entity)

Attribut

Relation

Schlüssel

Integritätsbedingungen

Relationales Datenbanksystem

Index

Page 6: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

6Sof tware Engineering 2005W | SQL-Tutorial

Grundlegende EER-Konstrukte

Entitäten

Attribute

Page 7: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

7Sof tware Engineering 2005W | SQL-Tutorial

Grundlegende EER-Konstrukte

Relationen

Weak Entity

Page 8: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

8Sof tware Engineering 2005W | SQL-Tutorial

Komplexität einer Beziehung

1:1-Relation

1:n-Relation

m:n-Relation

Page 9: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

9Sof tware Engineering 2005W | SQL-Tutorial

Generalisierung

Page 10: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

10Sof tware Engineering 2005W | SQL-Tutorial

Existenz einer Entity in einer Beziehung

Zwingende (obligatorische) Relation

Optionale Relation

Page 11: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

11Sof tware Engineering 2005W | SQL-Tutorial

Beispiel-EER

Page 12: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

12Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

Page 13: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

13Sof tware Engineering 2005W | SQL-Tutorial

Die Datenbanksprache SQL

Allgemeines

Datentypen

▪ CHAR(n)▪ VARCHAR(n)▪ INTEGER▪ SMALLINT▪ FLOAT▪ DOUBLE▪ DATE

Page 14: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

14Sof tware Engineering 2005W | SQL-Tutorial

Datendefinition

Erzeugen von Tabellen

CREATE TABLE tabellenname (

attribut1 typ {Optionen} {, attributN typ {Optionen} }

{ , Zusatzoptionen } );

Beispiel: CREATE TABLE Person (Vorname VARCHAR(20) NOT NULL, Nachname VARCHAR(30) NOT NULL, Adresse VARCHAR(60) NOT NULL, Geburtsdatum DATE NOT NULL, Telefonnummer VARCHAR(30), Geschlecht INTEGER NOT NULL, PRIMARY KEY (Vorname, Nachname, Adresse, Geburtsdatum), CHECK((Geschlecht >= 1) AND (Geschlecht <= 2)));

Page 15: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

15Sof tware Engineering 2005W | SQL-Tutorial

Datendefinition

Ändern von TabellenALTER TABLE tabellenname

ADD attributname1 typ1 | DROP attributname1 | CHANGE attributname1_alt attributname1_neu typ1_neu | MODIFY attributname1 typ1_neu { , ADD attributnameN typN | DROP attributnameN | CHANGE attributnameN_alt attributnameN_neu typN_neu | MODIFY attributnameN typN_neu };

Beispiel: ALTER TABLE Person ADD Email VARCHAR(20), MODIFY Telefonnummer VARCHAR(40) NOT NULL, DROP Geschlecht;

Page 16: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

16Sof tware Engineering 2005W | SQL-Tutorial

Datendefinition

Löschen von Tabellen

DROP TABLE tabellenname1 {, tabellennameN};

Beispiel: DROP TABLE Person;

Page 17: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

17Sof tware Engineering 2005W | SQL-Tutorial

Datenmanipulation

Einfügen von Daten

INSERT INTO tabellenname

[(attribut1, attribut2, .... attributN)]

VALUES (wert1, wert2, .... wertN);

Beispiel: INSERT INTO Person (Vorname, Nachname, Adresse, Geburtsdatum, Telefonnummer, Geschlecht) VALUES (“Hans“,“Meier“,“Waldweg 2“,“10.09.1970“,“01/7654321“,1);

Page 18: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

18Sof tware Engineering 2005W | SQL-Tutorial

Datenmanipulation

Ändern von Daten

UPDATE tabellennameSET attributname = value {, attributname = value}[ WHERE Bedingung ];

Beispiel: UPDATE Person SET Vorname = “Hans“, Nachname = “Huber“ WHERE Adresse = “Waldweg 2“;

Page 19: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

19Sof tware Engineering 2005W | SQL-Tutorial

Datenmanipulation

Löschen von Daten

DELETE FROM tabellenname[ WHERE Bedingung ];

Beispiel: DELETE FROM Person WHERE Vorname = “Hans” AND Nachname = “Huber”;

Page 20: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

20Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Grundkonstruktion einer Abfrage

SELECT attributname {, attributname}FROM tabellenname { , tabellenname }[ WHERE Bedingung ][ ORDER BY [ ASC | DESC ] attributname ];

Beispiele:

SELECT * FROM Person;

SELECT Vorname, Nachname FROM Person;

SELECT * FROM Person ORDER BY Vorname;

Page 21: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

21Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Die Selektion

▪ Realisiert durch die WHERE-Klausel

Beispiel:

SELECT * FROM Person WHERE Geschlecht = 1 AND Geburtsdatum>“01.01.1960“;

Page 22: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

22Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Die Projektion

▪ Realisiert durch Angabe von Attributen

Beispiel:

SELECT Vorname, Nachname, Geburtsdatum FROM Person;

Page 23: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

23Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Aggregatfunktionen

▪ COUNT (attributname)▪ SUM (attributname)▪ AVG (attributname)▪ MAX (attributname)▪ MIN (attributname)

Beispiel: SELECT COUNT(*) FROM Spieler WHERE Verein_Name = „Tennis 2005“;

Page 24: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

24Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Gruppierung

SELECT [ ALL | DISTINCT ] [Alias.] attributname {, [Alias.] attributname }FROM tabellenname [Alias] {, tabellenname [Alias] }[ WHERE Bedingung ][ GROUP BY [Alias.] attributname {, [Alias.] attributname } [ HAVING Bedingung]

][ ORDER BY [ASC | DESC] attributname];

Beispiel: SELECT Spieler_SpielerNr, COUNT(Spieler_SpielerNr) FROM Teilnahme GROUP BY Spieler_SpielerNr;

Page 25: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

25Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Mengenoperationen

SQL-Query [ UNION SQL-Query ];

Beispiel: (SELECT Adresse FROM Person) UNION (SELECT Adresse FROM Verein);

Page 26: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

26Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Teilabfragen

Innerhalb der WHERE-Klausel kann an jeder Stelle, an der ein Wert erwartet wird, dieser auch durch eine SQL-Abfrageberechnet werden.

Vergleichsoperatoren für Teilabfragen:

EXISTS, ALL, ANY, IN, NOT IN

Beispiel: SELECT * FROM Spieler WHERE Preisgeld > (SELECT Preisgeld FROM Spieler WHERE Person_Vorname = „Christian“ AND Person_Nachname = „Lang“);

Page 27: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

27Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Der Verbund (Join)

Wenn benötigte Daten in getrennten Tabellen liegen können diesebei Bedarf über ihre Schlüssel in Zusammenhang gebracht werden.

Beispiel: SELECT s.SpielerNr, t.Bezeichnung

FROM Spieler s,Turnier t, Teilnahme tn

WHERE s.SpielerNr = tn.Spieler_SpielerNr AND

t.Bezeichnung = tn.Turnier_Bezeichnung;

entspricht

SELECT s.SpielerNr, t.Bezeichnung

FROM (Spieler s JOIN Teilnahme tn ON

s.SpielerNr = tn.Spieler_SpielerNr

) JOIN Turnier t ON

tn.Turnier_Bezeichnung = t.Bezeichnung;

Page 28: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

28Sof tware Engineering 2005W | SQL-Tutorial

Benutzersichten

SQL-Views

CREATE VIEW Name AS Select-Anweisung;

▪ Jede zulässige SELECT-Anweisung kann als View definiert werden.

Page 29: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

29Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

Page 30: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

30Sof tware Engineering 2005W | SQL-Tutorial

Ünungsbeispiel - Aufgabenstellung

Erstellen Sie ein EER-Datenbankmodell das allenotwendigen Entitäten und Beziehungen des Systemsabbildet. Redundante Informationen sollen vermiedenwerden.

Erstellen Sie ein SQL Statement zum Erzeugen derTabelle AUFTRAG aus der in Punkt a modelliertenDatenbank.

Fügen Sie einen beispielhaften Datensatz durch ein SQLStatement ein.

Page 31: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

31Sof tware Engineering 2005W | SQL-Tutorial

Ünungsbeispiel - Angabetext

Verwaltung eines VersanddienstesVerwaltung eines Versanddienstes

Für die Verwaltung des Versanddienstes SendIT soll ein System erstelltwerden. Im System werden Auftraggeber erfasst. Diese erhalten eineeindeutige ID und werden zusätzlich noch mit einem Namen, Adresse und einereMail-Adresse im System gespeichert. Ein Auftrag setzt sich aus mehrerenEinzelsendungen zusammen. Weiters wird für jeden Auftrag dasErstellungsdatum, das geplante Durchführungsdatum, der Preis und eineZahlungsfrist (in Wochen) gespeichert. Ein Auftrag erhält eine eindeutigeAuftragsnummer (ID). Die maximale Zahlungsfrist ergibt sich aus der Anzahl derEinzelsendungen. Wenn diese unter 100 liegt, kann eine maximaleZahlungsfrist von 2 Wochen eingetragen werden. Sonst von 4 Wochen. EineEinzelsendung besteht aus mehreren Komponenten. Diese sind einerseits dieWare und der Mitarbeiter der die Ware ausliefert und andererseits derEmpfänger. Weiters ist die Information verfügbar, wann die Einzelsendungdurchgeführt werden konnte und der Empfänger die Ware erhalten hat. DieWare erhält eine eindeutige ID, eine Beschreibung und einen Lagerort. VomBoten werden die überlichen Mitarbeiterdaten gespeichert. Mitarbeiter werdenausser mit Namen, Adresse und einer eMail-Adresse auch mit einer SVNR imSystem gespeichert.

Page 32: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

32Sof tware Engineering 2005W | SQL-Tutorial

Ünungsbeispiel - Lösung

ACHTUNG: Es gibt nie nur eine gültige Lösung!

Page 33: SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2 Das Relationenmodell 3 Die Datenbanksprache SQL 1 Grundlagen ... GROUP BY Spieler_SpielerNr;

33Sof tware Engineering 2005W | SQL-Tutorial

Ünungsbeispiel - Lösung

create table AUFTRAG

(ID integer not null primary key,

Erstellung date not null,

Durchfuehrung date,

Preis integer not null,

Frist integer not null,

check (Frist <= 4),

PersonID integer not null,

foreign key(PersonID) references PERSON(ID));

insert into AUFTRAG values (0, 01-01-01, null, 100, 2, 78);