Access SQL: Grundkonzepte, Sprache und Syntax

Wenn Sie Daten aus einer Datenbank abrufen möchten, verwenden Sie dazu die Structured Query Language (SQL). SQL ist eine Computersprache, die dem Englischen ähnlich ist und von Datenbankprogrammen verstanden wird. Jede Abfrage, die Sie ausführen, verwendet im Hintergrund SQL.

Wenn Sie verstehen, wie SQL funktioniert, können Sie bessere Abfragen erstellen, und Sie können auch einfacher entscheiden, wie Sie eine Abfrage korrigieren, die nicht die gewünschten Ergebnisse zurückgibt.

Dieser Artikel ist Teil einer Artikelreihe über Access SQL. In diesem Artikel wird die grundlegende Verwendung von SQL zum Auswählen von Daten beschrieben. Außerdem wird die SQL-Syntax anhand von Beispielen 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 diesen. Relationale Datenbankprogramme wie Microsoft Office Access verwenden SQL zum Arbeiten mit Daten. Im Gegensatz zu vielen Computersprachen ist SQL – selbst für Anfänger – einfach zu lesen und zu verstehen. Wie viele Computersprachen ist SQL ein international Standard, der von Normenorganisationen wie ISO und ANSI anerkannt wird.

Sie verwenden SQL, um Gruppen von Daten zu beschreiben, mit denen Sie Fragen beantworten können. Beim Verwenden von SQL müssen Sie die richtige Syntax einhalten. Die Syntax besteht aus einer Reihe von Regeln, durch die die Elemente einer Sprache richtig kombiniert werden. Die SQL-Syntax basiert auf der englischen Syntax und verwendet viele der gleichen Elemente wie die Syntax von Visual Basic for Applications (VBA).

Eine einfache SQL-Anweisung, die eine Liste von Nachnamen für Kontakte abruft, deren Vorname Mary ist, sieht beispielsweise wie folgt aus:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Hinweis : SQL wird nicht nur zum Bearbeiten von Daten, sondern auch zum Erstellen und Ändern des Entwurfs von Datenbankobjekten wie Tabellen verwendet. Der zum Erstellen und Ändern von Datenbankobjekten verwendete Teil von SQL wird als Datendefinitionssprache (Data Definition Language, DDL) bezeichnet. In diesem Artikel wird DDL nicht behandelt. Weitere Informationen finden Sie im Artikel Erstellen oder Ändern von Tabellen oder Indizes mithilfe einer Datendefinitionsabfrage.

SELECT-Anweisungen

Zum Beschreiben einer Gruppe von Daten mithilfe von SQL schreiben Sie eine SELECT-Anweisung. Eine SELECT-Anweisung enthält eine vollständige Beschreibung einer Gruppe von Daten, die Sie aus einer Datenbank abrufen möchten. Dies umfasst Folgendes:

  • In welchen Tabellen die Daten enthalten sind

  • Die Beziehung zwischen Daten aus verschiedenen Quellen

  • Welche Felder oder Berechnungen die Daten generieren

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

  • Ob und wie die Ergebnisse sortiert werden

SQL-Klauseln

Wie ein Satz enthält eine SQL-Anweisung Klauseln. Jede Klausel führt eine Funktion für die SQL-Anweisung aus. Einige Klauseln sind in einer SELECT-Anweisung erforderlich. In der folgenden Tabelle werden die am häufigsten verwendeten SQL-Klauseln aufgelistet.

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. In der folgenden Tabelle werden die SQL-Begriffsarten aufgelistet.

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

>= Artikel.[Einzelpreis]

Seitenanfang

Grundlegende SQL-Klauseln: SELECT, FROM und WHERE

Eine SQL-Anweisung weist das folgende allgemeine Format auf:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Hinweise : 

  • Access ignoriert Zeilenumbrüche in SQL-Anweisungen. Sie sollten jedoch für jede Klausel eine eigene Zeile verwenden, um die Lesbarkeit Ihrer SQL-Anweisungen zu verbessern.

  • 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

Im folgenden Beispiel wird veranschaulicht, wie eine SQL-Anweisung für eine einfache Auswahlabfrage in Access aussehen kann:

Registerkarte eines SQL-Objekts mit einer SELECT-Anweisung

1. SELECT-Klausel

2. FROM-Klausel

3. WHERE-Klausel

Diese SQL-Beispielanweisung können Sie wie folgt interpretieren: "Daten auswählen, die in den Feldern "E-Mail-Adresse" und "Firma" der Tabelle "Kontakte" gespeichert sind, insbesondere Datensätze, in denen das Feld "Ort" den Wert "Stuttgart" enthält."

Sehen wir uns das Beispiel Klausel für Klausel an, um herauszufinden, wie die SQL-Syntax funktioniert.

Die SELECT-Klausel

SELECT [E-mail Address], Company

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

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

Eine SELECT-Klausel muss nicht angeben, welche Tabellen die Felder enthalten, und kann keine Bedingungen angeben, die die Daten erfüllen müssen, um einbezogen zu werden.

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

Die FROM-Klausel

FROM Contacts

Dies ist die FROM-Klausel. Sie besteht aus einem Operator (FROM) gefolgt von einem Bezeichner (Kontakte).

In einer FROM-Klausel werden die auszuwählenden Felder nicht aufgelistet.

Die WHERE-Klausel

WHERE City="Seattle"

Dies ist die WHERE-Klausel. Sie besteht aus einem Operator (WHERE) gefolgt von einem Ausdruck (Ort="Stuttgart").

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

Mithilfe von SELECT-, FROM- und WHERE-Klauseln können Sie viele der mit SQL möglichen Aktionen ausführen. Weitere Informationen zum Verwenden dieser Klauseln finden Sie in den folgenden weiteren Artikeln:

Seitenanfang

Sortieren der Ergebnisse: ORDER BY

Wie in Microsoft Excel können Sie in Access Abfrageergebnisse in einem Datenblatt sortieren. Außerdem können Sie mit einer ORDER BY-Klausel in der Abfrage angeben, wie die Ergebnisse beim Ausführen der Abfrage sortiert werden sollen. Eine 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 und dann (falls es Datensätze mit demselben Wert für "Firma" gibt) nach den Werten im Feld "E-Mail-Adresse" in aufsteigender Reihenfolge sortieren. Ihre ORDER BY-Klausel würde dann wie folgt aussehen:

ORDER BY Company DESC, [E-mail Address]

Hinweis : In Access werden Werte standardmäßig in aufsteigender Reihenfolge (von A-Z, vom kleinsten zum größten Wert) sortiert. Verwenden Sie das Schlüsselwort DESC, wenn Werte stattdessen in absteigender Reihenfolge sortiert werden sollen.

Weitere Informationen zur ORDER BY-Klausel finden Sie unter ORDER BY-Klausel.

Seitenanfang

Arbeiten mit zusammengefassten Daten: GROUP BY und HAVING

Manchmal müssen Sie mit zusammengefassten Daten, z. B. dem Gesamtumsatz eines Monats oder den teuersten Artikeln in einem Bestand, arbeiten. Zu diesem Zweck wenden Sie eine Aggregatfunktion auf ein Feld in Ihrer SELECT-Klausel an. Wenn in Ihrer Abfrage beispielsweise die Anzahl von E-Mail-Adressen für jedes Unternehmen angezeigt werden soll, sieht Ihre SELECT-Klausel wie folgt aus:

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

Die Aggregatfunktionen, die Sie verwenden können, 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

Wenn Sie Aggregatfunktionen verwenden, müssen Sie in der Regel auch eine GROUP BY-Klausel erstellen. Eine GROUP BY-Klausel enthält alle Felder, auf die Sie keine Aggregatfunktion anwenden. 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. auf die FROM-Klausel, wenn keine WHERE-Klausel vorhanden ist. Eine GROUP BY-Klausel listet die Felder entsprechend der Angabe in der SELECT-Klausel auf.

Wenn wir zurückkommend auf das vorherige Beispiel annehmen, dass die SELECT-Klausel eine Aggregatfunktion auf "[E-Mail-Adresse]", aber nicht auf "Firma" anwendet, sieht Ihre GROUP BY-Klausel wie folgt aus:

GROUP BY Company

Weitere Informationen zur GROUP BY-Klausel finden Sie unter GROUP BY-Klausel.

Einschränken zusammengefasster Werte mithilfe von Gruppenkriterien: die HAVING-Klausel

Wenn Sie Ihre Ergebnisse mithilfe von Kriterien einschränken möchten, aber das Feld, für das die Kriterien gelten sollen, in einer Aggregatfunktion verwendet wird, können Sie keine WHERE-Klausel verwenden. Sie müssen stattdessen eine HAVING-Klausel verwenden. Eine HAVING-Klausel funktioniert wie eine WHERE-Klausel, wird jedoch für aggregierte 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 basierend auf dem Wert dieser COUNT-Funktion einschränken soll, können Sie für dieses Feld in der WHERE-Klausel keine Kriterien verwenden. Stattdessen geben Sie die Kriterien in einer HAVING-Klausel an. Wenn die Abfrage beispielsweise nur Zeilen zurückgeben soll, wenn der Firma mehrere E-Mail-Adressen zugeordnet sind, sieht die HAVING-Klausel wie folgt aus:

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

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

Weitere Informationen zur HAVING-Klausel finden Sie unter HAVING-Klausel.

Seitenanfang

Kombinieren von Abfrageergebnissen: UNION

Sie verwenden den UNION-Operator, wenn Sie alle Daten überprüfen möchten, die von mehreren ähnlichen Auswahlabfragen zusammen als kombinierter Satz zurückgegeben werden.

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

Hinweis : Zum Zweck einer Union-Abfrage sind die Datentypen "Zahl" und "Text" kompatibel.

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

Die grundlegende SQL-Syntax für eine Union-Abfrage, die zwei SELECT-Anweisungen kombiniert, sieht wie folgt aus:

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

Nehmen wir beispielsweise an, dass Sie über eine Tabelle mit Namen "Produkte" und eine weitere Tabelle mit Namen "Dienstleistungen" verfügen. In beiden Tabellen gibt es Felder, die den Namen des Produkts oder der Dienstleistung, den Preis sowie die Verfügbarkeit von Gewährleistung oder Garantie enthalten. Darüber hinaus gibt es ein Feld, das angibt, ob Sie das Produkt oder die Dienstleistung exklusiv anbieten. Obwohl in der Tabelle "Produkte" Informationen zur Gewährleistung und in der Tabelle "Dienstleistungen" Informationen zur Garantie gespeichert sind, ist die Information im Grunde genommen die gleiche (ob für ein bestimmtes Produkt oder für eine Dienstleistung ein Qualitätsversprechen gegeben wird). Sie können nun eine Union-Abfrage wie die folgende verwenden, um die 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 UNION-Operator finden Sie unter Kombinieren der Ergebnisse mehrerer Auswahlabfragen mithilfe einer Union-Abfrage.

Seitenanfang

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!

×