Lista funkcji numerycznych

Jak powiedzieliśmy powyżej, nie wystarczy, aby DBMS po prostu przechowywał dane określonego typu, musi także obsługiwać obszerny zestaw superszybkich operacji na danych tego typu.

Jak wiesz, wszystkie systemy DBMS obsługują różne typy numeryczne i operacje na nich. Dziś poznasz najpopularniejsze z nich.

Wszystkie funkcje numeryczne w MySQL można warunkowo podzielić na 5 grup:

  • Operacje arytmetyczne
  • Operacje bitowe
  • Funkcje zaokrąglania
  • Funkcje algebraiczne
  • Funkcje trygonometryczne

Nawiasem mówiąc, wiele z nich znasz dzięki językowi Java, więc myślę, że nie będą dla Ciebie zaskoczeniem. Ale zacznijmy po kolei.

Pełną listę funkcji można znaleźć tutaj .

Działania arytmetyczne

Nie ma w zasadzie nic nieoczekiwanego, wszystkie te same standardowe operacje, co gdzie indziej:

# Przykład
1 +, -, *, / 2+2*2 Dodawanie, odejmowanie, mnożenie, dzielenie (nie idealne!)
2 % 13% 5 Pozostałość po dywizji
3 MOD 13MOD5 Pozostałość po dywizji
4 DIV 13 DZI 5 Dzielenie przez liczbę całkowitą

Z ciekawostek: dzieląc dwie liczby całkowite, otrzymujesz liczbę rzeczywistą. Aby podzielić przez liczbę całkowitą, musisz użyć operatora DIV.

Jeśli chcesz uzyskać resztę z dzielenia przez liczbę całkowitą, musisz użyć operatora MOD lub %, tak jak w języku Java. Nie będę podawał przykładów, bo dla mnie tutaj wszystko jest oczywiste.

Operacje bitowe

Możesz także wykonywać operacje bitowe na liczbach w SQL, podobnie jak w Javie. Chociaż są niuanse. Listę dostępnych operacji bitowych przedstawia poniższa tabela:

# Przykład Notatka
1 & 0b1111 i 0b1000 Bitowe ORAZ
2 | 0b1111 | 0b0001 Bitowe LUB
3 ^ 0b1111^0b1111 Bit XOR
4 ~ ~0b1111 inwersja bitowa
5 >> 128 >> ​​5 Przesunięcie bitu w prawo
6 << 2 << 5 Przesunięcie bitowe w lewo
7 BIT_COUNT() LICZBA_BITÓW(255) Zwraca liczbę bitów, które są równe 1

Przed MySQL w wersji 8.0 takie operacje można było wykonywać tylko na typie danych BIGINT, który miał długość 64 bitów i był podobny do typu long w Javie. Jednak w MySQL 8.0 (który rozważamy) koncepcja uległa zmianie. Teraz te operacje można wykonywać na specjalnych typach binarnych:

  • DWÓJKOWY
  • WARBINARNE
  • A także nad typami BLOB (które są tablicą bajtów)

Wszystkie inne typy są po prostu konwertowane na typ BIGINT, a operacje są wykonywane jak poprzednio (tylko na pierwszych 64 bitach).

Funkcje zaokrąglania

Do zaokrąglania w MySQL używane są boleśnie znajome funkcje. Ich wykaz znajduje się w poniższej tabeli:

# Przykład Notatka
1 CEIL(), CEILING() CEIL (5.1) = 6 Zaokrągla liczbę rzeczywistą w górę
2 PODŁOGA() PODŁOGA(5,9) = 5 Zaokrągla liczbę rzeczywistą w dół
3 OKRĄGŁY() ZAOKRĄGŁY(4,1) = 4 Zaokrągla liczbę rzeczywistą do najbliższej liczby całkowitej
4 ŚCIĘTY() SKRÓĆ(4,123; 2) = 4,12 Obcina liczbę do N miejsc po przecinku
5 SKRAJ() 0,61914388706828 Zwraca losową liczbę rzeczywistą z przedziału od 0 do 1
6 LOS(N) 0,93845168309142 Zwraca losową liczbę rzeczywistą z przedziału od 0 do 1. N jest używane jako wartość początkowa

Wszystkie funkcje zaokrąglania znasz już od pierwszego zadania w Javie. Interesujące mogą być tutaj tylko funkcje TRUNCATE() i RANDOM(N).

Funkcja TRUNCATE (liczba, ilość) przyjmuje jako pierwszy parametr liczbę rzeczywistą, a jako drugi parametr liczbę miejsc dziesiętnych do pozostawienia. Liczba jest przycinana do żądanej liczby miejsc dziesiętnych.

Jeśli chodzi o funkcję RAND(N), sprawa jest nieco bardziej skomplikowana. Jak zapewne wiesz, komputer nie może generować liczb losowych. Zamiast tego generuje tak zwaną sekwencję liczb pseudolosowych. Oznacza to, że patrząc na jedną liczbę, nie jest jasne, czy jest ona losowa, czy nie, ale sekwencja liczb może już być podobna do losowej. Programiści wykorzystują to, generując sekwencję liczb, która jest bardzo podobna do losowej.

W tym przypadku każdy nowy numer ciągu jest generowany według podstępnej reguły opartej na poprzednim numerze tego ciągu . Dlatego jeśli przekażesz pewną liczbę początkową (zwaną też ziarnem) do algorytmu generowania liczb losowych, to za każdym razem otrzymasz ten sam ciąg liczb losowych .