Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 2º
FUNÇÕES EM SQL
Objetivos de aprendizagem
NOMECID
SÃO PAULO
SÃO SEBASTIÃO
Figura 1 - Captura de tela do site da documentação de funções do MySQL. Fonte: Podemos também fazer uma consulta na tabela cidade
Disponível em: <https://dev.mysql.com/doc/refman/5.6/en/func-op-summary-ref.
html>. Acesso em 24 ago. 2018. para listar todas as cidades e os três primeiros caracteres do
seu respectivo nome. Para isso, podemos usar essa consulta:
Nesta aula, vamos veremos uma noção introdutória SELECT NOMECID, substr(NOMECID,1,3) FROM
sobre as funções, explicando o que fazem as funções de String, CIDADE;
funções de manipulação de datas e funções de manipulação de A seguir, reproduzimos o resultado:
15 213
2.2 - Concatenando com concat e
NOMECID substr(NOMECID,1,3) concat_ws
DOURADOS DOU Uma coisa que é muito usual quando criamos os
nossos sistemas é concatenar valores em uma única string
CAMPO GRANDE CAM apenas. Normalmente, fazemos as nossas consultas por
SÃO PAULO SÃO SQL e depois usamos a linguagem de programação para
fazer a concatenação. Mas você sabia que o SQL permite a
CUIABA CUI concatenação diretamente nas consultas?
O MySQL prevê o uso das funções concat e concat_ws.
FLORIANÓPOLIS FLO Primeiro, explicaremos o que é a função concat. Ela nada
mais é que uma função que aceita um número infinito de
SÃO SEBASTIÃO SÃO
parâmetros e devolve uma string única, com todos os valores
CAARAPÓ CAA dos parâmetros que incluímos nessa função. Vamos para um
exemplo.
BRASÍLIA BRA
SELECT concat(“Felipe”, “Pereira”, “Perez”);
TUPÃ TUP
O resultado é FelipePereiraPerez. Como nenhum espaço
SÃO JOSÉ DO RIO PRETO SÃO foi incluído, o MySQL gerou essa string direta. Para incluirmos
os espaços, poderíamos fazer de diferentes formas:
APUCARANA APU
SELECT concat(“Felipe “, “Pereira “, “Perez”);
JARDIM JAR
SELECT concat(“Felipe”, “ Pereira”, “ Perez”);
JATEI JAT SELECT concat(“Felipe”, “ “, “Pereira”, “ “,
“Perez”);
AMAMBAI AMA
Os resultados dessas três consultas são idênticas
Outra função importante de manipulação de strings é (Felipe Pereira Perez), mas existe uma forma mais elegante
a length. Seu nome é uma palavra em inglês que quer dizer de incluirmos um separador entre as palavras. Essa forma é
comprimento. Sua única função é apenas contar quantos feita por uma função chamada de concat_ws. Ela é similar
caracteres temos em uma string. Para entender melhor, vamos ao concat, mas a diferença é que o primeiro parâmetro é o
a um exemplo: caractere que deve ser colocado entre as palavras (o separador).
Vamos para um exemplo:
SELECT length(“Felipe”);
SELECT concat_ws(“ “, “Felipe”, “Pereira”,
O resultado dessa consulta é 6, pois a palavra Felipe tem “Perez”);
seis caracteres. Assim, podemos entender que essa é uma
função bastante simples. O resultado é idêntico às três consultas anteriores. Dito
Uma boa utilidade é usar essa função para verificar se isso, podemos usar essas funções para preparar um relatório
tem alguma tupla com um valor de coluna preenchida com em CSV. Nesse caso, cada linha teria os dados do cliente,
um valor incorreto. Por exemplo, um CPF tem 11 dígitos. Se separados por ponto-e-vírgula. Para obtermos isso, usamos
considerarmos os traços e pontos que utilizamos para escrever esse comando:
o nosso número, temos 14 caracteres.
Em nosso banco de dados, o DBA definiu que os SELECT concat_ws(“,”, CODCID, NOMECID,
números de CPF dos clientes seriam armazenados com os UF) FROM CIDADE;
seus pontos e traços. Assim, esperamos que os números de
Os resultados são mostrados na tabela a seguir:
CPF dos cidadãos armazenados nesse banco tenham 14
caracteres, certo? Vamos verificar rodando esse comando:
concat_ws(“,”, CODCID, NOMECID, UF)
SELECT * FROM CLIENTE WHERE length(CPF) <> 14;
1,DOURADOS,MS
E descobrimos que temos um cliente com um número
de CPF incorreto. Provavelmente, o vendedor deve ter 2,CAMPO GRANDE,MS
confundido o seu CEP com o seu número de CPF.
3,SÃO PAULO,SP
4,CUIABA,MT
CODCLI NOME (...) CEP TELEFONE CPF (...)
Nicolash
5,FLORIANÓPOLIS,SC
1 Pereira (...) 13971-150 NULL 13971-150 (...)
6,SÃO SEBASTIÃO,SC
Rodrigues
214 Banco de Dados II 16
Agora que você sabe como funcionam as funções de
7,CAARAPÓ,MS
manipulação de strings, vamos para as funções de manipulação
8,BRASÍLIA,DF de data.
10,TUPÃ,SP
3 - Funções de Data
11,SÃO JOSÉ DO RIO PRETO,SP
O MySQL oferece uma quantidade muito interessante
12,APUCARANA,PR de funções para a manipulação de datas. Vale lembrar que o
MySQL armazena as datas em colunas do tipo DATE, onde
13,JARDIM,MS armazena as datas no formato AAAA-MM-DD e em colunas
DATETIME, que abriga simultaneamente a hora,
14,JATEI,MS
armazenando no formato AAAA-MM-DD HH:MM:SS.
15,AMAMBAI,MS Para retornar a data atual, usamos a função curdate().
Vejamos como funciona:
dourados 23:15:48
PÁ DE PONTA 77.00
Agora, vamos pensar que o gerente queira aumentar os
produtos 10%. Para isso, podemos multiplicar os valores por VACINA BDD 328.90
1,10. Assim, escrevemos essa consulta:
VACINA DDD 220.00
SELECT DESCRICAO, (VALOR_UN * 1.1) FROM PRODUTO;
MASCARA 5.50
DESCRICAO (VALOR_UN * 1.1)
MASCARA SILICONE 11.00
MATA CUPIM 27.500000000000004
PINO CORTADOR 5.50
GLIFOSSATO 13.200000000000001
RANDAP 36.300000000000004 ROSCA SERRA 22 13.20
MASCARA 5.5
MASCARA SILICONE 11
Por fim, podemos usar a operação da divisão em nossas
consultas SQL. Suponhamos que queremos consultar o valor
PINO CORTADOR 5.5
de um meio produto, caso o produto seja vendido em caixa.
ROSCA SERRA 22 13.200000000000001 Para descobrir isso, escrevemos a seguinte consulta:
MANGUEIRA 04 27.500000000000004
SELECT DESCRICAO, truncate( (VALOR_UN /
BICO MANGUEIRA 3.3000000000000003
1.1), 2) FROM PRODUTO WHERE UNIDADE = ‘CX’;
ROUPA PROTECAO 58.300000000000004
PULVERIZADOR 83.60000000000001 DESCRICAO truncate( (VALOR_UN 1.1), 2)
CHAPEU DE PALHA 37.400000000000006 VACINA BDD 271.81
LUVA DE BORRACHA 2.2
VACINA DDD 181.81
Retomando a aula
Vale a pena acessar
2 - Funções de String
Nessa seção, vimos as principais funções de manipulação Minhas anotações
de string presente no MySQL. Você viu funções como concat
e concat_ws, que realizam a concatenação de strings, lcase e
ucase, que transformam as strings em letras minúsculas ou
letras maiúsculas.
3 - Funções de Data
Vimos, nessa seção, como manipular datas usando o
MySQL, como o curdate(), que retorna o dia atual do sistema,
curtime(), que retorna o horário atual, datediff, que retorna o
intervalo entre duas datas, date_add, que faz uma operação de
adição entre datas, date_format, que formata uma data salva
no banco de dados e str_to_date que converte uma string de
data para um padrão aceito pelo MySQL.
4 - Funções de Números
Finalmente, entendemos como manipular números
usando o MySQL. Estudamos, também, funções como round
e truncate, que tira casas decimais de um número de ponto
flutuante. Além disso, vimos que você pode fazer operações
aritméticas diretamente nas consultas SQL.
Vale a pena