datenbanksysteme für fÜ ws04/05 sql2 - 1 worzyk fh anhalt sql 2 order by null aggregatfunktionen...

34
Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 • Order by • null • Aggregatfunktionen • group by • Join • subselect

Upload: else-kestner

Post on 05-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 1

WorzykFH Anhalt

SQL 2

• Order by

• null

• Aggregatfunktionen

• group by

• Join

• subselect

Page 2: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 2

WorzykFH Anhalt

SQL> SELECT * FROM pruefung;NACHNAME VORNAME FACH DATUM NOTE FAKTOR

---------- ---------- -------------------- -------- --------- ---------

Lehmann Hans Betriebssysteme 03.01.00 1,7 1

Müller Else Mathematik 01.10.98 1,3 1

Lehmann Hans Diplomarbeit 01.10.98 2

Schmidt Hermann Diplomarbeit 01.10.98 4,7 2

Bauer Jutta Datenorganisation 01.12.98 2 1

Schulze Anton Datenorganisation 25.10.98 2,3 1

Huber Emma TI 25.10.98 3,3 1

Müller Jutta Diplomarbeit 25.10.99 2,7 2

Müller Anna Diplomarbeit 25.10.98 2 2

Müller Jutta Mathematik 01.09.99 3 1

Schulze Anton DBS1 03.09.99 3,3 1

Schulze Anton TI 03.09.99 2,3 1

Maier Fritz DBS1 05.09.99 2,3 1

Bauer Else TI 06.09.99 4,7 1

Bäcker Ewald 30.09.99

Softwareprojekt 30.09.99

Müller Jutta DBS1 01.10.98 2,3 1

Maier Fritz Datenorganisation 01.10.99 2,7 1

Köhler Emil DBS1 01.10.99 2 1

Bauer Else DBS1 1

Page 3: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 3

WorzykFH Anhalt

selectSELECT command ::=

column

SELECT *,

DISTINCT

ALL

table.

t_alias.

FROM table

WHERE conditiont_alias

,

ORDER BY columnASC

DESC

,

c_alias

Page 4: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 4

WorzykFH Anhalt

SQL> SELECT * FROM pruefung ORDER BY nachname, vorname, datum;

NACHNAME VORNAME FACH DATUM NOTE FAKTOR

Softwareprojekt 30.09.99

Bäcker Ewald 30.09.99

Bauer Jutta Datenorganisation 01.12.98 2 1

Bauer Else TI 06.09.99 4,7 1

Bauer Else DBS1 1

Huber Emma TI 25.10.98 3,3 1

Köhler Emil DBS1 01.10.99 2 1

Lehmann Hans Betriebssysteme 03.01.00 1,7 1

Lehmann Hans Diplomarbeit 01.10.98 2

Maier Fritz DBS1 05.09.99 2,3 1

Maier Fritz Datenorganisation 01.10.99 2,7 1

Müller Jutta DBS1 01.10.98 2,3 1

Müller Jutta Mathematik 01.09.99 3 1

Müller Jutta Diplomarbeit 25.10.99 2,7 2

Müller Else Mathematik 01.10.98 1,3 1

Müller Anna Diplomarbeit 25.10.98 2 2

Schmidt Hermann Diplomarbeit 01.10.98 4,7 2

Schulze Anton Datenorganisation 25.10.98 2,3 1

Schulze Anton DBS1 03.09.99 3,3 1

Schulze Anton TI 03.09.99 2,3 1

Page 5: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 5

WorzykFH Anhalt

null

• Markierung für nicht vorhandene Attributwerte

• Nullmarken können verschiedene Bedeutungen haben:– Der Wert ist nicht bekannt– Der Wert ist nicht eingegeben worden

• führen zu einer dreiwertigen Logik

Page 6: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 6

WorzykFH Anhalt

nullOracle8 SQL Reference, Release

8.0 Any arithmetic expression

containing a null always evaluates to null.

All scalar functions (except NVL and TRANSLATE) return null when given a null argument.

Most group functions ignore nulls.

Page 7: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 7

WorzykFH Anhalt

null

SQL> SELECT nachname, vorname, fach, note

2 FROM pruefung

3 WHERE fach = 'Diplomarbeit'

4 AND (note<2 or note>= 2)

5 ORDER BY note;

NACHNAME VORNAME FACH NOTE

---------- ---------- -------------------- ---------

Müller Anna Diplomarbeit 2

Müller Jutta Diplomarbeit 2,7

Schmidt Hermann Diplomarbeit 4,7

Page 8: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 8

WorzykFH Anhalt

null

SQL> SELECT nachname, vorname, fach

2 FROM pruefung

3 WHERE note IS NULL;

NACHNAME VORNAME FACH

---------- ---------- --------------------

Lehmann Hans Diplomarbeit

Bäcker Ewald

Softwareprojekt

Bauer Else DBS1

Page 9: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 9

WorzykFH Anhalt

Anzeigen von Nullmarken

SQL> SELECT NVL(nachname,'Kein Wert'),

2 NVL(vorname,'Kein Wert')

3 FROM pruefung;

NVL(NACHNA NVL(VORNAM

---------- ----------

Maier Fritz

Bauer Else

Bäcker Ewald

Kein Wert

Müller Jutta

Maier Fritz

Page 10: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 10

WorzykFH Anhalt

Anzeigen von Nullmarken

SQL> SELECT '!' || nachname || '!' || vorname || '!'

2 FROM pruefung;

'!'||NACHNAME|| '!'||VOR

-----------------------

!Maier!Fritz!

!Bauer!Else!

!Bäcker!Ewald!

! !!

!Müller!Jutta!

!Maier!Fritz!

Page 11: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 11

WorzykFH Anhalt

AggregatfunktionenSQLStandard

avg Durschnitt jacount Anzahl jamax Maximum jamin Minimum jasum Summe ja

Page 12: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 12

WorzykFH Anhalt

countSELECT COUNT (*)

– Anzahl aller Zeilen

SELECT COUNT (expr)– Anzahl aller Zeilen, die einen Wert in

der angegebenen Spalte haben

SELECT COUNT (DISTINCT expr)– Anzahl aller unterschiedlichen Zeilen,

die einen Wert in der angegebenen Spalte haben

Page 13: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 13

WorzykFH Anhalt

count

SQL> SELECT COUNT(*), COUNT(note),

2 COUNT(DISTINCT note)

3 FROM pruefung;

COUNT(*) COUNT(NOTE) COUNT(DISTINCTNOTE)

--------- ----------- -------------------

20 16 8

Page 14: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 14

WorzykFH Anhalt

Auswerten von Nullmarken

SQL> SELECT AVG(note), SUM(note)/COUNT(*)

2 FROM pruefung;

AVG(NOTE) SUM(NOTE)/COUNT(*)

--------- ------------------

2,6625 2,13

Page 15: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 15

WorzykFH Anhalt

Group by

Group by kennzeichnet die Zeilen einer Spalte, die durch eine Aggregatfunktion zusammengefaßt werden sollen.

Page 16: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 16

WorzykFH Anhalt

selectSELECT command ::=

column

SELECT *,

DISTINCT

ALL

table.

t_alias.

FROM table

WHERE conditiont_alias

,

ORDER BY columnASC

DESC

,

c_alias

GROUP BY expr

,

Page 17: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 17

WorzykFH Anhalt

group byWieviel Prüfungen wurden pro Fach durchgeführt?SQL> SELECT fach, COUNT(note) "Anzahl Pruefungen"

2 FROM pruefung

3 GROUP BY fach;

FACH Anzahl Pruefungen

-------------------- -----------------

Betriebssysteme 1

DBS1 4

Datenorganisation 3

Diplomarbeit 3

Mathematik 2

Softwareprojekt 0

TI 3

0

Page 18: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 18

WorzykFH Anhalt

group byWie lautet der Notendurchschnitt pro Fach?SQL> SELECT fach, AVG(note) "Durchschnitt"

2 FROM pruefung

3 GROUP BY fach

4 ORDER BY "Durchschnitt";

FACH Durchschnitt

-------------------- ------------

Betriebssysteme 1,7

Mathematik 2,15

Datenorganisation 2,3333333

DBS1 2,475

Diplomarbeit 3,1333333

TI 3,4333333

Softwareprojekt

8 Zeilen ausgewählt.

Page 19: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 19

WorzykFH Anhalt

group byWie lautet der Notendurchschnitt pro Fach im Jahr 1999? SQL> SELECT fach, AVG(note) "Durchschnitt" 2 FROM pruefung

3 WHERE datum > '01.01.99'

4 GROUP BY fach

5 ORDER BY "Durchschnitt";

FACH Durchschnitt-------------------- ------------

DBS1 2,5333333

Datenorganisation 2,7

Diplomarbeit 2,7

Mathematik 3

TI 3,5

Softwareprojekt

7 Zeilen ausgewählt.

Page 20: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 20

WorzykFH Anhalt

RelationenalgebraProdukt

Das Produkt der Tabellen T1 und T2 hat die Attribute von T1 und T2.

Jedes Tupel von T1 wird mit jedem Tupel von T2 verbunden.

Page 21: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 21

WorzykFH Anhalt

RelationenProdukt

name nummerRichter 852Lange 140Worzyk 119

LehrgebietEnglischBetriebssystemeDatenbanksysteme

Name Nummer LehrgebietRichter 852 EnglischRichter 852 BetriebssystemeRichter 852 DatenbanksystemeLange 140 EnglischLange 140 BetriebssystemeLange 140 DatenbanksystemeWorzyk 119 EnglischWorzyk 119 BetriebssystemeWorzyk 119 Datenbanksysteme

Page 22: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 22

WorzykFH Anhalt

KreuzproduktSQL> SELECT * FROM belegung;

NACHNAME VORNAME VORLESUNG

---------- ---------- ---------------

Müller Jutta Mathematik

Köhler Emil DBS1

Maier Fritz Programmierung

SQL> SELECT * FROM stuga;

NACHNAME VORNAME STUDIENGANG

---------- ---------- ---------------

Müller Jutta Informatik

Köhler Emil Fachübersetzen

Maier Fritz InfManagement

Page 23: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 23

WorzykFH Anhalt

KreuzproduktSQL> SELECT vorlesung, studiengang

2 FROM belegung, stuga;

VORLESUNG STUDIENGANG

--------------- ---------------

Mathematik Informatik

DBS1 Informatik

Programmierung Informatik

Mathematik Fachübersetzen

DBS1 Fachübersetzen

Programmierung Fachübersetzen

Mathematik InfManagement

DBS1 InfManagement

Programmierung InfManagement

Page 24: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 24

WorzykFH Anhalt

KreuzproduktSQL> SELECT vorlesung, studiengang

2 FROM stuga, belegung;

VORLESUNG STUDIENGANG

--------------- ---------------

Mathematik Informatik

Mathematik Fachübersetzen

Mathematik InfManagement

DBS1 Informatik

DBS1 Fachübersetzen

DBS1 InfManagement

Programmierung Informatik

Programmierung Fachübersetzen

Programmierung InfManagement

Page 25: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 25

WorzykFH Anhalt

Namenskonventionen

Tabellen werden in Zukunft immer den Präfix „ta_“ haben.

alt neubelegung ta_belegungstuga ta_stuga

Page 26: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 26

WorzykFH Anhalt

equijounSQL> SELECT ta_stuga.nachname, ta_stuga.vorname,

2 ta_stuga.studiengang, ta_belegung.vorlesung

3 FROM ta_stuga, ta_belegung

4 WHERE ta_stuga.nachname = ta_belegung.nachname

5 AND ta_stuga.vorname = ta_belegung.vorname;

NACHNAME VORNAME STUDIENGANG VORLESUNG

---------- ---------- --------------- --------------

Köhler Emil Fachübersetzen DBS1

Maier Fritz InfManagement Programmierung

Müller Jutta Informatik Mathematik

Page 27: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 27

WorzykFH Anhalt

selectSELECT command ::=

column

SELECT *,

DISTINCT

ALL

table.

t_alias.

FROM table

WHERE conditiont_alias

,

ORDER BY columnASC

DESC

,

c_alias

GROUP BY expr

,

HAVING condition

Page 28: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 28

WorzykFH Anhalt

equijounSQL> SELECT s.nachname, s.vorname,

2 s.studiengang, b.vorlesung

3 FROM ta_stuga s, ta_belegung b

4 WHERE s.nachname = b.nachname

5 AND s.vorname = b.vorname;

NACHNAME VORNAME STUDIENGANG VORLESUNG

---------- ---------- --------------- ---------------

Köhler Emil Fachübersetzen DBS1

Maier Fritz InfManagement Programmierung

Müller Jutta Informatik Mathematik

Page 29: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 29

WorzykFH Anhalt

SelektionBeispiel

Person Vorlesung Person Studiengang Studiengang RegelHans Mathematik Emil Informatik 9Emil Programmierung Anna Fachü-

bersetzenElektrotechnik 11

J utta Mathematik Fritz InfManage-ment

InfManage-ment

10

Fritz DBS1 Else Informatik Fach-übersetzen

8

Anna Mathematik Hans Informatik MaschinenbauElse DBS1 J utta Informatik

wie heißen die Informatiker in der Mathematik-Vorlesung

wie lang ist die durchschnittliche Studiendauer der DBS1-Hörer

Page 30: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 30

WorzykFH Anhalt

equijoinwie heißen die Informatiker in der

Mathematik-Vorlesung SQL> SELECT b.vorname, b.nachname, s.studiengang

2 FROM ta_belegung b, ta_stuga s

3 WHERE b.vorname = s.vorname

4 AND b.nachname = s.nachname

5 AND b.vorlesung = 'Mathematik'

6 AND s.studiengang = 'Informatik';

VORNAME NACHNAME STUDIENGANG

---------- ---------- ---------------

Hans Lehmann Informatik

Jutta Müller Informatik

Page 31: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 31

WorzykFH Anhalt

equijoinwie lang ist die durchschnittliche

Studiendauer der DBS1-HörerSQL> SELECT b.vorlesung, avg(d.dauer)

2 FROM ta_belegung b, ta_stuga s, ta_dauer d

3 WHERE b.vorname = s.vorname

4 AND b.nachname = s.nachname

5 AND s.studiengang = d.studiengang

6 AND b.vorlesung = 'DBS1'

7 GROUP BY b.vorlesung;

VORLESUNG AVG(D.DAUER)

--------------- ------------

DBS1 9,5

Page 32: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 32

WorzykFH Anhalt

selfjoin

SQL> SELECT * FROM ta_personal;

PERS# NAME ABTEILUNG CHEF--------- ---------- --------------- ---------

10 Jutta DV 14

11 Emil DV 14

12 Fritz Management 100

13 Hans Entwicklung 12

14 Hermann DV 12

100 Else

Page 33: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 33

WorzykFH Anhalt

selfjoinWelcher Chef hat welche Mitarbeiter?SQL> SELECT p1.name "Chef", p2.name "Mitarbeiter"

2 from ta_personal p1,

3 ta_personal p2

4 where p1.pers# = p2.Chef

5 ORDER BY p1.name;

Chef Mitarbeite

---------- ----------

Else Fritz

Fritz Hans

Fritz Hermann

Hermann Jutta

Hermann Emil

Page 34: Datenbanksysteme für FÜ WS04/05 SQL2 - 1 Worzyk FH Anhalt SQL 2 Order by null Aggregatfunktionen group by Join subselect

Datenbanksysteme für FÜ WS04/05SQL2 - 34

WorzykFH Anhalt

Zusammenfassung

• order by sortiert ungeordnete Zeilen

• group by bildet Teilmengen für Aggregatfunktionen

• join verbindet mehrere Tabellen• selfjoin verbindet eine Tabelle mit

sich selbst