SQL-Abfragen 1. Hintergrundinfos - - strukturierte Abfragesprache für Datenbankabfragen bei einer Vielzahl von Datenbanken einsetzbar (Oracle, Access, Excel, …) SQL erhält durch die Kombination mit Programmiersprachen wie PHP, ASP, ASPnet, JSP besondere Bedeutung Ablauf einer Abfrage: I. Statement vom Client II. Wird am Server verarbeitet III. Ergebnis an den Client gesandt Achtung: CASE SENSITIVE! (Groß-, Kleinschreibung beachten) Hinweis: Beim Cut & Paste aus dieser Datei in die Formularzelle von sql.idv.edu wird das einfache Anführungszeichen falsch übernommen und es kommt gegebenenfalls zu einer Fehlermeldung. Das korrekte Anführungszeichen ist jenes über der Raute-Taste. 2. SQL-Statements Beispiel0: Standard Vorname, Nachname und Plz aller Kunden? SELECT Vorname, Nachname, Plz FROM Kunde SELECT DB-Feldname1, DB-Feldname2, … WHERE DB-FeldnameX <Bedingung> FROM Tabellenname Beispiel1: Bedingung Vorname, Nachname, Plz aller Kunden mit Plz 4040? SELECT Vorname, Nachname, Plz FROM Kunde WHERE Plz = 4040 Hinweis: Vergleich mit WHERE; Textvergleich unter Hochkomma, Zahlenvergleich ohne. Beispiel2: Weitere Vergleichsoperatoren BuchNr, Titel und Preis der ersten 4 Bücher? SELECT Nr, Titel, Preis FROM Buch WHERE Nr < 5 1 Neben „< 5“ lassen sich aber auch eine Reihe anderer Vergleichsoperatoren einsetzen: = Gleich > Größer < Kleiner <> Ungleich >= Größer gleich <= KK Kleiner gleich Abbildung1: Vergleichsoperatoren Beispiel3: Sortieren KundenNr, Nachname und Plz der ersten 4 Kunden; aufsteigend sortiert nach Nachname? SELECT Nr, Nachname, Plz FROM Kunde WHERE Nr < 5 ORDER BY Nachname ASC Standardmäßig wird aufsteigend sortiert, deswegen könnte ASC hier weggelassen werden. Auch DESC ausprobieren! (descending = absteigend, ascending = aufsteigend) Außerdem 2 Sortierungskriterien möglich z.B.: ORDER BY Nachname ASC, Vorname DESC Beispiel4: AND KundenNr, Nachname, Plz aus 4040 und mit Nachnamen Huber? SELECT Nr, Nachname, Plz FROM Kunde WHERE Plz = 4040 AND Nachname = ’Huber’ Beispiel5: ODER KundenNr, Nachname, Plz aus 4040 oder mit Nachnamen Huber? SELECT Nr, Nachname, Plz FROM Kunde WHERE Plz = 4040 OR Nachname = ‘Huber’ Beispiel6: LIKE Alle Vorname, die mit „M“ beginnen? SELECT Vorname FROM Kunde WHERE Vorname LIKE ‘M%’ Beispiel7: DISTINCT (neu) Alle unterschiedlichen Vorname, die mit „M“ beginnen? SELECT DISTINCT Vorname FROM Kunde WHERE Vorname LIKE ‘M%’ Beispiel8: IN Kundennummer, Plz aller Kunden aus 5020, 1010, 4020? SELECT Nr, Plz FROM Kunde WHERE Plz IN (‘5020’,’1010’,’4020’) 2 Beispiel9: BETWEEN Preis und Titel aller Bucher zwischen 60 und 70 €? SELECT Preis, Titel FROM Buch WHERE Preis BETWEEN 60 AND 70 Arithmetische Gruppenfunktionen (COUNT, SUM, AVG, MIN, MAX) Beispiel10: Wieviele unserer Kunden heißen mit Vornamen „Michael“? SELECT Count(Vorname) FROM Kunde WHERE Vorname=’Michael’ Hinweis: „Count(Vorname)“ muss eng zusammengeschrieben werden! Beispiel11: Wieviel muß jemand bezahlen der alle Bücher vom Autor „Arge“ kauft? SELECT SUM(Preis) FROM Buch WHERE Autor = ‘Arge’ Beispiel12: Durchschnittliche Kosten eines Buches vom Autor „Arge“? SELECT AVG(Preis) FROM Buch WHERE Autor = ‘Arge’ Beispiel13: Wieviel kostet das billigste und teuerste Buch in der Datenbank SELECT MIN(Preis), MAX(Preis) FROM Buch Beispiel14: Verlag, Summe der Preise der Bücher pro Verlag gruppiert? SELECT Verlag, SUM(Preis) FROM Buch GROUP BY Verlag Hinweis: Die GROUP-BY Klausel fasst alle Datensätze zusammen, die in diesem Fall das Gruppierungskriterium selber Verlag erfüllen. Natürlich lassen sich mit SQL nicht nur Abfragen durchführen sondern auch andere Vorgänge ausführen wie etwa: - DELETE (löschen), - INSERT INTO (Datensätze einfügen), - UPDATE (ändern), - CREATE TABLE - … vgl.: http://www.usegroup.de/software/phptutorial/eine_kleine_sql-referenz.html (2011-12-06) 3