datenbanksysteme für fÜ ws04/05 sql2 - 1 worzyk fh anhalt sql 2 order by null aggregatfunktionen...
TRANSCRIPT
Datenbanksysteme für FÜ WS04/05SQL2 - 1
WorzykFH 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
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
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
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
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.
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
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
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
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!
Datenbanksysteme für FÜ WS04/05SQL2 - 11
WorzykFH Anhalt
AggregatfunktionenSQLStandard
avg Durschnitt jacount Anzahl jamax Maximum jamin Minimum jasum Summe ja
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
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
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
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.
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
,
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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