+ All Categories
Home > Documents > SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2...

SQL Tutorial - INSO - Home · Software Engineering 2005W | SQL-Tutorial 2 Inhalt des Tutorials 2...

Date post: 28-Apr-2018
Category:
Upload: vuongdung
View: 222 times
Download: 3 times
Share this document with a friend
33
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
Transcript

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

2Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

3Sof tware Engineering 2005W | SQL-Tutorial

Gründe für die Verwendung einer Datenbank

Redundanz

Konsistenz

Sicherheit

Mehrbenutzerfähig

Integritätsüberprüfung

4Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

5Sof tware Engineering 2005W | SQL-Tutorial

Wichtige Begriffe

Entität (Entity)

Attribut

Relation

Schlüssel

Integritätsbedingungen

Relationales Datenbanksystem

Index

6Sof tware Engineering 2005W | SQL-Tutorial

Grundlegende EER-Konstrukte

Entitäten

Attribute

7Sof tware Engineering 2005W | SQL-Tutorial

Grundlegende EER-Konstrukte

Relationen

Weak Entity

8Sof tware Engineering 2005W | SQL-Tutorial

Komplexität einer Beziehung

1:1-Relation

1:n-Relation

m:n-Relation

9Sof tware Engineering 2005W | SQL-Tutorial

Generalisierung

10Sof tware Engineering 2005W | SQL-Tutorial

Existenz einer Entity in einer Beziehung

Zwingende (obligatorische) Relation

Optionale Relation

11Sof tware Engineering 2005W | SQL-Tutorial

Beispiel-EER

12Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

13Sof tware Engineering 2005W | SQL-Tutorial

Die Datenbanksprache SQL

Allgemeines

Datentypen

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

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)));

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;

16Sof tware Engineering 2005W | SQL-Tutorial

Datendefinition

Löschen von Tabellen

DROP TABLE tabellenname1 {, tabellennameN};

Beispiel: DROP TABLE Person;

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);

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“;

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”;

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;

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“;

22Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Die Projektion

▪ Realisiert durch Angabe von Attributen

Beispiel:

SELECT Vorname, Nachname, Geburtsdatum FROM Person;

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“;

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;

25Sof tware Engineering 2005W | SQL-Tutorial

Datenabfragen

Mengenoperationen

SQL-Query [ UNION SQL-Query ];

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

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“);

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;

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.

29Sof tware Engineering 2005W | SQL-Tutorial

Inhalt des Tutorials

Das Relationenmodell2

Die Datenbanksprache SQL3

Grundlagen1

Übungsbeispiel4

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.

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.

32Sof tware Engineering 2005W | SQL-Tutorial

Ünungsbeispiel - Lösung

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

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);


Recommended