Access SQL: Grundkonzepte, Sprache und Syntax

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Daten werden mithilfe von SQL (Structured Query Language, dt. strukturierte Abfragesprache) aus einer Datenbank abrufen. SQL ist eine Computersprache, die dem Englischen ähnlich ist und von Datenbankprogrammen verstanden wird. Jede Abfrage, die Sie ausführen, arbeitet im Hintergrund mit SQL.

Wenn Sie die Funktionsweise von SQL verstehen, können Sie intelligentere Abfragen erstellen und auch besser eine Abfrage korrigieren, die nicht die gewünschten Ergebnisse liefert.

Dieser Artikel gehört zu einer Artikelreihe zu Access SQL. In dem Artikel wird beschrieben, wie Sie Daten mithilfe von SQL auswählen. Außerdem wird anhand von Beispielen die SQL-Syntax veranschaulicht.

Inhalt dieses Artikels

Was ist SQL?

Grundlegende SQL-Klauseln: SELECT, FROM und WHERE

Sortieren der Ergebnisse: ORDER BY

Arbeiten mit zusammengefassten Daten: GROUP BY und HAVING

Kombinieren von Abfrageergebnissen: UNION

Was ist SQL?

SQL ist eine Computersprache für die Arbeit mit Gruppen von Fakten und den Beziehungen zwischen Vorgängen. Relationale Datenbank-Programmen wie Microsoft Office Access, verwenden SQL arbeiten mit Daten. Im Gegensatz zu viele Computersprachen ist SQL nicht schwer zu lesen und zu verstehen, auch für ein Anfänger. Wie viele Computersprachen ist SQL ein internationale Standard, der von Organisationen wie ISO und ANSIerkannt wird.

“Selbst für Einsteiger ist SQL leicht zu lesen und zu verstehen.”

Verwenden Sie SQL Datengruppen beschreiben, mit denen Sie Fragen beantworten können. Wenn Sie SQL verwenden, müssen Sie die richtige Syntax verwenden. Syntax ist ein Satz von Regeln, die die Elemente einer Sprache richtig kombiniert werden. SQL-Syntax basiert auf Englisch Syntax und viele dieselben Elemente wie Visual Basic für Applikationen (VBA) Syntax verwendet.

Eine einfache SQL-Anweisung, die eine Liste mit Nachnamen von Kontakten abruft, deren Vorname Tanja lautet, sieht so aus:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Hinweis : SQL eignet sich nicht nur zum Bearbeiten von Daten, sondern auch zum Erstellen und Ändern von Datenbankobjekten, z. B. Tabellen. Dazu wird eine SQL-Komponente verwendet, die DDL (Data Definition Language) genannt wird. Diese Komponente wird unter diesem Thema nicht behandelt. Weitere Informationen finden Sie im Artikel Erstellen oder Ändern von Tabellen oder Indizes mithilfe einer Datendefinitionsabfrage.

SELECT-Anweisungen

Zum Beschreiben eines Datensatzes mithilfe von SQL schreiben Sie eine SELECT-Anweisung, die eine vollständige Beschreibung des Datensatzes enthält, den Sie aus einer Datenbank abrufen möchten, und die Folgendes umfasst:

  • Die Tabellen, welche die Daten enthalten

  • Die Beziehung zwischen Daten aus verschiedenen Quellen

  • Die Felder oder Berechnungen, welche die Daten generieren

  • Kriterien, welche die Daten erfüllen müssen, um einbezogen zu werden

  • Die Sortierung der Ergebnisse

SQL-Klauseln

Wichtiger Bestandteile von SQL-Anweisungen sind Klauseln, von denen jede eine Aufgabe für die SQL-Anweisung erfüllt. Einige Klauseln sind in einer SQL-Anweisung erforderlich. In der folgenden Tabelle werden die gängigsten SQL-Klauseln vorgestellt.

SQL-Klausel

Zweck

Erforderlich

SELECT

Gibt die Felder mit den gewünschten Daten an

Ja

FROM

Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind

Ja

WHERE

Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden

Nein

ORDER BY

Gibt die Sortierung der Ergebnisse an

Nein

GROUP BY

Gibt in einer SQL-Anweisung mit Aggregatfunktionen Felder an, die in der SELECT-Klausel nicht zusammengefasst werden

Nur dann, wenn solche Felder vorhanden sind

HAVING

Gibt in einer SQL-Anweisung mit Aggregatfunktionen Felder an, die in der SELECT-Klausel nicht zusammengefasst werden

Nein

SQL-Begriffe

Eine SQL-Klausel besteht aus Begriffen, die mit Wortarten vergleichbar sind. Die folgende Tabelle enthält die SQL-Begriffsarten.

SQL-Begriff

Vergleichbare Wortart

Definition

Beispiel

Bezeichner

Nomen

Ein Name, mit dem Sie ein Datenbankobjekt bezeichnen, z. B. der Name eines Felds

Kunden.[Telefonnummer]

Operator

Verb oder Adverb

Ein Schlüsselwort, das eine Aktion repräsentiert oder ändert.

AS

Konstante

Nomen

Ein sich nicht ändernder Wert, z. B. eine Zahl oder NULL.

42

Ausdruck

Adjektiv

Eine Kombination aus Bezeichnern, Operatoren, Konstanten und Funktionen, die als Ergebnis einen einzelnen Wert liefert

>= Produkte.[Einzelpreis]

Seitenanfang

Grundlegende SQL-Klauseln: SELECT, FROM und WHERE

Eine SQL-Anweisung hat das folgende allgemeine Format:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Hinweise : 

  • Access ignoriert Zeilenumbrüche in SQL-Anweisungen. Erwägen Sie jedoch das Eingeben jeder Klausel in eine eigene Zeile, damit Ihre SQL-Anweisungen besser lesbar werden.

  • Jede SELECT-Anweisung endet mit einem Semikolon (;). Das Semikolon kann am Ende der letzten Klausel oder in einer eigenen Zeile am Ende der SQL-Anweisung stehen.

Beispiel in Access

Das folgende Beispiel veranschaulicht, wie eine SQL-Anweisung für eine einfache SELECT-Abfrage in Access aussehen kann:

Registerkarte eines SQL-Objekts mit einer SELECT-Anweisung

1. SELECT-Klausel

2. FROM-Klausel

3. WHERE-Klausel

Diese SQL-Beispielabfrage kann so interpretiert werden: Daten auswählen, die in den Felder "E-Mail-Adresse" und "Firma" der Tabelle "Kontakte" gespeichert sind, insbesondere Datensätze, bei den "Stuttgart" der Wert im Feld "Ort" ist.

Nun wollen wir das Beispiel Klausel für Klausel untersuchen, um herauszufinden, wie die SQL-Syntax funktioniert.

Die SELECT-Klausel

SELECT [E-mail Address], Company

Dies ist die SELECT-Klausel, die aus einem Operator (SELECT) gefolgt von zwei Bezeichnern ([E-Mail-Adresse] und Firma) besteht.

Wenn ein Bezeichner Leer- oder Sonderzeichen enthält, (z. B. "E-Mail-Adresse"), muss er in eckige Klammer gesetzt werden.

Eine SELECT-Klausel muss nicht angeben, welche Tabellen die Felder enthalten, und kann keine Bedingungen angeben, die erfüllt werden müssen, damit die Daten in die Ergebnisse einbezogen werden.

In einer SQL-Anweisung steht die SELECT-Klausel stets vor der FROM-Klausel.

Die FROM-Klausel

FROM Contacts

Dies ist die FROM-Klausel, die aus einem Operator (FROM) und einem Bezeichner (Kontakte) besteht.

Eine FROM-Klausel gibt nicht die auszuwählenden Felder an.

Die WHERE-Klausel

WHERE City="Seattle"

Dies ist die WHERE-Klausel, die aus einem Operator (WHERE) und einem Ausdruck (Ort="Stuttgart") besteht.

Hinweis : Im Gegensatz zur SELECT- und zur FROM-Klausel ist die WHERE-Klausel kein erforderliches Element einer SQL-Anweisung.

Mithilfe der Klauseln SELECT, FROM und WHERE können Sie in der SQL-Umgebung viele Aufgaben erledigen. Weitere Informationen zum Verwenden dieser Klauseln finden Sie in diesen zusätzlichen Artikeln:

Seitenanfang

Sortieren der Ergebnisse: ORDER BY

Wie in Microsoft Office Excel können Sie in Access Abfrageergebnisse in einem Datenblatt sortieren. Sie können außerdem über eine ORDER BY-Klausel in der Abfrage angeben, wie die Ergebnisse nach Ausführung der Abfrage sortiert werden sollen. Die ORDER BY-Klausel ist stets die letzte Klausel in der SQL-Anweisung.

Eine ORDER BY-Klausel enthält eine Liste der für die Sortierung zu verwendenden Felder in der Reihenfolge, in der Sie die Sortiervorgänge anwenden möchten.

Angenommen, Sie möchten Ihre Ergebnisse zuerst nach dem Wert des Felds "Firma" in absteigender Reihenfolge (falls es Felder mit demselben Wert für "Firma" gibt) und anschließend nach den Werten im Feld "E-Mail-Adresse" in aufsteigender Reihenfolge sortieren. Die ORDER BY-Klausel muss dann so aussehen: 

ORDER BY Company DESC, [E-mail Address]

Hinweis : Access sortiert Werte standardmäßig in aufsteigender Reihenfolge (A-Z, vom kleinsten zum größten Wert). Geben Sie das Schlüsselwort DESC an, um Werte in absteigender Reihenfolge zu sortieren.

Weitere Informationen zur ORDER BY-Klausel finden Sie im Thema ORDER BY-Klausel.

Seitenanfang

Arbeiten mit zusammengefassten Daten: GROUP BY und HAVING

Mitunter ist es erforderlich, mit zusammengefassten Daten, z. B. dem Gesamtumsatz eines Monats oder den teuersten Artikeln in einem Bestand, zu arbeiten. Zu diesem Zweck wenden Sie eine Aggregatfunktion auf ein Feld in Ihrer SELECT-Klausel an. Wenn die Abfrage beispielsweise die Anzahl der E-Mail-Adressen für jedes Unternehmen liefern soll, sieht Ihre SELECT-Klausel etwa so aus:

SELECT COUNT([E-mail Address]), Company

Die verfügbaren Aggregatfunktionen hängen vom Datentyp des gewünschten Felds oder Ausdrucks ab. Weitere Informationen zu den verfügbaren Aggregatfunktionen finden Sie im Artikel SQL-Aggregatfunktionen.

Angeben von Feldern, die nicht in einer Aggregatfunktion verwendet werden: Die GROUP BY-Klausel

Bei Verwenden von Aggregatfunktionen müssen Sie in der Regel auch eine GROUP BY-Klausel erstellen, die alle Felder enthält, auf die Sie keine Aggregatfunktion anwenden möchten. Wenn Sie Aggregatfunktionen auf alle Felder in einer Abfrage anwenden, müssen Sie keine GROUP BY-Klausel erstellen.

Eine GROUP BY-Klausel folgt unmittelbar auf die WHERE-Klausel bzw. die FROM-Klausel, wenn es keine WHERE-Klausel gibt. Eine GROUP BY-Klausel listet die Felder entsprechend der Angabe in der SELECT-Klausel auf.

Wenn das vorherige Beispiel fortsetzend die SELECT-Klausel eine Aggregatfunktion auf "[E-Mail-Adresse]", aber nicht auf "Firma" anwenden, sieht Ihre GROUP-Klausel so aus:

GROUP BY Company

Weitere Informationen zur GROUP BY-Klausel finden Sie im Thema GROUP BY-Klausel.

Einschränken von Aggregatwerten mithilfe von Gruppenkriterien: die HAVING-Klausel

Wenn Sie Ihre Ergebnisse mithilfe von Kriterien einschränken möchten, doch das Feld, für das Kriterien gelten sollen, in einer Aggregatfunktion verwendet wird, können Sie keine WHERE-Klausel verwenden, sondern müssen eine HAVING-Klausel angeben. Eine HAVING-Klausel funktioniert wie eine WHERE-Klausel, wird jedoch für aggregrierte Daten verwendet.

Angenommen, Sie wenden die AVG-Funktion (die einen Durchschnittswert berechnet) auf das erste Feld in Ihrer SELECT-Klausel an:

SELECT COUNT([E-mail Address]), Company

Wenn die Abfrage die Ergebnisse auf Basis des Werts dieser COUNT-Funktion einschränken soll, können Sie für dieses Feld in der WHERE-Klausel kein Kriterium wählen. Statt dessen geben Sie das Kriterium in einer HAVING-Klausel an. Wenn die Abfrage beispielsweise nur Zeilen zurückgeben soll, wenn mehrere E-Mail-Adressen mit einer Firma verknüpft sind, sieht die HAVING-Klausel so aus:

HAVING COUNT([E-mail Address])>1

Hinweis : Eine Abfrage kann eine WHERE- und eine HAVING-Klausel aufweisen. Kriterien für Felder, die nicht in einer Aggregatfunktion verwendet werden, gehören in die WHERE-Klausel. Kriterien für Felder, die in Aggregatfunktionen verwendet werden, gehören in die HAVING-Klausel. 

Weitere Informationen zur HAVING-Klausel finden Sie im Thema HAVING-Klausel.

Seitenanfang

Kombinieren von Abfrageergebnissen: UNION

Sie verwenden den Operator UNION, wenn Sie alle Daten prüfen möchten, die von mehreren ähnlichen SELECT-Abfragen gemeinsam als kombinierter Satz zurückgegeben werden.

Mit dem Operator UNION können Sie zwei SELECT-Anweisungen zu einer kombinieren. Die SELECT-Anweisungen, die Sie kombinieren, müssen über die gleiche Anzahl von Ausgabefeldern verfügen, die die gleiche Reihenfolge sowie die gleichen oder kompatible Datentypen aufweisen. Beim Ausführen der Abfrage werden die Daten aus jedem Satz einander entsprechender Felder zu einem Ausgabefeld kombiniert, sodass die Ausgabe der Abfrage über die gleiche Anzahl von Feldern wie jede der SELECT-Anweisungen verfügt.

Hinweis : Im Rahmen einer UNION-Abfrage sind die Datentypen "Zahl" und "Text" kompatibel.

Bei Verwenden des UNION-Operators können Sie auch mithilfe des Schlüsselworts ALL angeben, ob die Abfrageergebnisse duplizierte Zeilen, falls vorhanden, enthalten sollen.

Die grundlegende SQL-Syntax für eine UNION-Abfrage, mit der zwei SELECT-Abfragen kombiniert werden, sieht wie folgt aus:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Nehmen wir beispielsweise einmal an, Sie verfügen über eine Tabelle mit Namen "Produkte" und eine weitere Tabelle mit Namen "Dienstleistungen". In beiden Tabellen gibt es Felder, die den Namen des Produkts oder des Diensts ("Name"), den Preis ("Preis") sowie die Verfügbarkeit von Gewährleistung oder Garantie ("Gewährleistung_verfügbar") umfassen. Darüber hinaus gibt es ein Feld, das angibt, ob Sie das Produkt oder den Dienst exklusiv anbieten ("exklusives_Angebot"). Obwohl in der Tabelle "Produkte" Informationen zur Gewährleistung und in der Tabelle "Dienstleistungen" Informationen zur Garantie gespeichert sind, sind die Daten im Grunde genommen die gleichen (ob für ein bestimmtes Produkt oder für einen Dienst eine Qualitätszusage gegeben wird). Sie können nun eine UNION-Abfrage wie die folgende verwenden, um diese vier Felder aus den beiden Tabellen zu kombinieren:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Weitere Informationen zum Kombinieren von SELECT-Anweisungen mit dem Operator UNION finden Sie in Kombinieren der Ergebnisse von mehreren Auswahlabfragen mithilfe einer Union-Abfrage.

Seitenanfang

Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×