SQL (2) Enzio Thiem INHALT • • • • • • • • 25.10.2012 SELECT DISTINCT Logische Operatoren Boolsche Operatoren Aggregatfunktionen verschachtelte Abfrage Mathematische Funktionen Abfragen über mehrere Tabellen - Alias Erzeugen von Sichten – CREATE VIEW Enzio Thiem B.Sc. - Angewandte Informatik 2 SELECT DISTINCT Vorsortierung doppelte Vorkommen nur einmal anzeigen SELECT DISTINCT tbl_tabelle FROM attribut; 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 3 Logische Operatoren = < > <> <= >= gleich kleiner als größer als ungleich kleiner gleich größer gleich SELECT pname, eintritt FROM persdat WHERE eintritt='1985-05-15'; SELECT pname, gehalt FROM persdat WHERE gehalt>4000.00; 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 4 Boolsche Operatoren AND OR NOT SELECT * FROM persdat WHERE abtnr =3 AND gehalt > 4000; SELECT * FROM persdat WHERE NOT gehalt >=4000; Verknüpfung SELECT * FROM persdat WHERE geschlecht = 'M' AND ( gehalt >4000 OR eintritt < '1984-01-01‘ ) 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 5 Aggregatfunktionen • • • • MIN(spaltenname) = Minimalwert MAX(spaltenname) = Maximalwert COUNT(*) = Anzahl der vorhandenen Zeilen COUNT (DISTINCT spaltenname) = Anzahl der Zeilen mit unterschiedlichen Werten • SUM(spaltenname) = Summe • AVG(spaltenname)= Mittelwert SELECT SELECT SELECT SELECT 25.10.2012 AVG (gehalt) FROM persdat; SUM(gehalt) FROM persdat; persnr, pname, pvname, MAX(gehalt) FROM persdat; COUNT( DISTINCT eintritt) FROM persdat letztes Beispiel: Anzahl der unterschiedlichen Vorkommen Enzio Thiem B.Sc. - Angewandte Informatik 6 verschachtelte Abfrage SELECT persnr, pname FROM persdat WHERE gehalt < (SELECT MAX(gehalt) FROM persdat); 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 7 COUNT z.B. Anzahl der unterschiedlichen Vorkommen SELECT COUNT( DISTINCT eintritt) FROM persdat 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 8 Mathematische Funktionen z.B. Rechnen mit Daten SELECT pname, gehalt * 1.045 FROM persdat 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 9 weitere SQL-Operatoren • LIKE • BETWEEN • ORDER BY SELECT pname FROM persdat WHERE pname LIKE 'Me_er'; /* MySQL Platzhalter: _*/ SELECT pname FROM persdat WHERE pname LIKE 'M%'; /* MySQL Wildcats: %*/ SELECT pname FROM persdat WHERE pname BETWEEN 'S' AND 'Z' ; SELECT pname, eintritt FROM persdat WHERE eintritt BETWEEN '1984-01-01' AND '1985-12-31‘ ORDER BY pname ASC; /*Ordnet aufsteigend (ASC) – absteigend (DESC)*/ 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 10 Abfragen über mehrere Tabellen Abfragen über mehrere Tabellen: SELECT aufnr, tposten.tartnr, tbez, tstd*tpreis FROM tposten, tarten WHERE tposten.tbnr = 20020301 AND tposten.aufnr = 2222 AND tposten.Tartnr=tarten.tartnr; tabelle.attribut = t.attribut (wenn vorher FROM tposten t) SELECT aufnr, t.tartnr, tbez, tstd*tpreis FROM tposten t, tarten a WHERE t.tbnr = 20020301 AND t.aufnr = 2222 AND t.Tartnr=a.tartnr; 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 11 Erzeugen von Sichten – CREATE VIEW CREATE VIEW personaldaten AS SELECT A1,A2,B1,B2 FROM T1,T2 Tabelle T2 Tabelle T1 A1 B1 C1 A2 D1 B2 C2 D2 Sicht A1 A2 B1 B2 Sichten sind Gespeicherte SQL Befehle, die über den vergebenen Namen ausgeführt werden können 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 12 Erzeugen von Sichten – CREATE VIEW Beispielcode: CREATE VIEW personaldaten AS SELECT a.persnr,pname,pvname,abtnr,tbnr,aufnr,tartnr,tstd FROM persdat a, tposten b WHERE a.persnr=b.persnr; 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 13 Erzeugen von Sichten – CREATE VIEW CREATE VIEW personaldaten AS SELECT * FROM persdat; 25.10.2012 Enzio Thiem B.Sc. - Angewandte Informatik 14