6.4. Abfragen unter ACCESS history menue Letztmalig dran rumgefummelt: 09.06.23 00:24:23
Abfragen sind Fragen, die in bezug auf den vorhandenen Datenbestand wahre Aussagen liefern. Der kleine Bruder der Datenbankabfrage ist der einfache Suchvorgang - auch schon sortieren kann Aussagen liefern. Allgemein ist in der Datenbanktechnik dafür die Bezeichnung SQL - System Query Language - üblich. Natürlich kann das Ergebnis nur so richtig sein, wie die Daten korrekt gehalten wurden und die Datenbankanfrage richtig formuliert wurde. Merke: Falsche Daten liefern zwangsläufig falsche Ergebnisse und/oder Aussagen (die aus Sicht der Datenbank natürlich korrekt sind)!
0. Der Aufgabenbereich
1. Allgemeine Arbeit mit ACCESS-Filtern
2. SELECT - FROM - WHERE ... - PROJEKTION und VIEW
3. Searchconditions (Suchkriterien, Suchbedingungen)
4. Funktionen
5. Gruppierungen und Sortierungen
6. JOINS
7. Mengenoperationen
8. Subqueries

Datenbanken

Datenbankabfrage mit ACCESS - das Logo

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Wissen für Fortgeschrittene der Informatik

Quellen:
  • Datensätze, die gewissen Kriterien entsprechen, können selektiert werden, dabei können auch noch die Felder angegeben werden, die zur Ausgabe gelangen sollen
  • hauptsächlich erfolgt die Ergebnisrepräsentation durch einen View, dieser kann jedoch in Form eines Berichts auch auf den Drucker oder in eine Datei mit gewünschtem Format umgeleitet werden
  • Abfragen repräsentieren immer ein Gesamtergebnis, d. h. alle Datensätze (mit den entsprechend gewählten Feldnamen), die die Abfragebedingungen erfüllen, werden auf einmal angezeigt und evtl. in einer Datei abgespeichert (Abfragen sind SQL-kompatibel) - eine Abfrage auf eine Abfrage ist möglich (Queries können aber auch genestet werden - Subqueries)
  • wird eine Abfrage über mehrere Tabellen geführt, so wird die entsprechende Referenz temporär über die Schlüssel ermittelt - man spricht vom JOIN
  • dazu ist kein relationales Gefüge notwendig - es darf aber vorhanden sein
  • einzige Rahmenbedingung: in jeder Tabelle ist mindestens eine eindeutige Entität zur anderen enthalten (Parent - Child-Konventionen beachten)
  • die Ausgabe der Ergebnisse kann wahlweise in einer Tabelle (View) mit einer anzugebenden Menge von Feldnamen vorgenommen, oder als Datei hinterlegt werden
  • dabei können, im Gegensatz zur "Gehe zu ..."-Positionierung, bzw. zur Suchfunktion, auch Verknüpfungen der Abfragebedingungen erfolgen - es kann gleichzeitig nach mehreren Kriterien gefragt werden - unter relationalen Datenbanken wie FoxPro eben auch über mehrere Relationen (Tabellen) hinweg!!!
  • Suchkriterien können mathematische und logische Operationen enthalten, müssen jedoch eindeutig spezifiziert sein
  • der Aufbau der SQLs oder hier RQBEs erfolgt durch Klauseln - einige notwendig - andere optional.

... bevor es losgeht:

  • welche Tabellen werden gebraucht?

  • welche Tabellen müssen über welche Felder miteinander verknüpft werden?

  • welche Datenfelder sollen angezeigt werden?

  • soll sortiert werden? Wenn JA, nach welchem Feld in welcher Reihenfolge?

  • sollen nur bestimmte Datensätze ausgewählt werden? Wenn JA, nach welchem Kriterium?

  • sollen bestimmte Funktionen verwendet werden? Wenn JA, welche und wie?

Über die allgemeinen Klauseln werden in allen Datenbanksystemen die Anfragen durchgeführt - sie lauten:
SELECT Projektion der Zieldaten Auswahl der Spalten, welche in das Ergebnis einbezogen werden sollen notwendige Klausel
FROM Assoziation der Zieldaten Auswahl der Entities sowie Art ihrer Verbindung, welche in das Ergebnis einbezogen werden sollen notwendige Klausel
WHERE Selektion der Zieldaten Auswahl der Entities sowie Art ihrer Verbindung, welche in das Ergebnis einbezogen werden sollen meist notwendige Klausel

weitere Klauseln können folgen:

GROUP BY Gruppierung der Zieldaten Auswahl der Anordnung der Zieldaten, welche in das Ergebnis einbezogen werden sollen und Voraussetzung für präzise Aggrefatfunktionen (Statistik)
ORDER BY Sortierung der Zieldaten  

bei den Ergebnissen von Datenbankfiltern spricht man von Zieldatensätzen - zum Beispiel:

  • wer wohnt von den erfassten Personen in Berlin?
  • wer verfügt über das höchste Bruttoeinkommen?
  • welche Arztpraxen haben von 9.00 bis 12.00 Uhr jeweils mittwochs nicht geöffnet?
  • welche Buslinien halten Berlin Alexanderplatz
weitere Informationen sind hier aufgeführt - hier wird's aber gleich sehr tief

Grafische Darstellung der Selektion aus einem Datenbestand (wähle die Spalten, welche eine oder mehrere Searchconditions erfüllen zum VIEW aus)

Grafische Darstellung der Projektion aus einem Datenbestand (das sind die Spalten des Quelldatenbestandes oder eines SQL-definierten Ausdrucks, welcher zum VIEW gefügt werden soll)

Grafische Darstellung des Joins aus mehreren verknüpften Datenbeständen (Temporäre Verbindung der an der SQL beteiligten Entities)


0. Die Aufgabereiche history menue scroll up
Die einzelnen Aufgabenbereiche haben einen unterschiedlichen Schwierigkeitsgrad und dienen sowohl zum Erlernen der Arbeit mit SQL unter ACCESS, vermitteln die Verbindung (sozusagen den relationalen Übergang zur Standard-SQL, sollen aber auch durchaus Aufgaben zum Lösen darstellen.
Übung zur Demonstration Übung 1 - noch ohne relationale Verknüpfungen Übung 2 - noch ohne relationale Verknüpfungen

Demonstrationsübung zur Abfrage von ACCESS-Datenbanken

1. Aufgabenfeld

2. Aufgabenfeld


1. Allgemeine Arbeit mit ACCESS-Filtern history menue scroll up
Aufgabe der Datenbankabfragen ist es, mit Hilfe von bekannten Informationen nicht auf unbekannte, aber auf schwer zu ermittelnde Informationen zu schließen! Abfragen ziehen durch Suche nach Übereinstimmung mit Vergleichsmerkmalen Informationen aus Datenbanken und müssen ganz genau formuliert sein. Ungenaue Fragen liefern auch ungenaue Ergebnisse! Man sucht mit Bekanntem nach Unbekanntem - und nach Neuem, also der Datenbasis selbst Unbekanntem (das sind dann Berechnungen).
Sie sind spezifische Fragestellungen an Datenbanken unter Verwendung der Merkmale und der einheitlichen Dateneineintragung mit einer oder mehreren Suchbedingungen. Die SQL-Ansicht wird insbesondere bei der Erstellung komplexer Abfragen mit vielen logischen Bedingungen bedeutsam.
Abfragebeispiel:

Die umgangssprachliche Frage: "Welches Auto fährt James Bond?" muss sich auf die Merkmale der Datenbank beziehen und man muss die Merkmale herausfinden, die etwas Bekanntes enthalten und nach denen gesucht ist. Die genaue, auf den vorhandenen Datenbestand bezogene Frage lautet:
"Welchen Kfz-Typ fährt der Kraftfahrer mit dem Namen "Bond" und dem Vornamen "James"?

Fragestellung an Datenbanken - eben nicht umgangssprachlich!

Gesucht werden darf also nicht auf dem Kfz-Typ - Datenfeld, gesucht werden muss auf Name und Vorname - das ergibt dann evtl. eine Referenz auf das Kfz-Typ - Datenfeld!!!

Umschalten und Editieren in der SQL-Ansicht

ACCESS ist sehr wohl in der Lage, alle Funktionen der Standard-SQL nachzubilden, wobei allerdings recht eigenwillige Notationen für die einzelnen  Klauseln, Ausdrücke, Funktionen und Parameter gelten

  • Semikolon nach jeder Zeile
  • viele - vor allem überflüssige Klammern
  • Objektverwaltung durch eckige Klammern

Hier ist der Umschalter auf die SQL zu suchen

Umschalten

Fertig

... auch im Text-Editor kann eine SQL-Anweisung für ACCESS erstellt werden

   

Abfrage-Button in der Management-Konnsole einschalten

Auswahl der in die Abfrage einbezogenen Entities

Einstellen der Sicht auf die Entwurfsansicht

Einstellen der Sicht auf die Entities

Herunterziehen der Rojektionsfelder

Verankern der Projektionsfelder im PROJEKTIONsbereich

Projektionsfelder kompettieren - das sind alle Felder, auf denen etwas ausgewertet und/oder die angezeigt werden sollen (VIEW)

... der Wohnort "München" wird aus dem VIEW ausgeschalten - in der PROJEKTION bleibt er bestehen

VIEW auf die Datenbankafrage - also das fretige Ergebnis

Zuschalten der Funktionen

   

2. Selektion, Projektion, JOIN und VIEW history menue scroll up
Aufgabe der Datenbankabfragen ist es, mit Hilfe von bekannten Informationen nicht auf unbekannte, aber auf schwer zu ermittelnde Informationen zu schließen! Abfragen ziehen durch Suche nach Übereinstimmung mit Vergleichsmerkmalen Informationen aus Datenbanken und müssen ganz genau formuliert sein. Ungenaue Fragen liefern auch ungenaue Ergebnisse!
Sie sind spezifische Fragestellungen an Datenbanken unter Verwendung der Merkmale und der einheitlichen Dateneineintragung mit einer oder mehreren Suchbedingungen.

Man unterscheidet in der Datenbankarbeit:
  • PROJEKTION <FUNCTION>
  • JOIN
  • SELEKTION
  • SEARCHCONDITION
  • GROUP BY
  • ORDER BY
  • HAVING
  • FUNCTION
Allgemeine Ansicht einer Projektion:

Fragestellung an Datenbanken - eben nicht umgangssprachlich!


3. Searchconditions - Suchkriterien - Abfragebedingungen history menue scroll up
Searchconditions sind die zeilenbezogenen Reduzierungen des Abfrageergebnisses. Mit der Projektion wird festgelegt, welche Attribute (Merkmale, Feldnamen) in den VIEW einbezogen werden, die Selektion reduziert die Menge der Zieldatensätze auf die Menge der Zieldatensätze, welche die vorgegebene Searchcondition erfüllen und liefern Ziel- oder Ergebnisdatensätze mit folgenden Anzahlen:
  • alle Datensätze erfüllen die Suchbedingung (gesucht sind alle Studenten, die eine Matrikelnummer haben - dies sind alle!)
  • kein Datensatz erfüllt die Suchbedingung (gesucht sind alle Studenten, die mit Namen "Rumpelstielzchen" heißen)
  • eine Teilmenge zwischen 1 und der maximalen Datensatzzahl erfüllt die Suchbedingung (gesucht sind alle Personen der Studentendatenbank, deren Vorname ein "e" enthält)

 

Fragestellung an Datenbanken - eben nicht umgangssprachlich!

  • als Feldname muss immer die bekannte Größe eingesetzt werden
  • Datumsangaben in Hochkommata gesetzt werden - also: Datum ist gleich #23.05.86#
    • Datumsangaben müssen immer vollständig sein - also #04.03.1967#
    • Datumsbereiche müssen mit vollständigen Grenzdaten angegeben werden
  • Logische Bedingungen auf den Inhalt WAHR oder FALSCH - also: FAHRZEUG vorhanden ist gleich WAHR
  • das Sternchen ("*") fungiert als sogenannter "Joker" und steht für eine beliebige Menge beliebiger Zeichen
    • *e* findet alle Einträge, welche im Vergleichsmuster an beliebiger Stelle ein "e" enthalten - also: Meyer, Lehrer. leer - nicht aber: Hoppla, Dortmund oder blauäugig, da hier das Suchkriterium nicht erfüllt wird
    • Me* findet alle Einträge, welche im Vergleichsmuster mit der Zeichenfolge "Me" beginnen - also: Meyer, Meinhardt, Meerrettich - nicht aber: Hoppelpoppel oder Fußball, da hier das Suchkriterium nicht erfüllt wird
    • *t findet alle Einträge, welche im Vergleichsmuster mit "t" enden - also: Camembert, Robert - nicht aber: Blumentopf oder Firlefanz, da hier das Suchkriterium nicht erfüllt wird
  • das Fragezeichen ("?") fungiert als sogenannter "Wildcard" und steht für genau ein beliebiges Zeichen
    • ??? findet alle Einträge, welche im Vergleichsmuster genau aus drei Zeichen bestehen - also: Luv, Lee - nicht aber: Kreuzung, Hoppla, Ei oder M , da hier das Suchkriterium nicht erfüllt wird
    • M?y* findet alle Einträge, welche im Vergleichsmuster mit "M" beginnen und als drittes Zeichen ein "y" führen - also: Meyer
Komplexe mehrfache logische Bedingungen müssen entsprechend den Vorrangregln NICHT, UND, ODER, XOR geklammert werden

4. Funktionen history menue scroll up
Der Funktionsschalter befindet sich sinnigerweise im Speed-Button-Menü als Summenzeichen (siehe Punkt 1 unter Funktionsschalter

Zuschaltung der Funktionen

  • als Feldname muss immer die bekannte Größe eingesetzt werden
  • Datumsangaben in Hochkommata gesetzt werden - also: Datum ist gleich #23.05.86#
    • Datumsangaben müssen immer vollständig sein - also #04.03.1967#
    • Datumsbereiche müssen mit vollständigen Grenzdaten angegeben werden
  • Logische Bedingungen auf den Inhalt WAHR oder FALSCH - also: FAHRZEUG vorhanden ist gleich WAHR
  • das Sternchen ("*") fungiert als sogenannter "Joker" und steht für eine beliebige Menge beliebiger Zeichen
    • *e* findet alle Einträge, welche im Vergleichsmuster an beliebiger Stelle ein "e" enthalten - also: Meyer, Lehrer. leer - nicht aber: Hoppla, Dortmund oder blauäugig, da hier das Suchkriterium nicht erfüllt wird
    • Me* findet alle Einträge, welche im Vergleichsmuster mit der Zeichenfolge "Me" beginnen - also: Meyer, Meinhardt, Meerrettich - nicht aber: Hoppelpoppel oder Fußball, da hier das Suchkriterium nicht erfüllt wird
    • *t findet alle Einträge, welche im Vergleichsmuster mit "t" enden - also: Camembert, Robert - nicht aber: Blumentopf oder Firlefanz, da hier das Suchkriterium nicht erfüllt wird
  • das Fragezeichen ("?") fungiert als sogenannter "Wildcard" und steht für genau ein beliebiges Zeichen
    • ??? findet alle Einträge, welche im Vergleichsmuster genau aus drei Zeichen bestehen - also: Luv, Lee - nicht aber: Kreuzung, Hoppla, Ei oder M , da hier das Suchkriterium nicht erfüllt wird
    • M?y* findet alle Einträge, welche im Vergleichsmuster mit "M" beginnen und als drittes Zeichen ein "y" führen - also: Meyer


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 30. März 2009

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist