Вы находитесь на странице: 1из 5

Como o MySQL pode facilitar a

sua vida
O MySQL como vrios outros SGBD tem vrias funes e comandos
especficos, nesse artigo eu vou mostrar como podemos facilitar um
pouco a nossa vida, e assim usar esses recursos fazendo o banco de
dados fazer algumas aes e no o PHP, o que deixa o processamento
da aplicao mais rpida.
Usamos IN para fazer consultas quando precisamos que seja
retornado todos os registros onde em um determinado campos
contenha um dos valores que sero passados no IN.

Funo NOT IN
Usamos NOT IN quando queremos retornar tudo menos os
resultados passados no NOT IN.
Uso em string:
SELECT sigla, nome, populao
FROM cidades
WHERE
Sigla IN(PR, SP, MG);
//NOT IN
Sigla NOT IN(PR, SP, MG);
Uso numrico:
SELECT nome, email, idade
FROM curriculos
WHERE
idade IN (18, 19, 20)
//NOT IN
idade NOT IN (15, 16, 17)
Usamos a funo IF no MySQL com a mesma finalidade do que
qualquer linguagem de programao, s que na maioria das vezes
mais fcil jogar essa verificao para o banco de dados do que para a
linguagem de programao.

A funo IF
Sintaxe: IF(condio, caso verdadeiro, caso contrrio)

Exemplo: SELECT nome, email, IF(sexo ="M", "Masculino",


"Feminino") FROM currculos

A funo CASE WHEN


Usamos a funo CASE WHEN no MySQL com a mesma finalidade do
que usamos em qualquer inguagem de programao, so que na
maioria da vezes mais fcil jogar essa verificao para o banco de
dados do que para a linguagem de programao.
Sintaxe: CASE campo WHEN "valor1" THEN "Novo valor"
Controle de fluxo:
SELECT nome, setor
CASE mes_nascimento
WHEN 01 THEN "Janeiro"
WHEN 02 THEN "Fevereiro"
WHEN 03 THEN "Maro"
WHEN 04 THEN "Abril"
WHEN 05 THEN "Maio"
WHEN 06 THEN "Junho"
WHEN 07 THEN "Julho"
WHEN 08 THEN "Agosto"
WHEN 09 THEN "Setembro"
WHEN 10 THEN "Outubro"
WHEN 11 THEN "Novembro"
ELSE "Dezembro" END AS mes_nascimento
FROM funcionrios
Condies livres:
SELECT
CASE
WHEN continente = "Amrica" THEN "Continente americano"
WHEN pais = "Brasil" THEN "Continente sul americano"
WHEN continente = "Mexico" THEN "Continente norte
americano"
WHEN estado = "Paran" THEN "Regio Sul"
WHEN estado = "So Paulo" THEN "Regio Sudeste"

Trigonometria:
pi()
= 3.14.15.93
radians(180)
= 3.1415926535898
sin(radians(60))
= 0.866025
sqrt(3)/2
= 0.86602540
degrees(asin(sqrt(3)/2)) = 60

Logartimo e potncia:
log(2)
= 0.693147
exp(1)
= 2.718282
power(2,5) = 32.000000
log10(100) = 2.000000
mod(13,7) = 6
13%7
=6
abs(-42) = 42
sign(0) = 0

Arredondamento:
ceiling() - arredonda o valor para cima;
floor() - arredonda o valor para baixo;
round() - arredonda o valor para o inteiro mais prximo;
truncate() - elimina casas decimais.
Exemplos:
ceiling(2.5) = 3
floor(2.5)
=2
round(2.5)
=2
round(2.51)
=3
truncate(2.5,0) = 2
Obs.: Todas as funes de arredondamento tambm funcionam
para nmeros negativos

Funes de string:
concat - concatema strings; pode receber 1-n parmetros;
substring - pega partes de uma string baseado na posio;
substring_index - pega partes da string baseado nos
delimitadores;
instr - encontra strings em outras strigns;
replace - modifica strings em outras strings;
length - calcula o tamanho da string;
like - compara strings utilizando wildcards.
Exemplos:
substring_index("diegohellas@hotmail.com", "@", 1) =
diegohellas
substring_index("orders.mysql.com", ".", -2) = mysql.com
reverse("orders.mysql.com") = moc.lqsym.sredro
upper("mysql") = MYSQL
lower("MySQL") = mysql

rpad("Diego", 10, ".") = diego..


char(77,121,83,81,76) = MySQL
left("Diego Felipe Hellas", 3) = Die
mid("Diego Felipe Hellas Moreira Alves", 13,6) = Hellas
rught("Diego Hellas", 6) = Hellas
trim("Q", from QQQQMySQL ABQQQ") = MySQL AB
NOW() e intervalos
SELECT NOW() ir retornar a data e hora atual do servidor MySQL no
formato aaaa-mm-dd hh:mm:ss.
SELECT NOW() + INTERVAL 2DAY
Ir retornar a data e hoira do servidor, s que com uma
diferena de 2 dias para frente(ex: hoje 2006-10-07 ele ir retornar
2006-10-09), essa diferena pode ser negativa tambm, e o intervalo
pode ser horas, minutos, segundos, dias, semanas, meses, anos, etc;
Formatando datas com o DATE_FORMAT()
Sintaxe: DATE_FORMAT(campo, formato desejado)
Especificador
%M
%W
%D
etc.)
%Y
%y
%a
%d
%e
%m
%c
%b
%j
%H
%k
%h
%I
%l
%i
%r
%T
%S

Descrio
Nome do ms (January..December)
Nome do dia da semana (Sunday..Saturday)
Dia do ms com o sufixo em Ingls (1st, 2nd, 3rd,
Ano, numrico, com 4 dgitos
Ano, numrico, com 2 dgitos
Nome do dia da semana abreviado (Sun..Sat)
Dia do ms, numrico (00..31)
Dia do ms, numrico (0..31)
Ms, numrico (01..12)
Ms, numrico (1..12)
Nome do ms, abreviado (Jan..Dec)
Dia do ano (001..366)
Hora (00..23)
Hora (0..23)
Hora (01..12)
Hora (01..12)
Hora (1..12)
Minutos, numrico (00..59)
Horrio, 12 horas (hh:mm:ss [AP]M)
Horrio, 24 horas (hh:mm:ss)
Segundos (00..59)

%s
%p
%w
%U
da semana
%u
da semana
%%

Segundos (00..59)
AM ou PM
Dia da semana (0=Domingo..6=Sbado)
Semana (00..53), onde Domingo o primeiro dia
Semana (00..53), onde Segunda o primeiro dia
Caractere `%'.

Exemplos de uso
Lembrando sempre que o MySQL armazena as datas no formato
aaaa-mm-dd.
Para selecionar a data no formato que usamos, ou de nossa
necessidade:
SELECT nome, DATE_FORMAT(data_nascimento, %d/%m/
%Y) AS data
FROM funcionarios
Esse exemplo agora muio til, eu sempre uso quando eu tenho um
formulrio que tem um campo de data e essa data temque ser
pesquisada no MySQL, com ela eu evito de ficar transformando a data
de dd/mm/aaaa para aaaa-mm-dd
SELECT nome, departamento FROM funcionrios
WHERE DATE_FORMAT(data_nascimento, %d/%m/%Y) =
22/11/1986

Funo DATEDIFF
Ela calcula a diferena em dias entre duas datas:
SELECT DATEDIFF('2006-12-31', '2006-01-01') = 364

Вам также может понравиться