Microsoft Access 2010 SQL nutzen
S(tructured)Q(uery)L(anguage)... ist eine strukturierte Abfragesprache für relationale Datenbanken. besteht aus Befehlen, die beschreiben, welche Aktion in der Datenbank ausgeführt werden soll. Access 2010 - Einführung, 04.06.13 Seite 2
Informationen im Internet http://office.microsoft.com/de-de/access-help/einfuhrung-inaccess-sql-ha010341468.aspx http://www.sql-und-xml.de/sql-tutorial/ http://sql.lernenhoch2.de/lernen/ http://de.wikibooks.org/wiki/einf%c3%bchrung_in_sql http://www.schulserver.hessen.de/darmstadt/lichtenberg/ SQLTutorial/ Access 2010 - Einführung, 04.06.13 Seite 3
besteht aus... DDL (Data Definition Language). Definition des Datenbankschemas. Tabellen und deren Relationen untereinander erzeugen und verändern. DML (Data Manipulation Language). Datenmanipulation. Daten auswählen und bearbeiten. DCL (Data Controlling Language). Rechteverwaltung. Transaktionsprotokoll. Sicherheit von Daten. Access 2010 - Einführung, 04.06.13 Seite 4
in Access DDL (Data Definition Language). Die Entwurfsansicht einer leeren Abfrage ist geöffnet. Abfragetools Entwurf Datendefinition. DML (Data Manipulation Language). Auswahl- und Aktionsabfragen. Union-Abfragen. DCL (Data Controlling Language). Nicht vorhanden. Access 2010 - Einführung, 04.06.13 Seite 5
SQL-Anweisungen... können sich über mehrere Zeilen erstrecken. enden immer mit einem Semikolon. werden immer von links nach rechts gelesen. beginnen immer mit einem SQL-Befehl. beachten nicht die Groß-und Kleinschreibung von SQL- Befehlen. Access 2010 - Einführung, 04.06.13 Seite 6
in Access SQL-Ansicht der Abfragen. Datensatzquelle von Listen in Formularen. Datensatzquelle von Formularen und Berichten. Access 2010 - Einführung, 04.06.13 Seite 7
Datensatzherkunft von Listenfeldern Access 2010 - Einführung, 04.06.13 Seite 8
Datensatzquelle von Berichten / Formularen Access 2010 - Einführung, 04.06.13 Seite 9
Datensatzherkunft / Datensatzquelle Mit Hilfe des Pfeils nach unten am rechten Rand wird eine Liste aller Tabellen und Abfragen in der geöffneten Datenbank angezeigt. Mit Hilfe eines Klicks kann ein Listenelement ausgewählt werden. Mit Hilfe der Schaltfläche mit den drei Punkten wird die Entwurfsansicht einer Abfrage geöffnet. In der SQL-Ansicht kann die Datenquelle festgelegt werden. Access 2010 - Einführung, 04.06.13 Seite 10
SQL-Ansicht einer vorhandenen Abfrage Die Abfrage ist in der Entwurfsansicht geöffnet. Registerkarte Start ist aktiv. Klick auf Ansicht SQL-Ansicht in der Gruppe Ansichten. Access 2010 - Einführung, 04.06.13 Seite 11
SQL-Anweisung ausführen Die Abfrage ist in der Entwurfs- oder SQL-Ansicht geöffnet. Abfragetools Entwurf. Klick auf den Befehl Ausführen in der Gruppe Ergebnisse. Access 2010 - Einführung, 04.06.13 Seite 12
Abfrage in SQL erstellen Registerkarte Erstellen ist aktiv. Abfrageentwurf in der Gruppe Abfragen. Oder für eine Datenquelle eines Listenfeldes: Das Eigenschaften-Fenster ist geöffnet. Klick auf die Schaltfläche mit den drei Punkten. Dialog Tabelle anzeigen schließen. Registerkarte Abfragetools Entwurf ist aktiv. Klick auf SQL-Ansicht in der Gruppe Ergebnisse. Access 2010 - Einführung, 04.06.13 Seite 13
SQL-Editor in Access ist ein Text-Editor, in dem die SQL-Anweisungen mit Hilfe der Tastatur geschrieben werden. bietet keine Intellisense. Access 2010 - Einführung, 04.06.13 Seite 14
Schriftgröße einstellen Klick auf Datei Optionen. Klick auf Objekt-Designer. In der Kategorie Abfrageentwurf kann die Schriftart und -größe eingestellt werden. Anschließend muss der SQL-Editor geschlossen und wieder geöffnet werden. Access 2010 - Einführung, 04.06.13 Seite 15
Auswahlabfragen... wählen Daten aus ein oder mehreren Tabellen aus. sortieren Informationen aus ein oder mehreren Tabellen. filtern Informationen in Abhängigkeit von bestimmten Kriterien. berechnen Daten aus vorhandenen Informationen. geben ein leeres Datenblatt zurück, falls keine passenden Daten vorhanden sind. Access 2010 - Einführung, 04.06.13 Seite 16
Aufbau einer Auswahlabfrage SQL-Befehl Feldliste Datenquelle Bedingung Sortierung; SELECT Tabelle.Feld / * FROM Tabelle WHERE Kriterium ORDER BY Tabelle.Feld; Access 2010 - Einführung, 04.06.13 Seite 17
Alle Felder aus einer Tabelle SELECT * FROM tblmitarbeiter; Wähle (SELECT) alle Felder (*) aus (FROM)... Das Sternchen ist ein Platzhalter für alle Felder einer Tabelle. Dem Schlüsselwort FROM folgt der Name der Tabelle. Access 2010 - Einführung, 04.06.13 Seite 18
Felder aus einer Tabelle SELECT Vorname, Nachname, Telefon FROM tblmitarbeiter; Dem Befehl SELECT folgt eine Auflistung der gewünschten Felder einer Tabelle. Es muss mindestens ein Feld oder das Sternchen angegeben werden. Die einzelnen Felder werden durch ein Kommata getrennt. Die Felder werden in der gleichen Reihenfolge in der Datenblattansicht angezeigt. Access 2010 - Einführung, 04.06.13 Seite 19
Felder aus einer Tabelle SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter; Der Punkt verbindet ein Tabellennamen mit einem darin definierten Feldnamen. Eckige Klammern begrenzen Feld- und Tabellennamen, wenn diese Leerzeichen enthalten. Access 2010 - Einführung, 04.06.13 Seite 20
Hinweise Der Feldname muss in der angegebenen Tabelle definiert sein. Andernfalls wird ein Fenster zur Parametereingabe geöffnet. In Access wird die Groß- und Kleinschreibung bei Tabellenund Feldnamen nicht beachtet. Um spätere Fehler zu vermeiden, sollte der Tabellenname so wie im Navigationsbereich angegeben und der Feldname so wie in der Entwurfsansicht der Tabelle geschrieben, genutzt werden. Access 2010 - Einführung, 04.06.13 Seite 21
Sortierung von... Zahlen. Datums- / Zeitwerten. Die Sortierung ist in Access abhängig von der intern gespeicherten Ganzzahl. Text. Die Sortierung erfolgt in Access in Abhängigkeit der ausgewählten Sprache und regionalen Einstellungen des Computers. Eine abweichende Einstellung kann mit Hilfe von Datei Optionen Allgemein in dem Bereich Datenbank erstellen eingestellt werden. Access 2010 - Einführung, 04.06.13 Seite 22
Daten aufsteigend sortieren SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter ORDER BY tblmitarbeiter.nachname, tblmitarbeiter.vorname; Dem Befehl ORDER BY folgt eine Liste von Feldern nach denen die Daten sortiert werden. Standardmäßig werden die Daten aufsteigend sortiert (ASC). In diesem Beispiel werden die Daten zuerst nach dem Nachnamen aufsteigend sortiert und anschließend nach dem Vornamen. Access 2010 - Einführung, 04.06.13 Seite 23
Daten absteigend sortieren SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter ORDER BY tblmitarbeiter.nachname, tblmitarbeiter.vorname DESC; Dem Befehl ORDER BY folgt eine Liste von Feldern nach denen die Daten sortiert werden. Dem Feldnamen folgt für eine absteigende Sortierung das Schlüsselwort DESC. Die Angabe bezieht sich immer nur auf das davorstehende Feld. In diesem Beispiel werden die Daten zuerst nach dem Nachnamen aufsteigend und anschließend nach dem Vornamen absteigend sortiert. Access 2010 - Einführung, 04.06.13 Seite 24
SQL-Anweisung speichern <STRG>+<S>. Datei Objekt speichern unter. In dem Dialog Speichern unter wird in dem ersten Textfeld der Name der Abfrage eingegeben. Jede Bezeichnung in Access ist eindeutig. Der Name sollte das Ergebnis der Abfrage widerspiegeln. Access 2010 - Einführung, 04.06.13 Seite 25
SQL-Editor schließen Klick auf das Kreuz in der oberen rechten Ecke. Falls die Struktur der Abfrage nicht gespeichert ist, wird eine Warnmeldung ausgegeben. Access 2010 - Einführung, 04.06.13 Seite 26
SQL-Anweisung ausführen Doppelklick auf den gewünschten Abfrage-Namen in dem Navigationsbereich. Der Befehl Öffnen im Kontextmenü zu einem Abfrage-Namen. Access 2010 - Einführung, 04.06.13 Seite 27
Filterung von Daten... durch Angabe von Bedingungen, die die Daten erfüllen müssen. durch die Einschränkung der Anzahl von Datensätzen. Access 2010 - Einführung, 04.06.13 Seite 28
Max Anzahl Datensätze SELECT TOP 5 tblgericht.gerichtname, tblgericht.preis FROM tblgericht ORDER BY tblgericht.preis DESC; SELECT TOP 10 PERCENT tblgericht.gerichtname, tblgericht.preis FROM tblgericht ORDER BY tblgericht.preis DESC; Dem Befehl TOP folgt eine Ganzzahl oder eine Prozentangabe. Entsprechend der Angabe wird eine bestimmte Anzahl von Datensätze zurückgegeben. Durch die Sortierung können die höchsten oder niedrigsten Werte angezeigt werden. Access 2010 - Einführung, 04.06.13 Seite 29
WHERE-Klausel SELECT tblgericht.gerichtname FROM tblgericht WHERE (tblgericht.vegetarisch = True) ORDER BY tblgericht.gerichtname; Dem Befehl WHERE folgt eine oder mehrere Bedingungen. Es werden nur die Datensätze angezeigt, die die angegebenen Bedingungen erfüllen. Access 2010 - Einführung, 04.06.13 Seite 30
Kriterien / Bedingungen... sind Ausdrücke, die die Daten in einem Feld erfüllen oder nicht. werden mit Hilfe von Operanden und Operatoren erstellt. sind Ausdrücke, die als Ergebnis wahr oder falsch zurück geben. können miteinander zu einem komplexen Ausdruck verknüpft werden. Access 2010 - Einführung, 04.06.13 Seite 31
Operatoren... vergleichen zwei Werte. vergleicht einen Wert mit einer Liste von Werten. überprüft, ob ein Wert in einem bestimmten Bereich liegt. verknüpfen Bedingungen. Access 2010 - Einführung, 04.06.13 Seite 32
Vergleichsoperatoren ist... Operator gleich = ungleich <> kleiner < kleiner gleich <= größer > größer gleich >= Access 2010 - Einführung, 04.06.13 Seite 33
Vergleich von Zahlen ist... Operator Kriterium Ergebnis gleich = 3 = 4 Falsch ungleich <> 3 <> 4 Wahr kleiner < 3 < 4 Wahr kleiner gleich <= 3 <= 4 Wahr größer > 3 > 4 Falsch größer gleich >= 3 >= 4 Falsch Access 2010 - Einführung, 04.06.13 Seite 34
Vergleich von Datums- und Zeitwerte ist... Operator Kriterium Ergebnis gleich = #15.12.2010# = #20.11.2011# Falsch ungleich <> #15.12.2010# <> #20.11.2011# Wahr kleiner < #15.12.2010# < #20.11.2011# Wahr kleiner gleich <= #15.12.2010# <= #20.11.2011# Wahr größer > #15.12.2010# > #20.11.2011# Falsch größer gleich >= #15.12.2010# => #20.11.2011# Falsch Access 2010 - Einführung, 04.06.13 Seite 35
Vergleich von Text ist... Operator Kriterium Ergebnis gleich = "abc" = "ABC" Wahr ungleich <> "abc" <> "ABC" Falsch kleiner < "abc" < "ABC" Falsch kleiner gleich <= "abc" <= "ABC" Wahr größer > "abc" > "ABC" Falsch größer gleich >= "abc" >= "ABC" Wahr Access 2010 - Einführung, 04.06.13 Seite 36
Operanden... werden mit Hilfe von Funktionen berechnet oder mit der Tastatur eingegeben. symbolisieren immer einen Wert von einem bestimmten Datentyp. Access 2010 - Einführung, 04.06.13 Seite 37
Operanden vom Datentyp Zahl SELECT tblgericht.idgericht, tblgericht.preis FROM tblgericht WHERE (tblgericht.preis > 5); SELECT tblgericht.idgericht, tblgericht.preis FROM tblgericht WHERE (tblgericht.preis > 5.5); Der Punkt wird als Dezimaltrennzeichen genutzt. Access 2010 - Einführung, 04.06.13 Seite 38
Operanden vom Datentyp Datum / Uhrzeit SELECT tblbestellung.idbestellung, tblbestellung.bestelldatum, tblbestellung.bestelluhrzeit FROM tblbestellung WHERE (tblbestellung.bestelldatum < #6/1/2013#); SELECT tblbestellung.idbestellung, tblbestellung.bestelldatum, tblbestellung.bestelluhrzeit FROM tblbestellung WHERE (tblbestellung.bestelluhrzeit > #16:00#); Datums- und Zeitwerte werden immer durch ein Hash-Zeichen begrenzt. Datumswerte werden in der Form Monat/Tag/Jahr eingegeben. Access 2010 - Einführung, 04.06.13 Seite 39
Operanden vom Datentyp Text SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter WHERE (tblmitarbeiter.nachname = "Meier"); Text wird durch Anführungsstriche begrenzt. Access 2010 - Einführung, 04.06.13 Seite 40
Hat das Feld einen undefinierten Wert? SELECT tblgericht.gerichtname, tblgericht.zutatenliste FROM tblgericht WHERE (tblgericht.zutatenliste Is Null); In der Datenblattansicht ist das Feld leer. Der Benutzer hat keinen Wert eingetragen. Access 2010 - Einführung, 04.06.13 Seite 41
Leere Zeichenfolge SELECT tblgericht.gerichtname, tblgericht.zutatenliste FROM tblgericht WHERE (tblgericht.zutatenliste = ""); Das Feld ist vom Datentyp Text. Das Feld hat einen definierten Wert. Das Feld enthält eine leere Zeichenfolge. Die zwei Anführungszeichen symbolisieren eine leere Zeichenfolge. In der Datenblattansicht ist eine leere Zeichenfolge nicht von einem undefinierten Feld zu unterscheiden. Access 2010 - Einführung, 04.06.13 Seite 42
Vergleich mit einer Liste von Werten SELECT tblkunde.anrede, tblkunde.nachname, tblkunde.strassehausnummer, tblkunde.postleitzahl, tblkunde.ort FROM tblkunde WHERE (tblkunde.postleitzahl In ("30161","30163","30167")); IN(param01, param02, ) definiert eine Liste von Vergleichswerten vom Typ Text, Zahl oder Datum / Zeit. Die Liste wird durch die runden Klammern begrenzt. Die Listenelemente werden durch Kommata getrennt. Access 2010 - Einführung, 04.06.13 Seite 43
Wertebereich nutzen SELECT tblbestellung.idbestellung, tblbestellung.bestelluhrzeit FROM tblbestellung WHERE (tblbestellung.bestelluhrzeit Between #12/30/1899 16:0:0# And #12/30/1899 17:0:0#); Between wert And wert entspricht dem Ausdruck >= wert And <= wert. Es können Wertebereich für Felder vom Datentyp Zahl oder Datum / Uhrzeit angegeben werden. Bei einer Uhrzeitangabe muss ein Datumswert gesetzt werden. Access 2010 - Einführung, 04.06.13 Seite 44
Operator Like SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter WHERE (tblmitarbeiter.nachname Like "M?ier"); Das Feld wird mit einem Textmuster verglichen. Das Textmuster wird durch Anführungszeichen begrenzt. Das Muster besteht aus alphanumerischen Zeichen, Ziffern und Platzhaltern. Access 2010 - Einführung, 04.06.13 Seite 45
Beispiele Kriterium Ersetzung Inhalt der Datenfelder im Ergebnis Wie "Meier" = "Meier" Meier Nicht Wie "Meier" <> "Meier" Scholz, Müller, Meyer etc. Wie "Me?er"? = ein Zeichen Meyer, Meier, etc. Wie "*-1234" * = x Zeichen oder 0 A-1234, -1234, ABC-1234, etc. Wie "30###" # = eine Zahl 30156, 30126, 30457, etc. Wie "M[ae][iy]er" Liste von Zeichen Maier, Mayer, Meier, Meyer Wie "[A-D]-1234" Bereich von Zeichen A.1234, B-1234, C-1234, D-1234 Wie "[!M]*"! = Nicht Scholz, Andersen, Stein etc. Access 2010 - Einführung, 04.06.13 Seite 46
Platzhalter für ein oder mehrere Zeichen Das Sternchen ersetzt eine beliebige Anzahl von Zeichen. Das Fragezeichen ersetzt ein beliebiges Zeichen. Das #-Zeichen ersetzt eine beliebige Ziffer von 0 9. Access 2010 - Einführung, 04.06.13 Seite 47
Platzhalter für eine Liste von Zeichen [ae]. Die eckigen Klammern fassen eine Liste von beliebigen Zeichen zusammen. Ein Zeichen aus der Liste muss an der Position vorkommen. [!ae]. Die eckigen Klammern fassen eine Liste von beliebigen Zeichen zusammen, die an der Position nicht vorkommen dürfen. [o-q]. Die eckigen Klammern fassen einen Bereich von Zeichen zusammen, die an dieser Position vorkommen dürfen. In diesem Beispiel können die Zeichen o, p und q genutzt werden. Access 2010 - Einführung, 04.06.13 Seite 48
Platzhalter nutzen SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter WHERE (tblmitarbeiter.nachname Like "M[!a][iy]er"); Die Platzhalter können an jeder beliebigen Position in jeder beliebigen Kombination genutzt werden. Access 2010 - Einführung, 04.06.13 Seite 49
Negation bei Vergleichen SELECT tblkunde.anrede, tblkunde.nachname, tblkunde.strassehausnummer, tblkunde.postleitzahl, tblkunde.ort FROM tblkunde WHERE (Not (tblkunde.postleitzahl = "30159")); SELECT tblkunde.anrede, tblkunde.nachname, tblkunde.strassehausnummer, tblkunde.postleitzahl, tblkunde.ort FROM tblkunde WHERE (tblkunde.postleitzahl <> "30159"); Access 2010 - Einführung, 04.06.13 Seite 50
Negation bei Ja / Nein-Werten SELECT tblgericht.gerichtname, tblgericht.laktosefrei FROM tblgericht WHERE (Not (tblgericht.laktosefrei=true)); SELECT tblgericht.gerichtname, tblgericht.laktosefrei FROM tblgericht WHERE (tblgericht.laktosefrei=false); Access 2010 - Einführung, 04.06.13 Seite 51
Negation bei undefinierten Werten SELECT tblgericht.gerichtname, tblgericht.zutatenliste FROM tblgericht WHERE (tblgericht.zutatenliste Is NOT Null); Access 2010 - Einführung, 04.06.13 Seite 52
Oder-Verknüpfung SELECT tblmitarbeiter.vorname, tblmitarbeiter.nachname, tblmitarbeiter.telefon FROM tblmitarbeiter WHERE ((tblmitarbeiter.nachname Like "S*") OR (tblmitarbeiter.nachname Like "M*")); In der Entwurfsansicht einer Abfrage stehen die Kriterien in einer Spalte. Eine der Bedingungen muss zutreffen. Access 2010 - Einführung, 04.06.13 Seite 53
Und-Verknüpfung SELECT tblkunde.anrede, tblkunde.nachname, tblkunde.postleitzahl, tblkunde.ort FROM tblkunde WHERE ((tblkunde.anrede="herr") AND (tblkunde.postleitzahl="30159")); In der Entwurfsansicht einer Abfrage stehen die Kriterien in einer Zeile. Alle angegebenen Bedingungen müssen zutreffen. Access 2010 - Einführung, 04.06.13 Seite 54
Mischformen SELECT tblkunde.anrede, tblkunde.nachname, FROM tblkunde WHERE tblkunde.strassehausnummer, tblkunde.postleitzahl, tblkunde.ort (((tblkunde.nachname Like "M*") OR (tblkunde.nachname Like "A*")) AND (tblkunde.postleitzahl="30159")) ; SELECT tblkunde.anrede, tblkunde.nachname, FROM tblkunde WHERE tblkunde.strassehausnummer, tblkunde.postleitzahl, tblkunde.ort (((tblkunde.nachname Like "M*") AND (tblkunde.postleitzahl="30159")) OR (tblkunde.nachname Like "A*")) ; Access 2010 - Einführung, 04.06.13 Seite 55
Relationen... beschreiben Beziehungen zwischen Tabellen. sind Verknüpfungen zwischen Tabellen. werden mit Hilfe von Schlüsselwerten hergestellt. zwischen Tabellen sind häufig 1 : n Beziehungen. Access 2010 - Einführung, 04.06.13 Seite 56
Schlüssel Jeder Datensatz in einer Tabelle hat einen Primärschlüssel. Dieser Schlüssel identifiziert eindeutig eine Zeile in einer Tabelle. Der Primärschlüssel kann in einer anderen Tabelle als Fremdschlüssel genutzt werden. Der Fremdschlüssel ist ein Platzhalter für einen Datensatz in einer übergeordneten Tabelle. Access 2010 - Einführung, 04.06.13 Seite 57
Zuordnung der Tabellen Verkehrsmittel ID Verkehrsmittel Master- / Elterntabelle Detail- / Kindtabelle Fahrzeug ID Fahrzeug Verkehrsmittel Master- / Elterntabelle Detail- / Kindtabelle Marke ID Fahrzeug Markenname Access 2010 - Einführung, 04.06.13 Seite 58
Beispiel Verkehrsmittel ID Verkehrsmittel Fahrzeug ID Fahrzeug Verkehrsmittel ID Verkehrsmittel 1 Schiene 2 Strasse 3 Luft ID Fahrzeug Verkehrsmittel 1 Eisenbahn 1 2 Bus 2 3 Straßenbahn 1 Access 2010 - Einführung, 04.06.13 Seite 59
SQL-Anweisung SELECT Tabelle.Feld / * FROM Tabelle INNER LEFT RIGHT JOIN Tabelle ON Tabelle.Feld = Tabelle.Feld WHERE Bedingung ORDER BY Tabelle.Feld; Access 2010 - Einführung, 04.06.13 Seite 60
Inner-Join-Verknüpfung ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien Access 2010 - Einführung, 04.06.13 Seite 61
Erläuterung Es werden alle Datensätze zurückgeliefert, zu denen mindestens ein passendes Primär- / Fremdschlüsselpaar gefunden wird. Der Primärschlüssel aus der Mastertabelle muss mindestens einmal in der Detailtabelle genutzt werden. Access 2010 - Einführung, 04.06.13 Seite 62
in SQL SELECT tblgericht.gerichtname, tblbestelltegerichte.menge, tblbestelltegerichte.groesse, tblgericht.preis FROM tblbestelltegerichte INNER JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht; Access 2010 - Einführung, 04.06.13 Seite 63
Erläuterung FROM [detailtabelle] INNER JOIN [mastertabelle] verknüpft zwei Tabellen. Dem Schlüsselwort FROM folgt die Kind-Tabelle und dem Schlüsselwort INNER JOIN folgt die Eltern-Tabelle. On [fremdschlüssel] = [primärschlüssel] verknüpft den Primärschlüssel aus der einen Tabelle mit den dazugehörigen Fremdschlüssel in der anderen Tabelle. Der Primärschlüssel identifiziert eindeutig die Eltern eines Kindes. Der Fremdschlüssel ordnet einem Kind genau ein Elternpaar zu. Access 2010 - Einführung, 04.06.13 Seite 64
Left-Join-Verknüpfung ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien Amerika Access 2010 - Einführung, 04.06.13 Seite 65
Erläuterung Es werden alle Datensätze (Zeilen) aus der linken Tabelle angezeigt. Falls vorhandenen, werden die dazugehörigen Informationen aus der rechten Tabelle angezeigt. Zu dem Primärschlüssel aus der linken Tabelle kann kein oder beliebig viele Fremdschlüssel in der rechten Tabelle existieren. Access 2010 - Einführung, 04.06.13 Seite 66
in SQL SELECT tbldienstplan.kalenderwoche, tblmitarbeiter.vorname, tblmitarbeiter.nachname FROM tblmitarbeiter LEFT JOIN tbldienstplan ON tblmitarbeiter.idmitarbeiter = tbldienstplan.mitarbeiter; Access 2010 - Einführung, 04.06.13 Seite 67
Erläuterung FROM [detailtabelle] LEFT JOIN [mastertabelle] verknüpft zwei Tabellen. Dem Schlüsselwort FROM folgt die Kind-Tabelle und dem Schlüsselwort LEFT JOIN folgt die Eltern-Tabelle. On [fremdschlüssel] = [primärschlüssel] verknüpft den Primärschlüssel aus der einen Tabelle mit den dazugehörigen Fremdschlüssel in der anderen Tabelle. Der Primärschlüssel identifiziert eindeutig die Eltern eines Kindes. Der Fremdschlüssel ordnet einem Kind genau ein Elternpaar zu. In diesem Beispiel werden alle Mitarbeiter angezeigt. Falls sie einem Dienst zugeordnet sind, wird dieser angezeigt. Access 2010 - Einführung, 04.06.13 Seite 68
Right-Join-Verknüpfung ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien Access 2010 - Einführung, 04.06.13 Seite 69
Erläuterung Es werden alle Datensätze (Zeilen) aus der rechten Tabelle angezeigt. Falls vorhandenen, werden die dazugehörigen Informationen aus der linken Tabelle angezeigt. Access 2010 - Einführung, 04.06.13 Seite 70
in SQL SELECT tblgericht.gerichtname, tblbestelltegerichte.menge, tblbestelltegerichte.groesse, tblgericht.preis FROM tblbestelltegerichte RIGHT JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht; Access 2010 - Einführung, 04.06.13 Seite 71
Erläuterung FROM [detailtabelle] RIGHT JOIN [mastertabelle] verknüpft zwei Tabellen. Dem Schlüsselwort FROM folgt die Kind-Tabelle und dem Schlüsselwort RIGHT JOIN folgt die Eltern-Tabelle. On [fremdschlüssel] = [primärschlüssel] verknüpft den Primärschlüssel aus der einen Tabelle mit den dazugehörigen Fremdschlüssel in der anderen Tabelle. Der Primärschlüssel identifiziert eindeutig die Eltern eines Kindes. Der Fremdschlüssel ordnet einem Kind genau ein Elternpaar zu. Access 2010 - Einführung, 04.06.13 Seite 72
WHERE-Klausel SELECT tblgericht.gerichtname, tblbestelltegerichte.menge, tblgericht.vegetarisch FROM tblbestelltegerichte INNER JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht WHERE (tblgericht.vegetarisch=true); Access 2010 - Einführung, 04.06.13 Seite 73
Daten sortieren SELECT tblgericht.gerichtname, tblgericht.vegetarisch FROM tblbestelltegerichte INNER JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht WHERE (tblgericht.vegetarisch=true) ORDER BY tblgericht.gerichtname; Access 2010 - Einführung, 04.06.13 Seite 74
Unterbindung von Mehrfachausgaben SELECT DISTINCT tblgericht.gerichtname, tblgericht.vegetarisch FROM tblbestelltegerichte INNER JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht WHERE (tblgericht.vegetarisch=true) ORDER BY tblgericht.gerichtname; Mehrfach auftretende Werte werden nur einmal angezeigt. Access 2010 - Einführung, 04.06.13 Seite 75
1 : n : 1 - Verknüpfung SELECT tblgericht.gerichtname, tblbestelltegerichte.menge, tblgericht.preis, tblpizzagroesse.groesse, tblpizzagroesse.preisaenderung FROM ( tblbestelltegerichte RIGHT JOIN tblgericht ON tblbestelltegerichte.gericht = tblgericht.idgericht ) LEFT JOIN tblpizzagroesse ON tblbestelltegerichte.groesse = tblpizzagroesse.idgroesse; Access 2010 - Einführung, 04.06.13 Seite 76
UNION-Anweisungen Verbindung von Ergebnisse mehrerer Select-Anweisungen. Jede Select-Anweisung hat die gleiche Anzahl von Feldern. Die Felder in den zu verbindenden Anweisungen haben die gleichen Datentypen. Die Felder müssen in der gleichen Reihenfolge angegeben werden. Die Feldnamen in der ersten Select-Anweisung werden für das Ergebnis der Union-Anweisung genutzt. Access 2010 - Einführung, 04.06.13 Seite 77
Möglichkeiten [Select] UNION [Select] zeigt keine doppelten Werte an. [Select] UNION ALL [Select] zeigt alle Werte an. Access 2010 - Einführung, 04.06.13 Seite 78
Beispiel SELECT tblpizza.gerichtname, tblpizza.preis FROM tblpizza UNION ALL SELECT tblsalat.gerichtname, tblsalat.preis FROM tblsalat; Access 2010 - Einführung, 04.06.13 Seite 79
Daten sortieren SELECT tblpizza.gerichtname, tblpizza.preis FROM tblpizza UNION SELECT tblsalat.gerichtname, tblsalat.preis FROM tblsalat ORDER BY Gerichtname; Access 2010 - Einführung, 04.06.13 Seite 80
Daten filtern SELECT tblpizza.gerichtname, tblpizza.preis FROM tblpizza WHERE Preis > 7 UNION SELECT tblsalat.gerichtname, tblsalat.preis FROM tblsalat ORDER BY Gerichtname; Access 2010 - Einführung, 04.06.13 Seite 81
Aktionsabfragen Automatisierte Bearbeitung von Datensätze in einer Tabelle. Löschabfrage. Datensätze werden in Abhängigkeit eines Kriteriums entfernt. Anfügeabfrage. Datensätze werden an bestehende Tabellen angefügt. Tabellenerstellungsabfrage. Eine Tabelle wird neu erstellt und Daten hinzugefügt. Aktualisierungabfrage. Daten werden in Abhängigkeit eines Kriteriums automatisiert verändert. Access 2010 - Einführung, 04.06.13 Seite 82
ausführen Vor der Ausführung einer Aktionsabfrage sollte immer eine Kopie der Daten angelegt. Doppelklick auf den Abfragenamen im Navigationsbereich. Access 2010 - Einführung, 04.06.13 Seite 83
in der Datenblattansicht überprüfen Die Registerkarte Start ist aktiv. Klick auf den Befehl Ansicht in der Gruppe Ansichten. Oder: Die Registerkarte Abfragetools Entwurf ist aktiv. Klick auf den Befehl Ansicht in der Gruppe Ergebnisse. Klick auf den Befehl Datenblattansicht. In der Ansicht werden die zu bearbeitenden Datensätze angezeigt. Access 2010 - Einführung, 04.06.13 Seite 84
Löschabfrage DELETE FROM tblnudeln WHERE (tblnudeln.gerichtname Like "Dinkel*"); DELETE FROM [tabelle] löscht alle Datensätze aus der angegebenen Tabelle. DELETE FROM [tabelle] WHERE [Bedingung] löscht alle Datensätze aus der angegebenen Tabelle, die die angegebenen Bedingung erfüllen. Access 2010 - Einführung, 04.06.13 Seite 85
ausführen Abfragetools Entwurf. Klick auf Ausführen in der Gruppe Ergebnisse. Nach Bestätigung der Warnmeldung werden die Datensätze gelöscht. Die Löschung kann nicht rückgängig gemacht werden. Access 2010 - Einführung, 04.06.13 Seite 86
Wechsel in die Datenblattansicht DELETE tblnudeln.* FROM tblnudeln WHERE (tblnudeln.gerichtname Like "Dinkel*"); Es muss das Sternchen als Platzhalter für ein Feld angegeben werden. Access 2010 - Einführung, 04.06.13 Seite 87
Wechsel in die Entwurfsansicht DELETE tblnudeln.*, tblnudeln.gerichtname FROM tblnudeln WHERE (tblnudeln.gerichtname Like "Dinkel*"); Das Feld, welches überprüft wird, muss angegeben werden. Access 2010 - Einführung, 04.06.13 Seite 88
Anfügeabfrage... fügt immer einer vorhandenen Tabelle Daten hinzu. fügt konstante Werte einer Tabelle hinzu. fügt Daten aus einer anderen Tabelle in der aktuellen oder einer anderen Datenbank hinzu. Access 2010 - Einführung, 04.06.13 Seite 89
von konstanten Werte an eine Tabelle INSERT INTO tblnudeln ( IDGericht, Gerichtname, Preis, vegetarisch ) VALUES ("N10", "Spiralnudeln Gemüse", 4.4, True); INSERT INTO [tabelle]. In welche Tabelle werden die Daten eingefügt? INSERT INTO [tabelle] (feld01. feld02,...). In welche Spalten / Felder in der angegebenen Tabelle werden die Daten angefügt. Es müssen nicht alle Felder einer Tabelle genutzt werden. VALUES (wert01, wert02, ) ist eine Auflistung von Werten, die in die Felder eingefügt werden. wert01 wird in das feld01 eingefügt und so weiter. Der Wert und das Feld haben den gleichen Datentyp. Access 2010 - Einführung, 04.06.13 Seite 90
ausführen Abfragetools Entwurf. Klick auf Ausführen in der Gruppe Ergebnisse. Nach Bestätigung der Warnmeldung werden die Datensätze angefügt. Access 2010 - Einführung, 04.06.13 Seite 91
Fehlermeldung bei Durchführung der Aktion Anzufügenden Primärschlüssel müssen in der Zieltabelle eindeutig sein. Die Werte und die Felder, in die sie eingefügt werden, müssen den gleichen Datentyp haben. Die Werte dürfen keine Gültigkeitsregeln in der Zieltabelle verletzen. Access 2010 - Einführung, 04.06.13 Seite 92
an eine Tabelle in der aktuellen Datenbank INSERT INTO tblnudeln ( IDGericht, Gerichtname, Preis, vegetarisch ) SELECT tblnudeln_neue.idgericht, tblnudeln_neue.gerichtname, tblnudeln_neue.preis, tblnudeln_neue.vegetarisch FROM tblnudeln_neue WHERE (tblnudeln_neue.gerichtname LIKE "Spiral*"); Access 2010 - Einführung, 04.06.13 Seite 93
an eine Tabelle in einer anderen Datenbank INSERT INTO tblgericht ( IDGericht, Gerichtname, Preis, vegetarisch ) IN "\access\dateibeispiel\sqlnutzen\pizzaservice_gerichte.accdb" SELECT tblnudeln_neue.idgericht, tblnudeln_neue.gerichtname, tblnudeln_neue.preis, tblnudeln_neue.vegetarisch FROM tblnudeln_neue WHERE (tblnudeln_neue.gerichtname LIKE "Spiral*"); Um Fehler zu vermeiden, sollte der absolute Pfad plus der Dateiname angegeben werden. Access 2010 - Einführung, 04.06.13 Seite 94
Tabellenerstellungsabfrage... erstellt eine Kopie der Datensätze in einer vorhandenen Tabelle. erstellt automatisiert eine neue Tabelle und kopiert die gewünschten Datensätze in diese hinein. Access 2010 - Einführung, 04.06.13 Seite 95
Neue Tabelle in der aktuellen Datenbank SELECT * INTO BestellungMai FROM tblbestellung WHERE (tblbestellung.bestelldatum Between #5/1/2013# And #5/31/2013#); SELECT tabelle.feld FROM tabelle WHERE bedingung legt die zu kopierenden Datensätze fest. Dem Schlüsselwort INTO folgt der Name der neuen Tabelle. Es werden die Feldnamen aus der Quelltabelle in der Zieltabelle genutzt. Access 2010 - Einführung, 04.06.13 Seite 96
ausführen Abfragetools Entwurf. Klick auf Ausführen in der Gruppe Ergebnisse. Nach Bestätigung der Warnmeldung werden die Datensätze angefügt. Access 2010 - Einführung, 04.06.13 Seite 97
Tabellenname vorhanden Eine Tabelle mit den gleichen Namen wird auf Nachfrage gelöscht. Die Löschung der Tabelle kann nicht rückgängig gemacht werden. Access 2010 - Einführung, 04.06.13 Seite 98