Pplware

“Cábula” do MySQL

Encontrei um artigo bastante interessante sobre mysql publicado no site http://www.php5.com.br/ e decidi partilhar convosco.

Este artigo visa ajudar aos programadores a fazer as suas tarefas mais facilmente e ajudar a diminuir o tempo de desenvolvimento.Alguns termos encontram-se em brasileiro “a gente” entende-se bem :). Vamos la começar.

A função IN e NOT IN

Usamos IN para fazer consultas quando precisamos que seja retornado todos os registros onde em um determinado campos contenha um dos valores que serão passados no IN.

Usamos NOT IN quando queremos retornar tudo menos os resultados passados no NOT IN

Uso em String: SELECT sigla, nome, população FROM cidades WHERE Sigla IN(‘PR’, ‘SP’, ‘MG’); //NOT IN Sigla NOT IN(‘PR’, ‘SP’, ‘MG’); Uso numérico: SELECT nome, email, idade FROM curriculos WHERE idade IN (18, 19, 20) //NOT IN idade NOT IN (15, 16, 17)

As funções IF e CASE WHEN

Usamos a função IF no MySQL com a mesma finalidade do que qualquer linguagem de programação, só que na maioria das vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

Sintaxe:

IF(condição, caso verdadeiro, caso contrário) SELECT nome, email, IF(sexo =”M”, “Masculino”, “Feminino”) FROM currículos

A função CASE WHEN:

Usamos a função CASE WHEN no MySQL com a mesma finalidade do que usamos em qualquer çinguagem de programação, so que na maioria da vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

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 “Março” 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 funcionários Condições livres SELECT CASE WHEN continente = “América” THEN “Continente americano” WHEN pais = “Brasil” THEN “Continente sul americano” WHEN continente = “Mexico” THEN “Continente norte americano” WHEN estado = “Paraná” THEN “Região Sul” WHEN estado = “São Paulo” THEN “Região Sudeste”

Funções matemáticas

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

Logaritmo e potência

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(2.5) = 3 floor(2.5) = 2 round(2.5) = 2 round(2.51) = 3 truncate(2.5,0) = 2

celing para cima floor para baixo round para o inteiro mais próximo truncate elimina casas decimais

Obs: todas as funções de arredondamento também funcionam para números negativos

Funções de string

concat – concatema strings; pode receber 1-n parâmetros substring – pega partes de uma string baseado na posição 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

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

Funções de tempo e de data

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 diferença de 2 dias para frente(ex: hoje é 2006-10-07 ele irá retornar 2006-10-09), essa diferença pode ser negativa também, 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 Descrição %M Nome do mês (January..December) %W Nome do dia da semana (Sunday..Saturday) %D Dia do mês com o sufixo em Inglês (1st, 2nd, 3rd, etc.) %Y Ano, numérico, com 4 dígitos %y Ano, numérico, com 2 dígitos %a Nome do dia da semana abreviado (Sun..Sat) %d Dia do mês, numérico (00..31) %e Dia do mês, numérico (0..31) %m Mês, numérico (01..12) %c Mês, numérico (1..12) %b Nome do mês, abreviado (Jan..Dec) %j Dia do ano (001..366) %H Hora (00..23) %k Hora (0..23) %h Hora (01..12) %I Hora (01..12) %l Hora (1..12) %i Minutos, numérico (00..59) %r Horário, 12 horas (hh:mm:ss [AP]M) %T Horário, 24 horas (hh:mm:ss) %S Segundos (00..59) %s Segundos (00..59) %p AM ou PM %w Dia da semana (0=Domingo..6=Sábado) %U Semana (00..53), onde Domingo é o primeiro dia da semana %u Semana (00..53), onde Segunda é o primeiro dia da semana %% Caractere `%’.

Exemplos de utilização:

Lembrando sempre que o MySQL armazena as datas no formato aaaa-mm-dd

Para seleccionar a data no formato que usamos, ou de nossa necessidade:

SELECT nome, DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) AS data FROM funcionários

Esse exemplo agora é muito útil, eu sempre uso quando eu tenho um formulário 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 funcionários WHERE DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) = ‘22/11/1986’ Função DATEDIFF

Ela calcula a diferença em dias entre duas datas

SELECT DATEDIFF(’2006-12-31′, ‘2006-01-01′) = 364

Exit mobile version