Wynikiem działania funkcji LOWER() jest ciąg znaków podany jako argument, ale składający się wyłącznie z małych liter. Za pomocą tej funkcji wszystkie wielkie litery argumentu zostaną zamienione na małe.
Rysunek - Funkcji skalarnych można używać m.in. w klauzulach SELECT, WHERE i ORDER BY
Wynikiem działania funkcji UPPER() jest ciąg znaków podany jako argument, ale składający się wyłącznie z wielkich liter. Za pomocą tej funkcji wszystkie małe litery argumentu zostaną zamienione na wielkie. Aby na przykład uszeregować nazwy wszystkich towarów alfabetycznie według ich nazw, bez względu na wielkość użytych w nazwie liter, napiszemy:
Rysunek - Poszczególne klauzule instrukcji są od siebie niezależne — dane mogą być na przykład sortowane według wyrażenia niewymienionego w klauzuli SELECT
Za pomocą funkcji LEFT() z podanego jako argument ciągu znaków zostanie wycięta określona liczba znaków, począwszy od lewej strony. Aby odczytać inicjały klientów, wykonamy instrukcję:
Rysunek - Przykład zagnieżdżania funkcji — najpierw odczytywane są pierwsza litera imienia i nazwiska, a następnie są one łączone w jeden ciąg
Za pomocą funkcji RIGHT() z podanego jako argument ciągu znaków zostanie wycięta określona liczba znaków, począwszy od prawej strony.
Rysunek - Wyświetlamy dane wyłącznie tych osób, których imiona kończą się na litery rd
Funkcja LTRIM() z podanego ciągu znaków usuwa wiodące spacje, funkcja RTIM() usuwa kończące (wolne) spacje, a funkcja TRIM() — zarówno wiodące, jak i wolne spacje.
Rysunek - Przed zapisaniem danych do bazy z reguły warto usunąć z nich przypadkowo dodane spacje
Za pomocą funkcji REPLACE() w ciągu znaków podanym jako pierwszy parametr zostanie wyszukany ciąg podany jako jej drugi parametr, a następnie w miejsce znalezionego ciągu będzie podstawiony ciąg podany jako trzeci parametr wywołania. Jeżeli trzeci parametr nie zostanie podany, z ciągu podstawowego będzie wycięty wyszukany ciąg znaków.
Rysunek - Funkcja REPLACE jest niezastąpiona na przykład przy przygotowywaniu kolejnej wersji tego samego zestawienia
W wyniku działania funkcji SUBSTRING() zostanie zwrócona określona liczba znaków z łańcucha tekstowego, począwszy od podanej pozycji. Jeżeli nie podamy liczby zwracanych znaków, zwrócone będą wszystkie znaki występujące po pozycji określonej przez drugi parametr. Podanie ujemnej wartości drugiego parametru spowoduje, że znaki będą liczone od prawej do lewej.
Rysunek - Siedem liter, począwszy od piątej, z nazw produktów
Działanie funkcji SPACE() powoduje zwrócenie liczby spacji określonej jako parametr.
Rysunek - Zamiast ręcznie dodawać spacje, możemy użyć do tego funkcji SPACE()
Funkcja REVERSE () zwraca ciąg znaków będący palindromem argumentu wywołania, czyli ciągiem znaków o odwróconej kolejności liter.
Rysunek - Zapytanie zwracające imiona będące palindromami
Funkcja LENGTH() jako wynik zwraca długość ciągu znaków podanego jako parametr jej wywołania. Jeżeli wywołamy funkcję LENGTH() z wartością Null, funkcja zwróci wartość Null. Za pomocą poniższej instrukcji wyświetlimy tylko te opisy towarów, które mają długie (dłuższe niż 10-znakowe) nazwy.
Rysunek - Funkcja LENGTH() użyta do selekcji wierszy
W wyniku działania funkcji INSTR() będzie zwrócona pozycja, na której w ciągu znaków podanym jako pierwszy parametr został znaleziony ciąg znaków podany jako drugi parametr. Jeżeli szukany ciąg znaków nie będzie znaleziony, funkcja zwróci 0.
Rysunek - Wykorzystanie funkcji INSTR() do wybrania produktów, które w nazwie mają literę a
Funkcje liczbowe pozwalają wykonywać dodatkowe (oprócz dodawania, odejmowania czy mnożenia) operacje matematyczne oraz formatować liczby.
Działanie funkcji ROUND() polega na zaokrągleniu liczby do określonej liczby cyfr po przecinku. Pierwszy parametr jest liczbą do zaokrąglenia, drugi wskazuje, do ilu pozycji chcemy ją zaokrąglić. Ujemna wartość powoduje zaokrąglenie liczby z lewej strony przecinka; 0 spowoduje zaokrąglenie do najbliższej liczby całkowitej. Jeżeli drugi parametr nie jest podany, serwer baz danych przyjmuje domyślnie jego wartość jako równą 0.
Rysunek - Przykład użycia funkcji ROUND()
Funkcja TRUNCATE() powoduje obcięcie liczby do określonej liczby cyfr po przecinku. Pierwszy parametr jest liczbą do obcięcia, drugi wskazuje, do ilu pozycji chcemy liczbę skrócić. Ujemna wartość powoduje dodanie określonej liczby zer z lewej strony przecinka. Jeżeli drugi parametr nie jest podany, MySQL przyjmuje domyślnie jego wartość jako równą 0.
Rysunek - Obcięcie miejsc po przecinku i zaokrąglenie do iluś miejsc po przecinku to dwie operacje
Wynikiem działania funkcji ABS() jest wartość bezwzględna liczby (liczba bez znaku). Jako parametr podaje się liczbę, której wartość bezwzględną należy obliczyć.
Rysunek - Funkcja ABS() użyta do sprawdzenia, czy dana liczba jest dodatnia
Za pomocą funkcji CEILING() zwrócona zostanie najmniejsza liczba całkowita równa liczbie podanej jako argument funkcji lub większa. Funkcja FLOOR() zwraca największą liczbę całkowitą równą liczbie podanej jako argument funkcji lub mniejszą.
Rysunek – Zwróćmy uwagę na wynik wywołania funkcji z argumentem Null
Funkcja POWER() sprawia, że liczba podana jako pierwszy parametr zostanie podniesiona do potęgi podanej jako drugi parametr. Wartości drugiego parametru mogą być mniejsze niż zero.
Rysunek - Często tę samą funkcję możemy wywołać za pomocą kilku nazw
W wyniku działania funkcji SQRT() zwrócony będzie pierwiastek kwadratowy z liczby podanej jako parametr wywołania.
Rysunek - Przykład użycia funkcji SQRT()
Funkcja MOD() zwraca jako wynik wartość reszty po podzieleniu liczby podanej jako pierwszy parametr przez dzielnik podany jako drugi parametr wywołania funkcji. Jeżeli wartość drugiego parametru wynosi 0, zwracana jest liczba podana jako pierwszy parametr.
Rysunek - Zapytanie zwracające dane towarów o parzystych identyfikatorach
W wyniku działania funkcji SIN() (sinus), COS() (cosinus), TAN()(tangens) i COT() (cotangens) zwrócona zostanie wartość odpowiednich funkcji trygonometrycznych — dla parametru będącego kątem w radianach będzie obliczony odpowiednio: sinus, cosinus, tangens lub cotangens. Aby przeliczyć kąty z radianów na stopnie, należy posłużyć się wzorem: stopnie · PI()/180 = radiany.
Rysunek - Przykład użycia funkcji trygonometrycznych
Funkcja RAND() zwraca pseudolosową liczbę z przedziału od 0 do 1. Serwer MySQL oblicza tę wartość dla każdego wiersza wyniku (listing 5.20), co pozwala użyć funkcji RAND() do losowego wybierania danych z tabeli.
Rysunek - MySQL w przeciwieństwie do niektórych serwerów baz danych wylicza wartości funkcji RAND() dla każdego wiersza wyniku
Rysunek - Każde wywołanie tej instrukcji zwróci informację o innym, losowo wybranym towarze
Funkcja SIGN() zwraca 1, jeżeli argumentem jej wywołania była liczba większa od 0, lub 0, jeżeli argumentem jej wywołania było 0, albo –1, jeżeli została wywołana dla liczby mniejszej od zera.
Rysunek - Funkcja SIGN() wywołana dla wyniku odjęcia wartości dwóch kolumn
Funkcja FORMAT() zwraca przekazaną jako pierwszy argument wywołania liczbę z określoną przez drugi parametr liczbą miejsc po przecinku.
Rysunek - Formatowanie liczb polega na określaniu miejsc po przecinku
Kolejna często używana grupa funkcji to funkcje operujące na argumentach będących zapisem daty lub czasu. W prawie każdej bazie danych część przechowywanych w niej informacji musi mieć jakiś znacznik czasu — atrybut pozwalający na sprawdzenie, kiedy rekord został dodany lub zmodyfikowany. Informacje takie jak dane o poszczególnych transakcjach finansowych stają się bezwartościowe po wyeliminowaniu dat tych operacji. Dlatego MySQL posiada predefiniowane funkcje pozwalające wykonywać podstawowe operacje na danych tego typu.
Wynikiem działania funkcji CURDATE() jest bieżąca data, a funkcji CURTIME() — bieżący czas. Częstym zastosowaniem funkcji jest automatyczne wstawianie informacji o czasie utworzenia lub zmodyfikowania danych.
Rysunek - Odczytanie bieżącej daty i czasu systemowego
Funkcja NOW() zwraca zarówno datę, jak i czas systemowy.
Rysunek - Przykład wywołania funkcji NOW(). Należy zwrócić uwagę, że nawet jeżeli funkcja wywoływana jest bez parametrów, trzeba użyć nawiasów
Funkcje DAYOFMONTH(), DAYOFWEEK(), DAYOFYEAR() zwracają numer dnia odpowiednio: miesiąca (liczba z zakresu od 1 do 31), tygodnia (liczba z zakresu od 1 do 7, gdzie 1 oznacza niedzielę — pierwszy dzień tygodnia, a 7 sobotę — siódmy dzień tygodnia) i roku (liczba z zakresu od 1 do 365).
Rysunek - Lista zamówień złożonych w piątek
Funkcje DAY(), MONTH(), YEAR() zwracają odpowiednio dzień, miesiąc i rok z daty przekazanej jako parametr wywołania.
Rysunek - Informacja o dacie zamówień rozbita na dni, miesiące i lata
Funkcje HOUR(), MINUTE(), SECOND() zwracają odpowiednio godziny, minuty i sekundy z czasu przekazanego jako parametr wywołania.
Rysunek - Informacja o bieżącym czasie rozbita na godziny, minuty i sekundy
Funkcje DAYNAME(), MONTHNAME() zwracają nazwę dnia tygodnia i miesiąca daty będącej argumentem wywołania.
Rysunek - Opisowo przedstawione dni tygodnia i nazwy miesięcy
Działanie funkcji DATE_ADD() powoduje obliczenie wyniku zmiany daty (podanej jako pierwszy parametr) o ilość jednostek czasu określoną przez drugi parametr.
Rysunek - Terminy zrealizowania zamówień zostały przesunięte o trzy dni
Wynikiem działania funkcji DATEDIFF() jest liczba dni, które dzielą daty podane jako parametry funkcji.
Rysunek - Aliasy zdefiniowane w klauzuli SELECT nie mogą być użyte w innych klauzulach. Zamiast tego musimy powtórzyć całe wyrażenie
Rysunek - Daty zrealizowania zamówień w oryginalnym i polskim formacie uzupełnione o informacje o bieżącym czasie
W wyniku działania funkcji ASCII() będzie zwrócony kod ASCII znaku podanego jako parametr wywołania. Jeżeli jako parametr podamy ciąg znaków, za pomocą tej funkcji zostanie obliczony i zwrócony kod ASCII pierwszego znaku w ciągu.
Rysunek - Konwersja znaków na liczby
Działanie funkcji CHR() jest przeciwieństwem działania funkcji ASCII() — zamiast zamiany tekstu na liczbę przeprowadza konwersję liczby na odpowiadające jej znaki kodu ASCII.
Rysunek - Funkcję CHR() często stosuje się w celu „oszukania” prostych zabezpieczeń przed iniekcją kodu
Funkcja BIN() zwraca binarną reprezentację podanej liczby dziesiętnej.
Rysunek - Zmiana podstawy licz
Funkcja CAST() pozwala przekonwertować (rzutować) dane przekazane jako pierwszy parametr wywołania na typ podany jako drugi parametr funkcji.
Rysunek - CAST() jest najbardziej uniwersalną funkcją konwersji
Funkcja ENCODE() zwraca szyfrogram podanego ciągu znaków. Do szyfrowania używane jest hasło podane jako drugi parametr wywołania. Funkcja DECODE() deszyfruje zaszyfrowane funkcją ENCODE() szyfrogramy.
Rysunek - Poufne dane lepiej przechowywać w bazie w postaci zaszyfrowanej
Funkcja SHA1() wylicza sygnaturę podanego ciągu znaków.
Rysunek - W niektórych przypadkach trzeba móc potwierdzić autentyczność danych. Najlepiej wykorzystać do tego funkcję mieszania
Hasła użytkowników muszą być chronione, a to oznacza, że nigdy nie należy zapisywać ich w bazie w jawnej postaci. Prawie zawsze hasło wykorzystywane jest jedynie do potwierdzenia tożsamości użytkownika, a do tego celu serwer baz danych nie musi odszyfrować hasła, czyli hasła powinny być zapisane nieodwracalnie zaszyfrowane. Wiemy już, że tak działają funkcje mieszania — hasła do serwera MySQL też są tak przechowywane, z tym że do ich wyliczenia i późniejszego porównania wykorzystywana jest funkcja PASSWORD().
Rysunek - Do sprawdzania tożsamości należy używać sygnatur haseł, nie samych haseł
Funkcja LAST_INSERT_ID() zwraca ostatni identyfikator wygenerowany podczas wstawiania przez bieżącego użytkownika wiersza do tabeli. Tego typu informacje są z reguły potrzebne programistom aplikacji klienckich, żeby mogli oni powiązać wstawiony właśnie wiersz z wcześniej zapisanymi w bazie danymi.
Rysunek - Zakresem działania funkcji LAST_INSERT_ID() jest pojedyncza sesja, a więc nie zwróci ona identyfikatorów wierszy wstawionych przez innych użytkowników