Elenco delle funzioni numeriche
Come abbiamo detto sopra, non è sufficiente che un DBMS memorizzi semplicemente dati di un certo tipo, deve anche supportare un ampio set di operazioni super veloci su dati di questo tipo.
E, come sai, tutti i DBMS supportano una varietà di tipi numerici e operazioni su di essi. Oggi conoscerai il più popolare di loro.
Tutte le funzioni numeriche in MySQL possono essere suddivise condizionatamente in 5 gruppi:
- Operazioni aritmetiche
- Operazioni sui bit
- Funzioni di arrotondamento
- Funzioni algebriche
- Funzioni trigonometriche
A proposito, ne conosci molti grazie al linguaggio Java, quindi penso che non ti sorprenderanno. Ma partiamo con ordine.
L'elenco completo delle funzionalità può essere trovato qui .
Operazioni aritmetiche
In linea di principio, non c'è nulla di inaspettato, tutte le stesse operazioni standard che altrove:
# | Esempio | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Addizione, sottrazione, moltiplicazione, divisione (non perfetta!) |
2 | % | 13% 5 | Resto della divisione |
3 | MOD | 13MOD5 | Resto della divisione |
4 | DIV | 13 DIV 5 | Divisione per numero intero |
Dall'interessante: quando dividi due numeri interi, ottieni un numero reale. Per dividere per numero intero, è necessario utilizzare l'operatore DIV.
Se si desidera ottenere il resto di una divisione per un numero intero, è necessario utilizzare l'operatore MOD o %, come nel linguaggio Java. Non darò esempi, poiché per me tutto è ovvio qui.
Operazioni sui bit
Puoi anche eseguire operazioni bit a bit sui numeri in SQL, proprio come in Java. Sebbene ci siano sfumature. L'elenco delle operazioni bit disponibili è presentato nella tabella seguente:
# | Esempio | Nota | ||
---|---|---|---|---|
1 | & | 0b1111 e 0b1000 | AND a bit | |
2 | | | 0b1111 | 0b0001 | OR bit a bit | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | inversione bit a bit | |
5 | >> | 128 >> 5 | Un po' spostato a destra | |
6 | << | 2 << 5 | Spostamento di bit a sinistra | |
7 | BIT_COUNT() | BIT_COUNT(255) | Restituisce il numero di bit pari a 1 |
Prima della versione 8.0 di MySQL, tali operazioni potevano essere eseguite solo sul tipo di dati BIGINT, che era lungo 64 bit ed era simile al tipo lungo di Java. Tuttavia, in MySQL 8.0 (che stiamo considerando), il concetto è cambiato. Ora queste operazioni possono essere eseguite su speciali tipi binari:
- BINARIO
- VARBINARIO
- E anche sui tipi BLOB (che sono un array di byte)
Tutti gli altri tipi vengono semplicemente convertiti nel tipo BIGINT e le operazioni vengono eseguite come prima (solo sui primi 64 bit).
Funzioni di arrotondamento
Per l'arrotondamento in MySQL vengono utilizzate funzioni dolorosamente familiari. Un elenco di essi è riportato nella tabella seguente:
# | Esempio | Nota | |
---|---|---|---|
1 | CEIL(), CEILING() | CEIL (5.1) = 6 | Arrotonda per eccesso un numero reale |
2 | PAVIMENTO() | PAVIMENTO(5.9) = 5 | Arrotonda per difetto un numero reale |
3 | GIRARE() | GIRO(4.1) = 4 | Arrotonda un numero reale all'intero più vicino |
4 | TRONCARE() | TRUNCATE(4.123; 2) = 4.12 | Tronca un numero a N posizioni decimali |
5 | CASUALE() | 0.61914388706828 | Restituisce un numero reale casuale compreso tra 0 e 1 |
6 | CASO(N) | 0.93845168309142 | Restituisce un numero reale casuale compreso tra 0 e 1. N viene utilizzato come valore seme |
Conosci tutte le funzioni di arrotondamento sin dalla prima ricerca in Java. Qui possono interessare solo le funzioni TRUNCATE() e RANDOM(N).
La funzione TRUNCATE (numero, quantità) prende come primo parametro un numero reale e come secondo parametro il numero di cifre decimali da lasciare. Il numero viene ridotto al numero desiderato di posizioni decimali.
Per quanto riguarda la funzione CASUALE(N), le cose sono un po' più complicate. Come probabilmente saprai, un computer non può generare numeri casuali. Invece, genera una cosiddetta sequenza numerica pseudo-casuale. Cioè, guardando un numero, non è chiaro se sia casuale o meno, ma la sequenza di numeri potrebbe già essere simile a casuale. Gli sviluppatori ne approfittano generando una sequenza di numeri molto simile a quella casuale.
In questo caso, ogni nuovo numero della sequenza viene generato secondo una regola complicata basata sul numero precedente di questa sequenza . Pertanto, se passi un certo numero iniziale (chiamato anche seme) all'algoritmo di generazione di numeri casuali, ogni volta riceverai la stessa sequenza di numeri casuali .
GO TO FULL VERSION