Lista de funções numéricas
Como dissemos acima, não basta um SGBD simplesmente armazenar dados de um determinado tipo, ele também precisa suportar um extenso conjunto de operações super-rápidas em dados desses tipos.
E, como você sabe, todos os DBMSs suportam uma variedade de tipos numéricos e operações neles. Hoje você conhecerá os mais populares deles.
Todas as funções numéricas no MySQL podem ser condicionalmente divididas em 5 grupos:
- operações aritméticas
- operações de bits
- Funções de arredondamento
- funções algébricas
- Funções trigonométricas
A propósito, você está familiarizado com muitos deles graças à linguagem Java, então acho que eles não serão uma surpresa para você. Mas vamos começar em ordem.
A lista completa de recursos pode ser encontrada aqui .
Operaçoes aritimeticas
Não há, em princípio, nada de inesperado, todas as mesmas operações padrão de outros lugares:
# | Exemplo | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Adição, subtração, multiplicação, divisão (não é perfeito!) |
2 | % | 13% 5 | Restante da divisão |
3 | MOD | 13MOD5 | Restante da divisão |
4 | DIV | 13 DIV 5 | Divisão por inteiro |
Do interessante: ao dividir dois números inteiros, você obtém um número real. Para dividir por número inteiro, você precisa usar o operador DIV.
Se você deseja obter o restante de uma divisão por um número inteiro, precisa usar o operador MOD ou %, como na linguagem Java. Não vou dar exemplos, pois para mim tudo é óbvio aqui.
operações de bits
Você também pode realizar operações bit a bit em números em SQL, muito parecido com Java. Embora existam nuances. A lista de operações de bit disponíveis é apresentada na tabela abaixo:
# | Exemplo | Observação | ||
---|---|---|---|---|
1 | & | 0b1111 e 0b1000 | E bit a bit | |
2 | | | 0b1111 | 0b0001 | OU bit a bit | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | inversão bit a bit | |
5 | >> | 128 >> 5 | Deslocamento de bits para a direita | |
6 | << | 2 << 5 | Deslocamento de bits para a esquerda | |
7 | BIT_COUNT() | BIT_COUNT(255) | Retorna o número de bits que são 1 |
Antes da versão 8.0 do MySQL, tais operações só podiam ser executadas no tipo de dados BIGINT, que tinha 64 bits de comprimento e era semelhante ao tipo longo do Java. No entanto, no MySQL 8.0 (que estamos considerando), o conceito mudou. Agora, essas operações podem ser executadas em tipos binários especiais:
- BINÁRIO
- VARBINÁRIO
- E também sobre tipos BLOB (que são uma matriz de bytes)
Todos os outros tipos são simplesmente convertidos para o tipo BIGINT e as operações são realizadas como antes (somente nos primeiros 64 bits).
Funções de arredondamento
Para o arredondamento no MySQL, são usadas funções dolorosamente familiares a você. Uma lista deles é fornecida na tabela abaixo:
# | Exemplo | Observação | |
---|---|---|---|
1 | CEIL(), TETO() | CEIL (5.1) = 6 | Arredonda um número real para cima |
2 | CHÃO() | ANDAR(5,9) = 5 | Arredonda um número real para baixo |
3 | REDONDO() | RODADA(4.1) = 4 | Arredonda um número real para o inteiro mais próximo |
4 | TRUNCAR() | TRUNCAR(4.123, 2) = 4.12 | Trunca um número para N casas decimais |
5 | ALEATÓRIO() | 0,61914388706828 | Retorna um número real aleatório entre 0 e 1 |
6 | RAND(N) | 0,93845168309142 | Retorna um número real aleatório entre 0 e 1. N é usado como valor inicial |
Você está familiarizado com todas as funções de arredondamento desde a primeira missão em Java. Somente as funções TRUNCATE() e RANDOM(N) podem ser de interesse aqui.
A função TRUNCATE (número, quantidade) toma como primeiro parâmetro um número real, e como segundo parâmetro o número de casas decimais a serem deixadas. O número é ajustado para o número desejado de casas decimais.
Quanto à função RAND(N), as coisas são um pouco mais complicadas. Como você provavelmente sabe, um computador não pode gerar números aleatórios. Em vez disso, ele gera a chamada sequência numérica pseudo-aleatória. Ou seja, olhando para um número, não fica claro se é aleatório ou não, mas a sequência de números já pode ser semelhante ao aleatório. Os desenvolvedores tiram proveito disso gerando uma sequência de números muito semelhante ao aleatório.
Nesse caso, cada novo número da sequência é gerado de acordo com uma regra complicada baseada no número anterior dessa sequência . Portanto, se você passar um determinado número inicial (também chamado de semente) para o algoritmo de geração de números aleatórios, receberá sempre a mesma sequência de números aleatórios .
GO TO FULL VERSION