You are currently browsing the category archive for the 'MySQL' category.

A função COUNT pode ser usada de várias formas diferentes as quais retornam diferentes resultados de uma contagem. A mais comum é quando precisa-se saber quantas linhas existem em uma tabela, podendo ser executada com a declaração:

SELECT COUNT(*) FROM tabela

A diferença mais significativa está na contagem de registros não nulos dentro de uma tabela, que pode ser executada da seguinte forma:

SELECT COUNT(campo) FROM tabela

O resultado da última declaração é diferente da primeira pois o resultado somente apresenta a soma dos registros não nulos e não o número de linhas existentes.

Muitas vezes é necessário fazer um insert de dados em uma tabela trazendo resultados de outra na mesma base ou em bases diferentes. Como fazer? Simples:

INSERT INTO banco.tabela-destino (campo1, campo2, campo3...)
SELECT campo1,campo2,campo3... FROM banco.tabela-origem;

Atente-se para que os campos estejam na mesma seqüência tanto na instrução INSERT quanto na instrução SELECT pois é seguida a seqüência de campos em ambas as instruções. Também não se esqueça do ponto e vírgula no final da última instrução. Imprescindível.

Uma forma de obter velocidade na execução de tabelas, principalmente as temporárias, é criá-las em memória. Como estas tabelas são usadas e depois descartadas, é possível obter um ganho de performance muito grande com este truque.

Para criar uma tabela temporária em memória, faça:

CREATE TEMPORARY TABLE <nome_da_tabela> (<campos>) ENGINE=MEMORY;

Observe a necessidade obrigatória de informar o tipo de engine usado. Neste caso, a memória do servidor.

Esta dica também é válida para a criação de tabelas comuns (não-temporárias), bastando remover o argumento TEMPORARY. Mas cuidado, se o servidor cair, os dados são perdidos e não é possível recuperá-los.

A função CURDATE não funciona corretamente para a adição de dias que extrapolam o calendário. Como exemplo, a instrução a seguir retornar uma data inexistente:

// acrescentando 120 dias a data atual
 > SELECT CURDATE()+120;
 > 20071325

Para resolver isso é usada uma outra função chamada DATE_ADD, responsável pela soma correta de dias em uma determinada data:

// acrescentando 120 dias a data atual
 > SELECT DATE_ADD(CURDATE(), INTERVAL 120 DAY);
 > 2008-04-03

O mesmo pode ser feito para subtrair dias de uma data com a função DATE_SUB.

Add to Technorati Favorites

Assuntos