1 / 34

SQL 2

SQL 2. Order by null Aggregatfunktionen group by Join subselect. SQL> SELECT * FROM pruefung; NACHNAME VORNAME FACH DATUM NOTE FAKTOR ---------- ---------- -------------------- -------- --------- ---------

ginger
Download Presentation

SQL 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL 2 • Order by • null • Aggregatfunktionen • group by • Join • subselect

  2. 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

  3. SELECT * , DISTINCT column ALL t_alias. c_alias , table. FROM table t_alias WHERE condition , column ORDER BY ASC DESC select SELECT command ::=

  4. 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

  5. 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

  6. 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.

  7. 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

  8. 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

  9. 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

  10. Anzeigen von Nullmarken SQL> SELECT '!' || nachname || '!' || vorname || '!' 2 FROM pruefung; '!'||NACHNAME|| '!'||VOR ----------------------- !Maier!Fritz! !Bauer!Else! !Bäcker!Ewald! ! !! !Müller!Jutta! !Maier!Fritz!

  11. Aggregatfunktionen

  12. count SELECT 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

  13. count SQL> SELECT COUNT(*), COUNT(note), 2 COUNT(DISTINCT note) 3 FROM pruefung; COUNT(*) COUNT(NOTE) COUNT(DISTINCTNOTE) --------- ----------- ------------------- 20 16 8

  14. Auswerten von Nullmarken SQL> SELECT AVG(note), SUM(note)/COUNT(*) 2 FROM pruefung; AVG(NOTE) SUM(NOTE)/COUNT(*) --------- ------------------ 2,6625 2,13

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

  16. SELECT command ::= SELECT * , DISTINCT column ALL t_alias. c_alias table. , FROM table t_alias WHERE condition , expr GROUP BY , column ORDER BY ASC DESC select

  17. group by Wieviel 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

  18. group by Wie 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.

  19. group by Wie 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.

  20. 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.

  21. RelationenProdukt

  22. Kreuzprodukt SQL> 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

  23. Kreuzprodukt SQL> 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

  24. Kreuzprodukt SQL> 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

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

  26. equijoun SQL> 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

  27. SELECT command ::= SELECT * , DISTINCT column ALL t_alias. c_alias table. , FROM table t_alias WHERE condition , expr GROUP BY HAVING condition , column ORDER BY ASC DESC select

  28. equijoun SQL> 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

  29. SelektionBeispiel wie heißen die Informatiker in der Mathematik-Vorlesung wie lang ist die durchschnittliche Studiendauer der DBS1-Hörer

  30. equijoin wie 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

  31. equijoin wie lang ist die durchschnittliche Studiendauer der DBS1-Hörer SQL> 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

  32. 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

  33. selfjoin Welcher 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

  34. Zusammenfassung • order by sortiert ungeordnete Zeilen • group by bildet Teilmengen für Aggregatfunktionen • join verbindet mehrere Tabellen • selfjoin verbindet eine Tabelle mit sich selbst

More Related