Optimieren von Abfrageergebnissen durch Bearbeiten von SQL-Anweisungen

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

Wenn Ihre Abfragen nicht wirklich zielführend sind, können Sie die Ergebnisse mithilfe einfacher SQL-Anweisungen optimieren. In diesem Artikel lernen Sie einige SQL-Anweisungen kennen und erfahren, welche Klauseln oder Teile Sie bearbeiten müssen, um die gewünschten Ergebnisse zu erzielen.

Hinweis :  Dieser Artikel gilt nicht für Access-Apps, d. h. der neuen Art von Datenbanken, die Sie mit Access entwerfen und online veröffentlichen. Weitere Informationen finden Sie unter Erstellen einer Access-App.

Inhalt dieses Artikels

Erstellen einer SELECT-Anweisung

Anpassen der SELECT-Klausel

Anpassen der FROM-Klausel

Anpassen der WHERE-Klausel

Anpassungen mit dem UNION-Operator

Erstellen einer SELECT-Anweisung

Eine SELECT-Anweisung in SQL besteht aus zwei oder drei Klauseln. Mit der SELECT-Klausel wird die Datenbank angewiesen, an einer bestimmten Stelle nach Daten zu suchen ein bestimmtes Ergebnis zurückzugeben.

Hinweis : SELECT-Anweisungen enden immer mit einem Semikolon (;), und zwar am Ende der letzten Klausel oder in einer eigenen Zeile am Ende der SQL-Anweisung.

Mit der folgenden SELECT-Anweisung wird Access aufgefordert, in der Tabelle "Kontakte" Informationen aus den Spalten "E-Mail-Adresse" und "Unternehmen" abzurufen, und zwar speziell die Daten, bei denen die Spalte "Ort" den Wert "Stuttgart" enthält.

Registerkarte eines SQL-Objekts mit einer SELECT-Anweisung

Die oben genannte Abfrage besteht aus drei Klauseln: SELECT, FROM und WHERE.

1. Die SELECT-Klausel listet die Spalten mit den zu verwendenden Daten auf und besteht aus einem Operator (SELECT) und zwei Bezeichnern (E-Mail-Adresse und Unternehmen). Wenn ein Bezeichner Leer- oder Sonderzeichen enthält (beispielsweise "E-Mail-Adresse"), muss er in eckige Klammer gesetzt werden.

2. Die FROM-Klausel gibt die Quelltabelle an. In diesem Beispiel besteht sie aus einem Operator (FROM) und einem Bezeichner (Kontakte).

3. Die WHERE-Klausel ist eine optionale Klausel. In diesem Beispiel besteht sie aus einem Operator (WHERE) und einem Ausdruck (Ort="Stuttgart").

Weitere Informationen zu Auswahlabfragen finden Sie unter Erstellen einer Auswahlabfrage.

Nachstehend sind die gängigen 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

Eine SQL-Klausel besteht aus Begriffen. Nachstehend sind einige gängige SQL-Begriffe aufgelistet:

SQL-Begriff

Definition

Beispiel

Bezeichner

Name zur Identifikation eines Datenbankobjekts, z. B. Spaltenname

E-Mail-Adresse und Unternehmen

Operator

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

AS

Konstante

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

42

Ausdruck

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

>= Artikel.[Einzelpreis]

Seitenanfang

Anpassen der SELECT-Klausel

Anpassen

Beispiel

Anzeigen nur eindeutiger Werte.

Verwenden Sie in der SELECT-Klausel das Schlüsselwort DISTINCT.

Beispiel: Ihre Kunden gehören zu verschiedenen Zweigstellen, und manche haben dieselbe Telefonnummer. Die identischen Telefonnummern sollen jedoch nur einmal aufgelistet werden. Die SELECT-Klausel würde in diesem Fall wie folgt lauten:

SELECT DISTINCT [txtCustomerPhone] 

Verbessern der Lesbarkeit durch Ändern eines Bezeichners in der Datenblattansicht.

Verwenden Sie hierfür in der SELECT-Klausel den AS-Operator (Schlüsselwort zur Darstellung oder Modifizierung einer Aktion) mit einem Feldalias. Ein Feldalias ist ein Name, den Sie einem Feld zuweisen, damit die Ergebnisse einfacher lesbar sind.

SELECT [txtCustPhone] AS [Customer Phone]

Anpassen der FROM-Klausel

Anpassen

Beispiel

Sie können einer Tabelle in einer SELECT-Anweisung einen Tabellenalias oder einen anderen Namen zuweisen. Ein Tabellenalias ist hilfreich, wenn der Tabellenname sehr lang ist, besonders bei mehreren Feldern, die aus unterschiedlichen Tabellen stammen, aber denselben Namen haben.

Wählen Sie Daten aus zwei Feldern aus, die beide "ID" heißen und von denen eines aus der Tabelle "tblCustomer" und das andere aus der Tabelle "tblOrder" stammt:

SELECT [tblCustomer].[ID], 
[tblOrder].[ID]

Verwenden Sie den AS-Operator zum Definieren von Tabellenaliasnamen in der FROM-Klausel:

FROM [tblCustomer] AS [C], 
[tblOrder] AS [O]

Anschließend können Sie diese Tabellenaliasnamen in der SELECT-Anweisung wie folgt verwenden:

SELECT [C].[ID], 
[O].[ID]

Mit JOIN-Operationen (Verknüpfungen) können Sie Datensatzpaare aus zwei Datenquellen in einem Ergebnis zusammenführen oder Datensätze aus einer Tabelle in das Ergebnis einbeziehen, wenn es in der zugehörigen Tabelle keinen entsprechenden Datensatz gibt.

Verknüpfen Sie die Tabellen, damit bei der Abfrage Elemente aus den Tabellen zusammengeführt und Elemente ausgeschlossen werden, für die es in der anderen Tabelle keinen entsprechenden Datensatz gibt:

So könnte die FROM-Klausel aussehen:

FROM [tblCustomer] 
INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

Verwenden von JOIN-Operationen

Es gibt zwei Verknüpfungsarten: innere Verknüpfungen und äußere Verknüpfungen. Innere Verknüpfungen werden in Abfragen häufiger verwendet. Wird eine Abfrage mit einer inneren Verknüpfung ausgeführt, enthalten die Ergebnisse nur Elemente, die in beiden verknüpften Tabellen einen gemeinsamen Wert haben.

Äußere Verknüpfungen geben an, ob die Daten auch einbezogen werden sollen, wenn kein gemeinsamer Wert vorhanden ist. Äußere Verknüpfungen erfolgen richtungsbezogen, das heißt, Sie können angeben, ob alle Datensätze aus der in der Verknüpfung angegebenen Tabelle (LEFT JOIN) oder alle Datensätze aus der zweiten Tabelle in der Verknüpfung (RIGHT JOIN) einbezogen werden sollen. Für äußere Verknüpfungen gilt die folgende SQL-Syntax:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Weitere Informationen hierzu finden Sie unter Verwenden von Verknüpfungen in einer Abfrage.

Seitenanfang

Anpassen der WHERE-Klausel

Die WHERE-Klausel enthält Kriterien, mit denen sich die Anzahl der bei einer Anfrage zurückgegebenen Elemente einschränken lässt. Unter Beispiele für Abfragekriterien wird die Funktionsweise anhand von Beispielen erläutert.

Das Eingrenzen der Abfrageergebnisse ist nur ein Beispiel für das Anpassen einer einfachen WHERE-Klausel. Beispiel: Sie suchen die Telefonnummer eines Kunden, erinnern sich aber nur noch daran, dass sein Nachname Casselmann lautet. In diesem Beispiel sind die Nachnamen im Feld "Nachname" gespeichert. Daher sieht die WHERE-Klausel wie folgt aus:

WHERE [LastName]='Bagel'

Die WHERE-Klausel kann auch dazu verwendet werden, Datenquellen zusammenzuführen, wenn die Daten in den Spalten übereinstimmen, jedoch unterschiedliche Datentypen aufweisen. Dies ist praktisch, da Felder mit unterschiedlichen Datentypen nicht verknüpft werden können. Mithilfe des Schlüsselworts LIKE kann jedoch ein Feld als Kriterium für das andere Feld verwendet werden. Beispiel: Sie möchten nur die Daten aus der Tabelle "Posten" und der Tabelle "Mitarbeiter" verwenden, bei denen der Typ, der in der Tabelle "Posten" als Postentyp angegeben ist, in der Tabelle "Mitarbeiter" im Feld "Menge" den Wert "3" enthält. In diesem Fall würde die WHERE-Klausel wie folgt lauten:

WHERE field1 LIKE field2

Wichtig :  Für ein Feld mit einer Aggregatfunktion können Sie in einer WHERE-Klausel keine Kriterien angeben. Kriterien für aggregierte Felder werden stattdessen mit einer HAVING-Klausel angegeben.

Seitenanfang

Anpassungen mit dem UNION-Operator

Mit dem UNION-Operator können Sie eine zusammengeführte Ergebnisansicht aus verschiedenen vergleichbaren Auswahlabfragen anzeigen. Beispiel: Ihre Datenbank enthält eine Tabelle namens "Artikel" und eine weitere Tabelle namens "Dienstleistungen". In beiden Tabellen gibt es drei Felder: Exklusives Angebot bzw. Produkt oder Dienst, Preis und Gewährleistung bzw. Garantie. Auch wenn in der Tabelle "Artikel" Informationen zur Gewährleistung und in der Tabelle "Dienstleistungen" Informationen zur Garantie gespeichert sind, sind die Daten im Grunde genommen identisch. Sie können nun mithilfe einer UNION-Abfrage die drei Felder aus den beiden Tabellen wie folgt zusammenführen:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

Bei der Abfrage werden die Daten aus den einzelnen Sätzen der entsprechenden Felder in einem Ausgabefeld zusammengeführt. Soll das Ergebnis doppelte Zeilen aufweisen, müssen Sie den ALL-Operator verwenden.

Hinweis :  Die SELECT-Anweisung muss die gleiche Anzahl von Ausgabefeldern in derselben Reihenfolge sowie mit gleichen oder kompatiblen Datentypen aufweisen. Bei einer UNION-Frage werden die Datentypen "Zahl" und "Text" als kompatibel betrachtet.

Weitere Informationen zu UNION-Abfragen finden Sie unter Anzeigen eines vereinheitlichten Ergebnisses aus mehreren Abfragen 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!

×