O MySQL oferece um conjunto robusto de funções nativas que facilitam a manipulação e transformação de dados diretamente no banco de dados. Estas funções são categorizadas para lidar com tipos de dados comuns como datas, strings e números, além de fornecer utilitários diversos. A seguir, exploraremos as principais funções em cada categoria.
Funções de Data e Hora
As funções de data e hora permitem obter informações sobre o tempo atual, formatar datas, realizar cálculos e extrair partes específicas de valores de data/hora.
| Função | Descrição |
|---|---|
CURDATE() |
Retorna a data atual. |
CURTIME() |
Retorna a hora atual. |
NOW() |
Retorna a data e hora atuais. |
DATE(expressao_datetime) |
Extrai a parte da data de uma expressão de data e hora. |
DATE_ADD(data, INTERVAL valor unidade) |
Adiciona um intervalo de tempo a uma data. As unidades podem ser DAY, MONTH, YEAR, MINUTE, SECOND, etc. |
DATE_SUB(data, INTERVAL valor unidade) |
Subtrai um intervalo de tempo de uma data. |
DATEDIFF(data1, data2) |
Calcula a diferença em dias entre duas datas. |
Exemplos de Uso de Funções de Data
Para obter a data atual:
SELECT CURDATE();
-- Saída: '2023-11-11' (Exemplo)
Para obter a hora atual:
SELECT CURTIME();
-- Saída: '15:46:47' (Exemplo)
Para obter a data e hora atuais (timestamp):
SELECT NOW();
-- Saída: '2023-11-11 15:47:19' (Exemplo)
Adicionar 15 dias a uma data específica:
SELECT DATE_ADD('2024-01-01', INTERVAL 15 DAY);
-- Saída: '2024-01-16'
Subtrair 2 meses de uma data:
SELECT DATE_SUB('2024-03-10', INTERVAL 2 MONTH);
-- Saída: '2024-01-10'
Calcular a diferença em dias entre duas datas:
SELECT DATEDIFF('2023-12-31', '2023-12-01');
-- Saída: 30
Considere uma tabela de posts com um campo data_publicacao:
CREATE TABLE posts (
id INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(100) NOT NULL,
data_publicacao DATETIME
);
INSERT INTO posts (titulo, data_publicacao) VALUES
('Primeiro Post', NOW()),
('Segundo Post', DATE_SUB(NOW(), INTERVAL 5 MINUTE));
SELECT * FROM posts;
+----+---------------+---------------------+
| id | titulo | data_publicacao |
+----+---------------+---------------------+
| 1 | Primeiro Post | 2023-11-11 16:03:38 |
| 2 | Segundo Post | 2023-11-11 15:58:38 |
+----+---------------+---------------------+
Para buscar posts publicados nos últimos 10 minutos, podemos usar DATE_SUB:
SELECT * FROM posts WHERE data_publicacao > DATE_SUB(NOW(), INTERVAL 10 MINUTE);
Funções de String
As funções de string são essenciais para manipular texto, formatar saídas e realizar comparações.
| Função | Descrição |
|---|---|
CHARSET(str) |
Retorna o conjunto de caracteres da string. |
CONCAT(str1, str2, ...) |
Concatena (une) duas ou mais strings. |
INSTR(str, substr) |
Retorna a posição da primeira ocorrência de substr em str. Retorna 0 se não encontrar. |
UPPER(str) / UCASE(str) |
Converte a string para maiúsculas. |
LOWER(str) / LCASE(str) |
Converte a string para minúsculas. |
LEFT(str, len) |
Retorna os len caracteres mais à esquerda de str. |
RIGHT(str, len) |
Retorna os len caracteres mais à direita de str. |
LENGTH(str) |
Retorna o comprimento da string em bytes. |
REPLACE(str, from_str, to_str) |
Substitui todas as ocorrências de from_str por to_str em str. |
SUBSTRING(str, pos, len) |
Extrai uma subcadeia de str, começando na posição pos e com comprimento len. |
TRIM(str) / LTRIM(str) / RTRIM(str) |
Remmove espaços em branco de ambas as extremidades, da esquerda ou da direita da string, respectivamente. |
Exemplos de Uso de Funções de String
Concatenar informações para formar uma descrição:
SELECT CONCAT('O produto ', 'Smartphone', ' custa ', 999.99, ' reais.') AS DescricaoCompleta;
-- Saída: 'O produto Smartphone custa 999.99 reais.'
Converter uma string para maiúsculas e minúsculas:
SELECT UPPER('mysql é fantástico'), LOWER('APRENDA SQL');
-- Saída: 'MYSQL É FANTÁSTICO', 'aprenda sql'
Obter os primeiros 5 caracteres de um texto:
SELECT LEFT('Desenvolvimento Web', 5);
-- Saída: 'Desen'
Substituir parte de uma string:
SELECT REPLACE('Isso é um teste.', 'teste', 'exemplo');
-- Saída: 'Isso é um exemplo.'
Extrair uma subcadeia (do 7º caractere, com 4 caracteres de comprimento):
SELECT SUBSTRING('Desenvolvimento', 7, 4);
-- Saída: 'volv'
Remover espaços em branco:
SELECT TRIM(' Texto com espaços ') AS TrimmedText;
-- Saída: 'Texto com espaços'
Funções Matemáticas
As funções matemáticas são empregadas para realizar cálculos numéricos, arredondamentos e outras operações aritméticas.
| Função | Descrição |
|---|---|
ABS(numero) |
Retorna o valor absoluto de um número. |
CEIL(numero) / CEILING(numero) |
Retorna o menor inteiro maior ou igual ao número (arerdonda para cima). |
FLOOR(numero) |
Retorna o maior inteiro menor ou igual ao número (arredonda para baixo). |
ROUND(numero, decimais) |
Arredonda um número para o número especificado de casas decimais. |
MOD(dividendo, divisor) |
Retorna o resto da divisão de dividendo por divisor. |
RAND() |
Retorna um número de ponto flutuante aleatório entre 0 (inclusive) e 1 (exclusive). |
FORMAT(numero, decimais) |
Formata um número para um número especificado de casas decimais, com separador de milhares. |
Exemplos de Uso de Funções Matemáticas
Valor absoluto:
SELECT ABS(-10.5);
-- Saída: 10.5
Arredondar para cima:
SELECT CEILING(7.1), CEILING(-7.9);
-- Saída: 8, -7
Arredondar para baixo:
SELECT FLOOR(7.9), FLOOR(-7.1);
-- Saída: 7, -8
Arredondar para duas casas decimais:
SELECT ROUND(123.456, 2);
-- Saída: 123.46
Obter o resto da divisão:
SELECT MOD(10, 3);
-- Saída: 1
Gerar um número aleatório:
SELECT RAND();
-- Saída: 0.123456789 (Exemplo, valor muda a cada execução)
Formatar um número com duas casas decimais e separador de milhares:
SELECT FORMAT(12345.6789, 2);
-- Saída: '12,345.68' (Comportamento pode variar com locale)
Outras Funções Úteis
Além das categorias anteriores, o MySQL possui funções para obter informações do ambiente, segurança e lógica condicional.
| Função | Descrição |
|---|---|
USER() |
Retorna o nome do usuário e host atuais do MySQL. |
DATABASE() |
Retorna o nome do banco de dados atualmente selecionado. |
MD5(str) |
Calcula o hash MD5 de uma string. |
PASSWORD(str) |
Calcula uma string de hash para senhas no MySQL (função legada, não recomendada para novas aplicações). |
IFNULL(expr1, expr2) |
Se expr1 não for NULL, retorna expr1. Caso contrário, retorna expr2. |
Exemplos de Uso de Outras Funções
Verificar o usuário conecatdo:
SELECT USER();
-- Saída: 'root@localhost' (Exemplo)
Identificar o banco de dados ativo:
SELECT DATABASE();
-- Saída: 'meu_banco_de_dados' (Exemplo)
Gerar um hash MD5 para uma string:
SELECT MD5('minhasenha');
-- Saída: '21232f297a57a5a743894a0e4a801fc3'
Utilizar IFNULL para substituir valores nulos:
SELECT IFNULL('Valor Presente', 'Valor Padrão');
-- Saída: 'Valor Presente'
SELECT IFNULL(NULL, 'Valor Padrão');
-- Saída: 'Valor Padrão'