Grundlegende Informationen zu Abfragen

In einer Abfrage werden Daten angefordert, die in SQL Server gespeichert sind. Eine Abfrage kann auf unterschiedliche Weise ausgeführt werden:

  • Ein Benutzer von MS Query oder Microsoft Access kann eine grafische Benutzeroberfläche (Graphical User Interface, GUI) verwenden, um die gewünschten Daten aus einer oder mehreren SQL Server-Tabellen auszuwählen.

  • Ein Benutzer von SQL Server Management Studio oder des Dienstprogramms osql kann eine SELECT-Anweisung ausführen.

  • Ein Client oder eine ANwendugn der mittleren Schicht, z. B. eine Microsoft Visual Basic-Anwendung kann die Daten aus einer SQL Server-Tabelle einem gebundenen Steuerelement zuordnen, z. B. einer Tabelle.

Obwohl die Interaktion mit dem Benutzer auf unterschiedliche Weise erfolgen kann, erfüllen alle Abfragen dieselbe Aufgabe: Sie geben das Resultset einer SELECT-Anweisung an den Benutzer zurück. Auch wenn der Benutzer keine SELECT-Anweisung angibt, was normalerweise bei grafischen Tools wie Visual Studio Query Designer der Fall ist, transformiert die Clientsoftware jede Benutzerabfrage in eine SELECT-Anweisung, die an SQL Server gesendet wird.

Die SELECT-Anweisung ruft Daten von SQL Server ab und gibt sie in einem oder mehreren Resultsets an den Benutzer zurück. Ein Resultset ist eine tabellarische Anordnung der Daten aus der SELECT-Anweisung. Ebenso wie eine SQL-Tabelle besteht das Resultset aus Spalten und Zeilen.

Die vollständige Syntax der SELECT-Anweisung ist komplex, die meisten SELECT-Anweisungen beschreiben jedoch vier primäre Eigenschaften eines Resultsets:

  • Die Anzahl und die Attribute der Spalten im Resultset. Die folgenden Attribute müssen für jede Resultsetspalte definiert werden:

    • Der Datentyp der Spalte.

    • Die Größe der Spalte und bei nummerischen Spalten die Genauigkeit und Anzahl der Dezimalstellen.

    • Die Quelle der in der Spalte zurückzugebenden Datenwerte.

  • Die Tabellen, aus denen die Resultsetdaten abgerufen werden, und alle logischen Beziehungen zwischen den Tabellen.

  • Die Bedingungen, die die Zeilen in den Quelltabellen erfüllen müssen, um die SELECT-Anweisung zu kennzeichnen. Zeilen, die die Bedingungen nicht erfüllen, werden ignoriert.

  • Die Reihenfolge, in der die Zeilen des Resultsets sortiert werden.

Diese folgende SELECT-Anweisung findet die Produkt-ID, den Namen und den Listenpreis von Produkten, deren Preis pro Einheit mehr als $40 beträgt:

SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice > $40
ORDER BY ListPrice ASC

Die Spaltennamen (ProductID, Name und ListPrice) hinter dem SELECT-Schlüsselwort bilden die Auswahlliste. Diese Liste gibt an, dass das Resultset drei Spalten, jeweils mit dem Namen, dem Datentyp und der Größe der zugehörigen Spalte in der Product-Tabelle, enthält. Da die FROM-Klausel nur eine einzige Basistabelle angibt, beziehen sich alle Spaltennamen in der SELECT-Anweisung auf Spalten in dieser Tabelle.

Die FROM-Klausel gibt die Product-Tabelle als eine der Tabellen an, aus der die Daten abgerufen werden.

Die WHERE-Klausel gibt die Bedingung an, dass nur die Zeilen in der Product-Tabelle, deren Wert in der ListPrice-Spalte mehr als $40 beträgt, diese SELECT-Anweisung kennzeichnen.

Die ORDER BY-Klausel gibt an, dass das Resultset in aufsteigender Reihenfolge (ASC) nach dem Wert in der ListPrice-Spalte sortiert werden soll.