Funções mais Usadas no SQL
Gabriel_Silvestre
Posted on March 3, 2022
Tabela de Conteúdos
- Manipulação de Strings
IF
eCASE
- Funções Matemáticas
- Funções de Agregação
GROUP BY
eHAVING
- Links Úteis
Manipulação de Strings
O que é?
São funções nativas do MySQL responsáveis pela manipulação de strings.
O que faz?
Como dito em sua definição, essas funções nos permitem manipular strings, permitindo a normalização e formatação dos dados.
Sintaxe
Cada função lida com a string de uma forma, porém a base é sempre a mesma, primeiro temos o SELECT
e logo em seguida a função desejada, sendo que a string a ser manipulada deve ser passada como argumento.
SELECT <função>(<string>);
Upper Case UCASE
Para colocarmos toda a string em caixa alta utilizamos a função UCASE
.
SELECT UCASE(<string>);
Lower Case LCASE
Para colocarmos toda a string em caixa baixa utilizamos a função LCASE
.
SELECT LCASE(<string>);
Replace REPLACE
Podemos substituir determinada string utilizando a função REPLACE
.
SELECT REPLACE(<string>, <parte a ser substituída>, <string substituta>);
Left LEFT
Podemos selecionar um caractere específico utilizando o comando LEFT
. Nesse caso será contado os caracteres da esquerda para a direita.
SELECT LEFT(<string>, <número do caractere>);
Right RIGHT
Podemos selecionar um caractere específico utilizando o comando RIGHT
. Nesse caso será contado os caracteres da direita para a esquerda.
SELECT RIGHT(<string>, <número do caractere>);
Length CHAR_LENGTH
Conseguimos descobrir o tamanho de uma string através da função CHAR_LENGTH
.
SELECT CHAR_LENGTH(<string>);
Substring SUBSTRING
É possível extrair uma substring a partir do comando SUBSTRING
, esse que é extremamente similar ao método .slice()
.
*O índice de término é opcional
SELECT SUBSTRING(<string>, <índice de início>, <quantidade a ser extraída>);
If e Case
O que são?
São comandos de controle de fluxo, ou em outras palavras, são comandos condicionais, onde determinada ação será tomada a depender se a condição estabelecida foi atendida ou não.
Sintaxe
IF
O comando IF
funciona no MySQL de forma similar a condicional if
de outras linguagens, como JS e Python. A maior diferença é que no MySQL definimos as ações a serem tomadas dentro dos parênteses.
Dessa forma o primeiro parâmetro a ser passado no IF
é a condição, o segundo parâmetro é a ação a ser tomada caso a condição seja verdadeira e o terceiro parâmetro é a ação caso a condição seja falsa.
SELECT IF(<condição>, <ação se verdadeiro>, <ação se falso>)
FROM <DB>.<tabela>;
SELECT IF(idade >= 18, 'Maior de idade', 'Menor de idade')
FROM mydb.pessoas;
CASE
O comando CASE
funciona de forma similar a estrutura switch/case
de outras linguagens, sendo possível atribuir a ação caso a caso, assim como definir uma ação default.
Para criarmos condições usando o comando CASE
, utilizamos o comando WHEN/THEN
e para definirmos nossa ação default, utilizamos o comando ELSE
.
Sendo possível ainda renomear a coluna que irá demonstrar esses resultados, para isso utilizamos o comando END AS
, seguido do nome que desejamos dar à coluna.
SELECT <coluna>,
CASE
WHEN <condição> THEN <ação>
ELSE <ação default>
END AS <nome da coluna>
FROM <DB>.<tabela>;
SELECT idade,
CASE
WHEN idade < 18 THEN 'Menor de idade',
WHEN idade >= 18 AND idade <= 60 THEN 'Maior de idade',
ELSE 'Senior'
END AS 'idade_pessoas'
FROM mydb.pessoas;
Funções Matemáticas
O que são?
São funções nativas do MySQL que permitem a execução de cálculos matemáticos simples como: soma, subtração, divisão, multiplicação, exponenciação e raiz quadrada.
Sintaxe
Podemos realizar operações matemáticas atribuindo diretamente um valor ou designando colunas que possuam valores do tipo numérico.
Operações simples
Todas as operações listadas abaixo seguem a mesma sintaxe: número, operação e número.
-
Soma:
+
-
Subtração:
-
-
Multiplicação:
*
-
Divisão:
/
-
Divisão inteira:
DIV
-
Módulo:
MOD
SELECT <número> <operação> <número>;
SELECT 4 + 5;
Operações de funções*
Já as operações que serão listadas a seguir funcionam como funções, ou seja, precisamos passar os valores como parâmetros.
-
Exponenciação:
POW();
-
Raiz quadrada:
SQRT();
SELECT <operação>(<número>, <número>);
SELECT POW(2, 3); -- 2³ = 8
Operações de arredondamento
Ainda podemos arredondar valores utilizando as funções listadas a seguir. Lembrando que por serem funções, precisamos passar os valores a serem arredondados como parâmetro.
-
Arredondamento variável:
ROUND();
-
Arredondamento para cima:
CEIL();
-
Arredondamento para baixo:
FLOOR();
SELECT <operação>(<número>, <limite de casas decimais>);
SELECT ROUND(423.786, 2); -- 423.79
Funções de Agregação
O que são?
São funções que realizam certos cálculos que são feitos frequentemente como média, menor valor, maior valor, somatória e quantidade de linhas.
Quais são?
-
Média:
AVG();
-
Menor valor:
MIN();
-
Maior valor:
MAX();
-
Somatória:
SUM();
-
Quantidade:
COUNT();
Sintaxe
Todas as funções de agregação funcionam de maneira similar, basta definirmos a função que desejamos e passar a coluna/valor que será usada para o cálculo como parâmetro.
SELECT <função>(<coluna>) FROM <DB>.<tabela>;
SELECT AVG(age) FROM mydb.people;
Group By e Having
O que são?
Ambos são comandos para agrupar valores, sendo que o GROUP BY
irá agrupar somente baseado na coluna passada, enquanto o HAVING
possibilita a criação de um filtro para o agrupamento.
Sintaxe
Group By
O comando GROUP BY
deve ser colocado após a definição de qual tabela iremos receber os dados, seguido de qual coluna desejamos agrupar.
SELECT * FROM <DB>.<tabela>
GROUP BY <coluna>;
SELECT * FROM sakila.actor
GROUP BY first_name;
Having
O comando HAVING
é definido após o agrupamento realizado com o GROUP BY
, sendo seguido de uma condicional que realizará o filtro.
SELECT * FROM <DB>.<tabela>
GROUP BY <coluna>
HAVING <condição>;
SELECT role, AVG(salary) AS 'average_salary' FROM myDB.employees
GROUP BY role
HAVING 'average_salary' > 3000;
No exemplo acima estamos filtrando todos os cargos que tem a média salaria maior que 3000 (três mil).
Links Úteis
Posted on March 3, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.