Informatik 9, Datenbanken Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine ___________________________________. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt: ______________ _____________ Eine ________________ bedeutet eine Auswahl von Datensätzen (Zeilen) in der Datentabelle mit bestimmten Eigenschaften (z. B. Sparte = ’Lebensmittel’). Eine _________________ wählt bestimmte Spalten in der Datentabelle aus (z. B. Kunde und Warenbezeichnung). In der Regel werden beide Grundverfahren miteinander kombiniert. Alle Abfragen werden in der werkzeugunabhängigen Datenbankabfrage- und Datenmanipulationssprache SQL (engl. „Structured Query Language“) formuliert. Informatik 9, Datenbanken Abfragen, Grundbausteine: SQL Beispiel: Erstelle eine Liste aller Waren, die mehr als 5 € gekostet haben, mit ihren Preisen. SELECT Warenbezeichnung, Preis FROM einkauf WHERE Preis > 5; Weitere Beispiele für Bedingungen: Warenbezeichnung = ’Kinokarte’ NOT(Sparte = ’Unterhaltung’) (Kaufdatum = #8/26/2007#) AND (Zahlung <> ’bar’) (Sparte = ’Kleider’) OR (Sparte = ’Sport’) Mit dem Zusatz ORDER BY Preis wird die Ergebnistabelle nach der genannten Spalte aufsteigend geordnet. Der Zusatz ORDER BY Preis DESC ordnet in absteigender Reihenfolge. Informatik 9, Datenbanken Abfragen, Grundbausteine: Aufgaben Beantworte die folgenden Aufgaben mit direkt formulierten SQL-Abfragen an die Datenbank Kaufdaten. Notiere dir den SQL-Abfragetext. 1. Liste die Bezeichnungen aller gekauften Waren mit ihren Preisen auf. 2. Liste alle Kosmetikartikelbezeichnungen auf. 3. Gib eine Liste aller Waren in alphabetischer Reihenfolge aus. 4. Liste die Daten aller Einkäufe vom 18.3.2006 auf. 5. Welche Produkte hat Nicole Gütling eingekauft? 6. Welche Lebensmittel wurden vor dem 1.1.2007 gekauft? 7. Welche Waren, die billiger als 20 € waren, wurden nicht bar bezahlt? 8. Liste alle Waren auf, die in der Zeit vom 13.9.07 bis 20.9.07 gekauft und mit Karte bezahlt wurden. 9. Welches Produkt war am teuersten? 10. Welche Waren wurden bei „Brutto Nürnberg“ gekauft? Liste sie in alphabetischer Reihenfolge auf. 11. Welche Kunden haben am 5.9.2007 bei „Brutto Nürnberg“ gekauft? 12. Martina Groß und Oliver Gross wohnen im gleichen Haus. Liste alle Waren auf, die sie gekauft haben. 13. Liste alle Waren jeweils mit dem zugehörigen Preis und Geschäft auf, die von männlichen Kunden für mehr als 20 € gekauft wurden. Die Liste soll nach den Preisen sortiert sein. Lebensmittel sollen ausgeschlossen werden. 14. Wer hat am meisten Geld ausgegeben? Probiere aus, ob ein Datum auch in einem anderen Format als oben genannt (#8/26/2007#) angegeben werden kann. Muss die Spalte, nach der geordnet wird, in der SELECT-Klausel vorkommen? Kann auch nach mehreren Spalten geordnet werden? Welche Auswirkung hat die Reihenfolge der angegebenen Sortierspalten? Informatik 9, Datenbanken Abfragen: Grundbausteine (Lösung für MSAccess) Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine neue Tabelle. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt: Projektion Selektion Eine Selektion bedeutet eine Auswahl von Datensätzen (Zeilen) in der Datentabelle mit bestimmten Eigenschaften (z. B. Sparte = ’Lebensmittel’). Eine Projektion wählt bestimmte Spalten in der Datentabelle aus (z. B. Kunde und Warenbezeichnung). In der Regel werden beide Grundverfahren miteinander kombiniert. Alle Abfragen werden in der werkzeugunabhängigen DatenbankabfrageDatenmanipulationssprache SQL (engl. „Structured Query Language“) formuliert. und Informatik 9, Datenbanken Abfragen, Grundbausteine: SQL (Lösung für MSAccess) SELECT Warenbezeichnung, Preis Auswahl bestimmter Spalten (Projektion) FROM einkauf WHERE Preis > 5; Auswahl der Datensätze (Selektion) über eine Bedingung Weitere Beispiele für Bedingungen: Warenbezeichnung = ’Kinokarte’ NOT(Sparte = ’Unterhaltung’) (Kaufdatum = #8/26/2007#) AND (Zahlung <> ’bar’) (Sparte = ’Kleider’) OR (Sparte = ’Sport’) Mit dem Zusatz ORDER BY Preis wird die Ergebnistabelle nach der genannten Spalte aufsteigend geordnet. Der Zusatz ORDER BY Preis DESC ordnet in absteigender Reihenfolge. Abfragen, Grundbausteine: Aufgaben (Lösungen) Beantworte die folgenden Aufgaben mit direkt formulierten SQL-Abfragen an die Datenbank Kaufdaten. Notiere dir den SQL-Abfragetext. 1. Liste die Bezeichnungen aller gekauften SELECT Warenbezeichnung, Preis Waren mit ihren Preisen auf. FROM einkauf; 2. Liste alle Kosmetikartikelbezeichnungen SELECT Warenbezeichnung auf. FROM einkauf WHERE Sparte = ’Kosmetik’; 3. Gib eine Liste aller Waren in SELECT Warenbezeichnung alphabetischer Reihenfolge aus. FROM einkauf ORDER BY Warenbezeichnung; Informatik 9, Datenbanken 4. Liste die Daten aller Einkäufe vom 18.3.2006 auf. 5. Welche Produkte hat Nicole Gütling eingekauft? 6. Welche Lebensmittel wurden vor dem 1.1.2007 gekauft? 7. Welche Waren, die billiger als 20 € waren, wurden nicht bar bezahlt? 8. Liste alle Waren auf, die in der Zeit vom 13.9.07 bis 20.9.07 gekauft und mit Karte bezahlt wurden. 9. Welches Produkt war am teuersten? 10. Welche Waren wurden bei „Brutto Nürnberg“ gekauft? Liste sie in alphabetischer Reihenfolge auf. 11. Welche Kunden haben am 5.9.2007 bei „Brutto Nürnberg“ gekauft? 12. Martina Groß und Oliver Gross wohnen im gleichen Haus. Liste alle Waren auf, die sie gekauft haben. SELECT * FROM einkauf WHERE Kaufdatum = #3/18/2006#; Das Zeichen „*“ steht abkürzend für die Liste aller Spaltennamen. SELECT Warenbezeichnung FROM einkauf WHERE Kunde = ’Nicole Gütling’; SELECT Warenbezeichnung FROM einkauf WHERE Sparte = ’Lebensmittel’ AND Kaufdatum < #1/1/2007#; SELECT Warenbezeichnung FROM einkauf WHERE Preis < 20 AND Zahlungsart <> ’bar’; SELECT Warenbezeichnung FROM einkauf WHERE Kaufdatum >= #9/13/2007# AND Kaufdatum <= #9/20/2007# AND Zahlungsart = ’Karte’; SELECT Warenbezeichnung FROM einkauf ORDER BY Preis DESC; SELECT Warenbezeichnung FROM einkauf WHERE Geschäft = ’Brutto Nürnberg’ ORDER BY Warenbezeichnung; SELECT Kunde FROM einkauf WHERE Geschäft = ’Brutto Nürnberg’ AND Kaufdatum = #9/5/2007#; SELECT Warenbezeichnung FROM einkauf WHERE Kunde = ’Martina Groß’ OR Kunde = ’Oliver Gross’; SELECT Warenbezeichnung, Preis, Geschäft FROM einkauf WHERE Geschlecht = ’m’ AND Preis > 20 AND Sparte <> ’Lebensmittel’ ORDER BY Preis; 13. Liste alle Waren jeweils mit dem zugehörigen Preis und Geschäft auf, die von männlichen Kunden für mehr als 20 € gekauft wurden. Die Liste soll nach den Preisen sortiert sein. Lebensmittel sollen ausgeschlossen werden. 14. Wer hat am meisten Geld ausgegeben? SELECT Kunde, Preis FROM einkauf ORDER BY Kunde; Diese Lösung erfordert zum jetzigen Zeitpunkt eine Auswertung per Hand und motiviert zur Einführung der Aggregatfunktionen. Möglich ist es auch, nach „Preis“ absteigend zu ordnen. Informatik 9, Datenbanken Probiere aus, ob ein Datum auch in einem anderen Format als oben genannt ( #8/26/2007# ) angegeben werden kann. (produktspezifisch) Muss die Spalte, nach der geordnet wird, in der SELECT-Klausel vorkommen? (nein) Kann auch nach mehreren Spalten geordnet werden? (ja) Welche Auswirkung hat die Reihenfolge der angegebenen Sortierspalten? (Legt 1., 2., … Sortierkriterium fest.)