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 .