Liste des fonctions numériques
Comme nous l'avons dit plus haut, il ne suffit pas qu'un SGBD stocke simplement des données d'un certain type, il doit également prendre en charge un ensemble étendu d'opérations ultra-rapides sur des données de ces types.
Et, comme vous le savez, tous les SGBD prennent en charge une variété de types numériques et d'opérations sur ceux-ci. Aujourd'hui, vous vous familiariserez avec les plus populaires d'entre eux.
Toutes les fonctions numériques de MySQL peuvent être conditionnellement divisées en 5 groupes :
- Opérations arithmétiques
- Opérations sur les bits
- Fonctions d'arrondi
- Fonctions algébriques
- Fonctions trigonométriques
Au fait, vous en connaissez beaucoup grâce au langage Java, donc je pense qu'ils ne vous surprendront pas. Mais commençons dans l'ordre.
La liste complète des fonctionnalités peut être trouvée ici .
Opérations arithmétiques
Il n'y a, en principe, rien d'inattendu, tout de même les opérations standards qu'ailleurs :
# | Exemple | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Addition, soustraction, multiplication, division (pas parfait !) |
2 | % | 13% 5 | Reste de la division |
3 | MOD | 13MOD5 | Reste de la division |
4 | DIV | 13 DIV 5 | Division par entier |
De l'intéressant : en divisant deux nombres entiers, vous obtenez un nombre réel. Pour diviser par entier, vous devez utiliser l'opérateur DIV.
Si vous souhaitez obtenir le reste d'une division par un entier, vous devez utiliser l'opérateur MOD ou %, comme dans le langage Java. Je ne donnerai pas d'exemples, car pour moi tout est évident ici.
Opérations sur les bits
Vous pouvez également effectuer des opérations au niveau du bit sur les nombres en SQL, un peu comme en Java. Bien qu'il y ait des nuances. La liste des opérations sur les bits disponibles est présentée dans le tableau ci-dessous :
# | Exemple | Note | ||
---|---|---|---|---|
1 | & | 0b1111 & 0b1000 | ET au niveau du bit | |
2 | | | 0b1111 | 0b0001 | OU au niveau du bit | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | inversion au niveau du bit | |
5 | >> | 128 >> 5 | Décalage de bits vers la droite | |
6 | << | 2 << 5 | Décalage de bits vers la gauche | |
7 | BIT_COUNT() | BIT_COUNT(255) | Renvoie le nombre de bits qui valent 1 |
Avant la version 8.0 de MySQL, de telles opérations ne pouvaient être effectuées que sur le type de données BIGINT, long de 64 bits et similaire au type long de Java. Cependant, dans MySQL 8.0 (que nous envisageons), le concept a changé. Désormais, ces opérations peuvent être effectuées sur des types binaires spéciaux :
- BINAIRE
- VARBINAIRE
- Et aussi sur les types BLOB (qui sont un tableau d'octets)
Tous les autres types sont simplement convertis en type BIGINT et les opérations sont effectuées comme avant (uniquement sur les 64 premiers bits).
Fonctions d'arrondi
Pour arrondir dans MySQL, on utilise des fonctions douloureusement familières. Une liste d'entre eux est donnée dans le tableau ci-dessous:
# | Exemple | Note | |
---|---|---|---|
1 | PLAFOND(), PLAFOND() | PLAFOND (5.1) = 6 | Arrondit un nombre réel |
2 | SOL() | PLANCHER(5.9) = 5 | Arrondit un nombre réel vers le bas |
3 | ROND() | ROND(4.1) = 4 | Arrondit un nombre réel à l'entier le plus proche |
4 | TRONQUER() | TRUNCATE(4.123, 2) = 4.12 | Tronque un nombre à N décimales |
5 | RAND() | 0.61914388706828 | Renvoie un nombre réel aléatoire entre 0 et 1 |
6 | RAND(N) | 0.93845168309142 | Renvoie un nombre réel aléatoire entre 0 et 1. N est utilisé comme valeur de départ |
Vous connaissez toutes les fonctions d'arrondi depuis la première quête en Java. Seules les fonctions TRUNCATE() et RANDOM(N) peuvent nous intéresser ici.
La fonction TRUNCATE (nombre, quantité) prend comme premier paramètre un nombre réel, et comme second paramètre le nombre de décimales à conserver. Le nombre est réduit au nombre de décimales souhaité.
Quant à la fonction RAND(N), les choses sont un peu plus compliquées. Comme vous le savez probablement, un ordinateur ne peut pas générer de nombres aléatoires. Au lieu de cela, il génère une séquence de nombres pseudo-aléatoires. Autrement dit, en regardant un nombre, il n'est pas clair s'il est aléatoire ou non, mais la séquence de nombres peut déjà être similaire au hasard. Les développeurs en profitent en générant une séquence de nombres très similaire au hasard.
Dans ce cas, chaque nouveau numéro de la séquence est généré selon une règle délicate basée sur le numéro précédent de cette séquence . Par conséquent, si vous transmettez un certain nombre de départ (également appelé graine) à l'algorithme de génération de nombres aléatoires, vous recevrez à chaque fois la même séquence de nombres aléatoires .
GO TO FULL VERSION