Todos sabemos que no MySQL, podemos montar praticamente qualquer tipo de retorno de informação a partir dos dados armazenados em suas tabelas, em forma de registros (ou tuplas). Podemos fazer consultas SELECT com JOIN, WHERE, HAVING para mudar o escopo do resultado de linhas específicas, usar GROUP BY para combinar resultados, UNION para combinar múltiplas queries.
Mas também existem casos em que precisamos retornar alguma informação mais comum, utilizada mais frequentemente em nossos sistemas. Vou mostrar agora 6 consultas no MySQL que podem ser úteis para o dia a dia de nossos softwares.
1 - Idade em anos:
Você tem uma data de aniversário e precisa calcular quantos anos o usuário tem. Vamos assumir que @datanasc é a data:
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@datanasc)), '%Y') + 0;
2 - Diferença entre duas datas:
Encontre a diferença entre dois valores de datas em segundos, minutos, horas e dias. Se dt1 e dt2 são valores do tipo datetime na forma "yyyy-mm-dd hh:mm:ss', o numero de segundos entre dt1 e dt2 é
UNIX_TIMESTAMP( dt2 ) - UNIX_TIMESTAMP( dt1 )
Para pegar o número de minutos, divida o resultado por 60, para o número de horas, divida por 3600 e para pegar a quantidade de dias, divida por 3600 * 24.
3 - Exiba valores que ocorrem X vezes em uma coluna
SELECT id FROM tbl GROUP BY id HAVING COUNT(*) = N;
4 - Quantidade de dias úteis entre duas datas
SELECT COUNT(*) FROM calendar WHERE d BETWEEN Start AND Stop AND DAYOFWEEK(d) NOT IN(1,7) AND holiday=0;
5 - Encontre a chave primária da tabela
SELECT k.column_name FROM information_schema.table_constraints t JOIN information_schema.key_column_usage k USING (constraint_name,table_schema,table_name) WHERE t.constraint_type='PRIMARY KEY' AND t.table_schema='db' AND t.table_name='tbl'
6 - Veja o tamanho de seu banco de dados
SELECT table_schema AS 'Db Name', Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS Db Size (MB)', Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Free Space (MB)' FROM information_schema.tables GROUP BY table_schema ;
Nenhum comentário:
Postar um comentário