TOP

SQL-Lektion 6. Berechnete (berechnete) Felder

Warum sollten Sie berechnete Felder verwenden? In der Regel werden die Informationen in der Datenbank in Form einzelner Fragmente dargestellt, da die Daten einfacher zu strukturieren und zu bearbeiten sind. Oftmals müssen wir jedoch nicht auf einzelne Daten zurückgreifen, sondern auf bereits zusammengefasste und verarbeitete Informationen. Beispielsweise ist es häufig erforderlich, die Vor- und Nachnamen von Kunden zusammenzufassen, Adresselemente, die sich in verschiedenen Spalten der Tabelle befinden, zu kombinieren, Text und einzelne Wörter, Buchstaben und Symbole zu verarbeiten, um die Gesamtkosten des Kaufs zusammenzufassen , um Statistiken zu den in der Datenbank enthaltenen Informationen anzuzeigen. Daten werden normalerweise in separaten „Blöcken“ gespeichert, was eine zusätzliche Verarbeitung seitens des Clientprogramms erfordert. Es ist jedoch möglich, bereits verarbeitete Informationen über ein DBMS zu erhalten. In diesem Fall helfen Berechnungsfelder. Sie werden beim Ausführen der Abfrage automatisch erstellt und haben das Aussehen und die Eigenschaften gewöhnlicher Spalten, die bereits in der Tabelle vorhanden sind. Der einzige Unterschied besteht darin, dass es keine physikalisch berechneten Felder gibt, sie also keinen zusätzlichen Platz in der Datenbank beanspruchen, sondern vorübergehend im „Zufallsspeicher“ des DBMS vorhanden sind. Der Vorteil der Ausführung von Operationen auf der DBMS-Seite ist die Geschwindigkeit der Datenverarbeitung.


1. Durchführen mathematischer Operationen

Eine Möglichkeit, berechnete Felder zu verwenden, besteht darin, mathematische Operationen an ausgewählten Daten durchzuführen. Nehmen wir ein Beispiel dafür, wie dies geschieht, indem wir erneut unsere Sumproduct-Tabelle verwenden. Angenommen, Sie müssen den durchschnittlichen Kaufpreis für jedes Produkt berechnen. Dazu müssen Sie die Spalte „Betrag“ auf „Quantity“ (Menge) umverteilen:

Run SQLSELECT DISTINCT Product, Amount/Quantity 
FROM Sumproduct

Wie Sie sehen, hat das DBMS alle Produktnamen ausgewählt und deren durchschnittliche Kosten in einer separaten Spalte angezeigt, die während der Ausführung der Abfrage erstellt wurde. Sie können auch feststellen, dass wir einen zusätzlichen Operator DISTINCT verwendet haben, den wir benötigen, um eindeutige Produktnamen anzuzeigen (ohne ihn hätten wir doppelte Datensätze).

2. Verwendung von Pseudonymen

Im vorherigen Beispiel haben wir den durchschnittlichen Kaufpreis jedes Produkts berechnet und den Wert in der Berechnungsspalte angezeigt. In Zukunft wird es für uns jedoch unpraktisch sein, auf dieses Feld zu verweisen, da sein Name für uns nicht aussagekräftig ist (das DBMS hat den Namen des Feldes angegeben – Expr1001). Wir können das Feld jedoch unabhängig benennen, indem wir seinen Namen vorab in der Abfrage angeben, also einen Alias ​​angeben. Schreiben wir das vorherige Beispiel um und geben einen Alias ​​für das berechnete Feld an:

Run SQLSELECT DISTINCT Product, Amount/Quantity AS AvgPrice 
FROM Sumproduct

Wir sehen, dass unser Berechnungsfeld einen eigenen Namen AvgPrice erhalten hat. Dazu haben wir den Operator AS verwendet und anschließend den benötigten Namen angegeben. Es ist zu beachten, dass in SQL nur grundlegende mathematische Operationen unterstützt werden: Addition (+), Subtraktion (-), Multiplikation (*), Division (/). Sie können auch runde Klammern verwenden, um die Reihenfolge der Operationen zu ändern.

Aliase werden häufig nicht nur zur Benennung von Berechnungsfeldern, sondern auch zur Umbenennung aktiver Felder verwendet. Dies kann erforderlich sein, wenn das aktive Feld einen langen Namen hat oder der Name nicht aussagekräftig genug ist.

3. Verbindung von Feldern (Verkettung)

Neben mathematischen Operationen können wir auch Texte kombinieren und in einem separaten Feld anzeigen. Lassen Sie uns überlegen, wie Sie Text zusammenfügen (verketten) können. Um Text aus verschiedenen Spalten in MS Access zu verbinden, wird der Plusoperator (+) verwendet, zum Beispiel:

Run SQLSELECT Month + ' ' + Product AS NewField, Quantity  
FROM Sumproduct

In diesem Beispiel haben wir die Werte in zwei Spalten kombiniert und das Ergebnis in ein neues Feld NewField ausgegeben.

Der Plusoperator (+) wird im MySQL-Dialekt zum Verbinden (Verketten) von Text aus mehreren Spalten nicht unterstützt. Verwenden Sie in diesem Fall die Funktion CONCAT().