Podobnie jak w większości języków programowania, SQL zawiera funkcje przetwarzania danych. Warto zauważyć, że w przeciwieństwie do instrukcji SQL, funkcje nie są ustandaryzowane dla wszystkich typów SZBD, czyli aby wykonywać te same operacje na danych, różne SZBD mają własne nazwy funkcji. Oznacza to, że kod zapytania napisany w jednym SZBD może nie działać w innym i należy to wziąć pod uwagę w przyszłości. Dotyczy to głównie funkcji przetwarzających wartości tekstowe, konwertujących typy danych i manipulujących datami.
Większość systemów DBMS obsługuje standardowy zestaw typów funkcji, a mianowicie:
Implementacja SQL w MS Access posiada następujące funkcje przetwarzania tekstu:
Funkcjonować | Opis |
---|---|
Left() | Wybiera znaki w tekście od lewej strony |
Right() | Zaznacza znaki w tekście po prawej stronie |
Mid() | Wybiera znaki ze środka tekstu |
UCase() | Konwertuje znaki na wielkie litery |
LCase() | Konwertuje znaki na małe litery |
LTrim() | Usuwa wszystkie puste znaki po lewej stronie tekstu |
RTrim() | Usuwa wszystkie puste znaki po prawej stronie tekstu |
Trim() | Usuwa wszystkie puste znaki z obu stron tekstu |
Przekonwertujmy nazwy produktów na wielkie litery za pomocą funkcji UCase():
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
Oddzielmy pierwsze trzy znaki w tekście za pomocą funkcji LEFT():
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
Funkcje przetwarzania liczb służą do wykonywania operacji matematycznych na danych liczbowych. Funkcje te przeznaczone są do obliczeń algebraicznych i geometrycznych, dlatego są używane znacznie rzadziej niż funkcje przetwarzające datę i czas. Jednak funkcje numeryczne są najbardziej ujednolicone we wszystkich wersjach SQL. Spójrzmy na listę funkcji numerycznych:
Funkcjonować | Opis |
---|---|
SQR() | Zwraca pierwiastek kwadratowy z określonej liczby |
ABS() | Zwraca wartość bezwzględną liczby |
EXP() | Zwraca wykładnik określonej liczby |
SIN() | Zwraca sinus określonego kąta |
COS() | Zwraca cosinus określonego kąta |
TAN() | Zwraca tangens określonego kąta |
Wymieniliśmy tylko kilka głównych funkcji, ale zawsze możesz odwołać się do dokumentacji DBMS, aby uzyskać pełną listę obsługiwanych funkcji ze szczegółowymi opisami.
Na przykład napiszmy zapytanie, aby uzyskać pierwiastek kwadratowy z liczb w kolumnie Kwota za pomocą funkcji SQR():
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
Funkcje manipulacji datą i czasem należą do najważniejszych i najczęściej używanych funkcji SQL. W bazach danych wartości daty i godziny przechowywane są w specjalnym formacie, dzięki czemu nie można ich bezpośrednio wykorzystać bez dodatkowego przetwarzania. Każdy DBMS posiada własny zestaw funkcji do przetwarzania dat, co niestety nie pozwala na ich przenoszenie na inne platformy i implementacje SQL.
Lista niektórych funkcji do obsługi daty i godziny w MS Access:
Funkcjonować | Opis |
---|---|
DatePart() | Zwraca część daty: rok, kwartał, miesiąc, tydzień, dzień, godzina, minuta, sekunda |
Year(), Month() | Zwraca odpowiednio rok i miesiąc |
Hour(), Minute(), Second() | Zwraca godzinę, minuty i sekundy określonej daty |
WeekdayName() | Zwraca nazwę dnia tygodnia |
Spójrzmy na przykład działania funkcji DatePart():
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
Funkcja DatePart() posiada dodatkowy parametr, dzięki któremu możemy wyświetlić wymaganą część daty. W przykładzie wykorzystaliśmy wartość parametru „m”, który wyświetla numer miesiąca (w ten sam sposób możemy wyświetlić rok – „yyyy”, kwartał – „q”, dzień – „d”, tydzień - „w”, godzina – „h”, minuty – „n”, sekundy – „s” itp.).
Funkcje statystyczne pomagają nam uzyskać gotowe dane bez ich próbkowania. Zapytania SQL z tymi funkcjami są często używane do analizowania i generowania różnych raportów. Przykładem takich selekcji może być: określenie liczby wierszy w tabeli, uzyskanie sumy wartości dla danego pola, wyszukanie największej/najmniejszej lub średniej wartości w określonej kolumnie tabeli. Zauważamy również, że funkcje statystyczne są obsługiwane przez wszystkie SZBD bez żadnych specjalnych zmian pisemnych.
Lista funkcji statystycznych w DBMS Access:
Funkcjonować | Opis |
---|---|
COUNT() | Zwraca liczbę wierszy w tabeli lub kolumnie |
SUM() | Zwraca sumę wartości w kolumnie |
MIN() | Zwraca najmniejszą wartość w kolumnie |
MAX() | Zwraca największą wartość w kolumnie |
AVG() | Zwraca średnią wartość w kolumnie |
Zwraca liczbę wszystkich wierszy w tabeli:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
Zwraca liczbę wszystkich niepustych wierszy w polu Produkt:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
Celowo usunęliśmy jedną wartość z kolumny Produkt, aby pokazać różnicę w wydajności między dwoma zapytaniami.
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
W tym zapytaniu wyświetliliśmy łączną ilość towarów sprzedanych w miesiącu kwietniu.
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
Jak widać w funkcjach statystycznych obliczenia możemy wykonywać także na kilku kolumnach przy użyciu standardowych operatorów matematycznych.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct