Lista de funcții numerice
După cum am spus mai sus, nu este suficient ca un SGBD să stocheze pur și simplu date de un anumit tip, ci trebuie să suporte și un set extins de operațiuni super-rapide pe date de acest tip.
Și, după cum știți, toate SGBD-urile acceptă o varietate de tipuri numerice și operațiuni pe ele. Astăzi vă veți familiariza cu cele mai populare dintre ele.
Toate funcțiile numerice din MySQL pot fi împărțite condiționat în 5 grupuri:
- Operații aritmetice
- Operații cu biți
- Funcții de rotunjire
- Funcții algebrice
- Funcții trigonometrice
Apropo, sunteți familiarizat cu multe dintre ele datorită limbajului Java, așa că cred că nu vă vor surprinde. Dar să începem în ordine.
Lista completă a funcțiilor poate fi găsită aici .
Operatii aritmetice
Nu există, în principiu, nimic neașteptat, toate aceleași operațiuni standard ca în altă parte:
# | Exemplu | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Adunare, scădere, înmulțire, împărțire (nu perfectă!) |
2 | % | 13% 5 | Restul diviziei |
3 | MOD | 13MOD5 | Restul diviziei |
4 | DIV | 13 DIV 5 | Împărțirea după număr întreg |
Din ceea ce este interesant: atunci când împărțiți două numere întregi, obțineți un număr real. Pentru a împărți cu întreg, trebuie să utilizați operatorul DIV.
Dacă doriți să obțineți restul unei împărțiri printr-un număr întreg, atunci trebuie să utilizați fie operatorul MOD sau %, ca în limbajul Java. Nu voi da exemple, deoarece pentru mine totul este evident aici.
Operații cu biți
De asemenea, puteți efectua operații pe bit pe numere în SQL, la fel ca în Java. Deși există nuanțe. Lista operațiunilor disponibile pe biți este prezentată în tabelul de mai jos:
# | Exemplu | Notă | ||
---|---|---|---|---|
1 | & | 0b1111 și 0b1000 | ȘI pe biți | |
2 | | | 0b1111 | 0b0001 | SAU pe biți | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | inversare biți | |
5 | >> | 128 >> 5 | Deplasare biți la dreapta | |
6 | << | 2 << 5 | Deplasare biți la stânga | |
7 | BIT_COUNT() | BIT_COUNT(255) | Returnează numărul de biți care sunt 1 |
Înainte de versiunea MySQL 8.0, astfel de operațiuni puteau fi efectuate numai pe tipul de date BIGINT, care avea o lungime de 64 de biți și era similar cu tipul lung al Java. Cu toate acestea, în MySQL 8.0 (pe care îl luăm în considerare), conceptul s-a schimbat. Acum, aceste operații pot fi efectuate pe tipuri binare speciale:
- BINAR
- VARBINAR
- Și, de asemenea, peste tipurile BLOB (care sunt o matrice de octeți)
Toate celelalte tipuri sunt pur și simplu convertite în tipul BIGINT și operațiunile sunt efectuate ca înainte (doar pe primii 64 de biți).
Funcții de rotunjire
Pentru rotunjirea în MySQL sunt folosite funcții dureros de familiare. O listă a acestora este prezentată în tabelul de mai jos:
# | Exemplu | Notă | |
---|---|---|---|
1 | TAVAN(), TAVAN() | CEIL (5.1) = 6 | Rotunjește un număr real în sus |
2 | PODEA() | FLOOR(5,9) = 5 | Rotunjește un număr real în jos |
3 | RUNDĂ() | ROUND (4,1) = 4 | Rotunjește un număr real la cel mai apropiat număr întreg |
4 | TRUNCHIA() | TRUNCATE(4,123, 2) = 4,12 | Trunchiază un număr la N zecimale |
5 | RAND() | 0,61914388706828 | Returnează un număr real aleatoriu între 0 și 1 |
6 | RAND(N) | 0,93845168309142 | Returnează un număr real aleator între 0 și 1. N este folosit ca valoare de bază |
Sunteți familiarizat cu toate funcțiile de rotunjire încă de la prima căutare în Java. Numai funcțiile TRUNCATE() și RANDOM(N) pot fi de interes aici.
Funcția TRUNCATE (număr, cantitate) ia ca prim parametru un număr real, iar ca al doilea parametru numărul de zecimale care trebuie lăsat. Numărul este tăiat la numărul dorit de zecimale.
În ceea ce privește funcția RAND(N), lucrurile sunt puțin mai complicate. După cum probabil știți, un computer nu poate genera numere aleatorii. În schimb, generează o așa-numită secvență de numere pseudo-aleatoare. Adică, privind un număr, nu este clar dacă este aleatoriu sau nu, dar succesiunea numerelor poate fi deja similară cu aleatoare. Dezvoltatorii profită de acest lucru generând o secvență de numere care este foarte asemănătoare cu aleatorie.
În acest caz, fiecare număr nou al secvenței este generat conform unei reguli complicate bazate pe numărul anterior al acestei secvențe . Prin urmare, dacă treceți un anumit număr de început (numit și o sămânță) algoritmului de generare a numerelor aleatoare, atunci de fiecare dată veți primi aceeași secvență de numere aleatoare .