Lista de funciones numéricas
Como dijimos anteriormente, no es suficiente que un DBMS simplemente almacene datos de cierto tipo, también debe admitir un amplio conjunto de operaciones súper rápidas en datos de este tipo.
Y, como sabe, todos los DBMS admiten una variedad de tipos numéricos y operaciones en ellos. Hoy te familiarizarás con los más populares.
Todas las funciones numéricas en MySQL se pueden dividir condicionalmente en 5 grupos:
- Operaciones aritméticas
- operaciones de bits
- Funciones de redondeo
- Funciones algebraicas
- Funciones trigonométricas
Por cierto, muchos de ellos los conoces gracias al lenguaje Java, así que creo que no te sorprenderán. Pero empecemos por orden.
La lista completa de características se puede encontrar aquí .
Operaciones aritmeticas
En principio, no hay nada inesperado, todas las mismas operaciones estándar que en otros lugares:
# | Ejemplo | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Suma, resta, multiplicación, división (¡no perfecto!) |
2 | % | 13% 5 | Resto de la división |
3 | MODIFICACIÓN | 13MOD5 | Resto de la división |
4 | DIV | 13 DIV 5 | División por entero |
De lo interesante: al dividir dos enteros, se obtiene un número real. Para dividir por un número entero, debe usar el operador DIV.
Si desea obtener el resto de una división por un número entero, debe usar el operador MOD o %, como en el lenguaje Java. No daré ejemplos, ya que para mí todo es obvio aquí.
operaciones de bits
También puede realizar operaciones bit a bit en números en SQL, al igual que en Java. Aunque hay matices. La lista de operaciones de bit disponibles se presenta en la siguiente tabla:
# | Ejemplo | Nota | ||
---|---|---|---|---|
1 | & | 0b1111 y 0b1000 | Y bit a bit | |
2 | | | 0b1111 | 0b0001 | O bit a bit | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | inversión bit a bit | |
5 | >> | 128 >> 5 | Desplazamiento de bits a la derecha | |
6 | << | 2 << 5 | Desplazamiento de bit a la izquierda | |
7 | BIT_COUNT() | BIT_COUNT(255) | Devuelve el número de bits que son 1 |
Antes de la versión 8.0 de MySQL, tales operaciones solo se podían realizar en el tipo de datos BIGINT, que tenía una longitud de 64 bits y era similar al tipo largo de Java. Sin embargo, en MySQL 8.0 (que estamos considerando), el concepto ha cambiado. Ahora estas operaciones se pueden realizar en tipos binarios especiales:
- BINARIO
- VARBINARIO
- Y también sobre tipos BLOB (que son una matriz de bytes)
Todos los demás tipos simplemente se convierten al tipo BIGINT y las operaciones se realizan como antes (solo en los primeros 64 bits).
Funciones de redondeo
Para el redondeo en MySQL se usan las funciones dolorosamente familiares para usted. Una lista de ellos se da en la siguiente tabla:
# | Ejemplo | Nota | |
---|---|---|---|
1 | TECHO(), TECHO() | CEIL (5.1) = 6 | Redondea un número real hacia arriba |
2 | PISO() | PISO(5.9) = 5 | Redondea un número real hacia abajo |
3 | REDONDO() | REDONDO(4.1) = 4 | Redondea un número real al entero más cercano |
4 | TRUNCAR() | TRUNCAR(4.123, 2) = 4.12 | Trunca un número a N lugares decimales |
5 | ALEATORIO() | 0.61914388706828 | Devuelve un número real aleatorio entre 0 y 1 |
6 | ALEATORIO(N) | 0.93845168309142 | Devuelve un número real aleatorio entre 0 y 1. N se utiliza como valor inicial |
Has estado familiarizado con todas las funciones de redondeo desde la primera búsqueda en Java. Solo las funciones TRUNCATE() y RANDOM(N) pueden ser de interés aquí.
La función TRUNCATE (número, cantidad) toma como primer parámetro un número real, y como segundo parámetro el número de decimales a dejar. El número se recorta al número deseado de lugares decimales.
En cuanto a la función RAND(N), las cosas son un poco más complicadas. Como probablemente sepa, una computadora no puede generar números aleatorios. En su lugar, genera la llamada secuencia de números pseudoaleatorios. Es decir, mirando un número, no está claro si es aleatorio o no, pero la secuencia de números ya puede ser similar al azar. Los desarrolladores aprovechan esto generando una secuencia de números que es muy similar al azar.
En este caso, cada nuevo número de la secuencia se genera según una regla engañosa basada en el número anterior de esta secuencia . Por lo tanto, si pasa un cierto número inicial (también llamado semilla) al algoritmo de generación de números aleatorios, entonces cada vez que reciba la misma secuencia de números aleatorios .