TOP

Lekcja SQL 6. Pola obliczone (obliczone).

Dlaczego warto używać pól obliczeniowych? Z reguły informacje w bazie prezentowane są w formie odrębnych fragmentów, gdyż łatwiej jest je uporządkować i operować na nich. Często jednak będziemy musieli wykorzystać nie pojedyncze fragmenty danych, ale już połączone i przetworzone informacje. Na przykład często konieczne jest połączenie imion i nazwisk klientów, połączenie elementów adresu znajdujących się w różnych kolumnach tabeli, przetworzenie tekstu i poszczególnych słów, liter i symboli, aby podsumować całkowity koszt zakupu , aby wyświetlić statystyki dotyczące informacji znajdujących się w bazie danych. Dane są zwykle przechowywane w oddzielnych „fragmentach”, co wymaga dodatkowego przetwarzania po stronie programu klienckiego. Istnieje jednak możliwość odbioru już przetworzonych informacji za pomocą systemu DBMS. W tym przypadku pomocne są pola obliczeniowe. Tworzą się automatycznie w momencie wykonania zapytania i mają wygląd i właściwości zwykłych kolumn, które już znajdują się w tabeli. Jedyna różnica polega na tym, że nie ma fizycznie obliczonych pól, więc nie zajmują one dodatkowej przestrzeni w DB, ale tymczasowo istnieją w „pamięci losowej” DBMS. Zaletą wykonywania operacji po stronie DBMS jest szybkość przetwarzania danych.


1. Wykonywanie operacji matematycznych

Jednym ze sposobów wykorzystania pól obliczeniowych jest wykonanie operacji matematycznych na wybranych danych. Weźmy przykład, jak to się dzieje, ponownie używając naszej tabeli Sumproduct. Załóżmy, że musisz obliczyć średnią cenę zakupu każdego produktu. Aby to zrobić, musisz ponownie rozdzielić kolumnę Amount na Quantity (ilość):

Run SQLSELECT DISTINCT Product, Amount/Quantity 
FROM Sumproduct

Jak widać, DBMS wybrał wszystkie nazwy produktów i wyświetlił ich średni koszt w osobnej kolumnie, która powstała w trakcie wykonywania zapytania. Można też zauważyć, że zastosowaliśmy dodatkowy operator DISTINCT, którego potrzebujemy, aby wyświetlić unikalne nazwy produktów (bez niego mielibyśmy zduplikowane rekordy).

2. Używanie pseudonimów

W poprzednim przykładzie obliczyliśmy średnią cenę zakupu każdego produktu i wyświetliliśmy tę wartość w kolumnie kalkulacyjnej. Jednak w przyszłości odwoływanie się do tego pola będzie dla nas niewygodne, gdyż jego nazwa jest dla nas mało informacyjna (SZBD podał nazwę pola - Expr1001). Możemy jednak nazwać pole samodzielnie, podając wcześniej w zapytaniu jego nazwę, czyli podając alias. Przepiszmy poprzedni przykład i określmy alias dla pola obliczeniowego:

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

Widzimy, że nasze pole kalkulacyjne otrzymało własną nazwę AvgPrice. W tym celu użyliśmy operatora AS, po którym podaliśmy potrzebną nam nazwę. Należy zauważyć, że w języku SQL obsługiwane są tylko podstawowe operacje matematyczne: dodawanie (+), odejmowanie (-), mnożenie (*), dzielenie (/). Możesz także użyć nawiasów okrągłych, aby zmienić kolejność operacji.

Aliasy są często używane nie tylko do nazywania pól obliczeniowych, ale także do zmiany nazw aktywnych. Może to być konieczne, jeśli aktywne pole ma długą nazwę lub nazwa nie jest wystarczająco informacyjna.

3. Połączenie pól (konkatenacja)

Oprócz operacji matematycznych możemy także łączyć tekst i wyświetlać go w osobnym polu. Zastanówmy się, jak skleić (połączyć) tekst. Aby połączyć tekst z różnych kolumn w MS Access, używany jest operator plus (+), na przykład:

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

W tym przykładzie połączyliśmy wartości w dwóch kolumnach i wyprowadziliśmy wynik do nowego pola NewField.

Operator plus (+) nie jest obsługiwany w dialekcie MySQL do łączenia (łączenia) tekstu z wielu kolumn. W takim przypadku użyj funkcji CONCAT().