Funções SQL
A linguagem SQL disponibiliza diversas funções que auxiliam na realização de determinadas consultas ao banco de dados. Mais especificamente, essas funções são divididas em quatro grupos principais:
- Funções de Data e Tempo
- Funções para Dados Nulos
- Funções Escalares
- Funções de Agregação
Como tais funções não fazem parte da especificação da linguagem SQL, fica a cargo do SGBD sua implementação. Portanto, os nomes, e a forma de utilização dessas funções variam de SGBD para SGBD. Este documento irá mostrar as funções dispníveis no MySQL.
Funções de Data e Tempo
As funções de data e tempo são muito utilizadas para recuperar auditar e recuperar registros com base em um intervalo de tempo. O MySQL disponibiliza várias funções para manipulação de datas e períodos de tempo. A tabela abaixo sumariza as principais funções existentes:
Função | Descrição |
---|---|
CURDATE() | Retorna a data atual |
DATE_ADD() | Adiciona um intervalo de tempo a uma data |
DATE_SUB() | Subtrai um intervalo de tempo a uma data |
DATE() | Extrai uma data a partir de um DATETIME |
DATEDIFF() | Subtrai duas datas |
EXTRACT() | Extrai parte de uma data |
HOUR() | Extrai a hora de uma data |
NOW() | Retorna o DATETIME atual |
TIME() | extrai o TIMESTAMP de um DATETIME |
YEAR() | Extrai a hora de um DATETIME |
Funções para Dados Nulos
Essas funções tem como propósito lidar com situações onde o dado a ser manipulado possui o valor NULL
. Por meio dessas funções, é possível fazer o tratamento de valores NULL
, tais como substituir um NULL
para um valor default.
Para isso, o MySQL disponibiliza a função IFNULL
. Essa função verifica se um campo é nulo, e caso afirmativo, substitui seu valor por um default, informado na própria função. O trecho de código abaixo mostra um exemplo de utilização dessa função:
SELECT email, IFNULL(nome, 'Desconhecido') AS nome
from usuarios;
Funções Escalares
As funções escalares tem como finalidade atuar sobre os diferentes valores e tipos de dados, de forma a modificá-los e processá-los de alguma forma. O MySQL possuí várias funções voltadas para esse propósito, tais como manipulação de strings, arrendondamento de valores, entre outros. Dentre as principais, podemos citar:
- UCASE e LCASE: Convete uma string para caixa alta e caixa baixa, respectivamente.
SELECT UCASE(nome), LCASE(email)
FROM usuarios;
- MID: Obtém uma subsequencia de caracteres de uma string.
SELECT MID(descricao, 0, 10)
FROM tarefas;
- LENGTH: Obtém o tamanho de uma string.
SELECT nome, LENGTH(nome)
FROM usuarios;
- ROUND: Arredonda um número com base na quantidade de casas decimais especificadas.
SELECT nota, ROUND(nota, 0) AS nota_final
FROM alunos;
- NOW: Obtém data e hora atuais do sistema.
SELECT * FROM tarefas
WHERE data_limite > NOW();
- DATE_FORMAT: Altera o formato de exibição de um DATETIME.
SELECT descricao, DATE_FORMAT(data_limite, '%d/%m/%Y') FROM tarefas
WHERE data_limite > NOW();
Funções de Agregação
As funções de agregação são de grande importância para a consulta no banco de dados. Tais funções agregam os valores de determinadas coluas, produzindo um único valor como resposta. Por meio das funções de agregação é possível obter a média, quantidade, valor máximo e mínimo de determinados campos. A tabela abaixo mostra as principais funções de agregação existentes no MySQL:
Função | Descrição | Exemplo |
---|---|---|
AVG() | Calcula a média dos valores de uma coluna | SELECT AVG(salario) FROM trabalhadores; |
COUNT() | Calcula a quantidade de registros | SELECT COUNT(id) FROM tarefas; |
FIRST() | Retorna o primeiro campo da consulta | SELECT FIRST(nome) FROM usuarios; |
LAST() | Retorna o último campo da consulta | SELECT LAST(nome) FROM usuarios; |
MAX() | Retorna o valo máximo da coluna | SELECT MAX(idade) FROM alunos; |
MIN() | Retorna o valor mínimo da coluna | SELECT MIN(salario) FROM trabalhadores; |
SUM() | Retorna a soma dos valores de uma coluna | SELECT SUM(salario) FROM trabalhadores; |
Geralmente, não se utiliza funções de agregação em consultas simples. Tais funções possuem grande utilidade quando utilizadas em conjunto com comandos de agrupamento (GROUP BY
).