DICAS EXTRAS SOBRE SQL
Os comandos SQL, padrão ANSI-99,
definição e manipulação de dados são facilmente encontrado em apostilas e
manuais na web, mas alguns particularidades não se encontra tão facilmente.
Utilizarei este espaço para postar dicas que ajudarão ao desenvolvedor a
resolver problemas na construção de seus softwares, tais dicas podem ser
driblados com recursos da linguagem de
programação, porém implica em mais linhas de código e de certa forma o programador
estará reinventado a roda, tendo que
implementar algo já existente no SGDB. Muitas dicas citadas aqui é resultado de
horas de pesquisa e testes na frente do micro tentando resolver problemas
relacionados a desenvolvimento de software, se você leitor é programador e
manja muito sobre banco de dados, colabora com este material melhorando e
aperfeiçoado este trabalho e assim contribuindo para este imenso mundo de
conhecimento.
1º - DESEJA TRANSPORTAR O CONTEÚDO DE UMA TABELA PARA OUTRA
É perfeitamente possível fazer um
código com recurso na sua linguagem de programação que realize esta tarefa, mas
exige um pouco de tempo, além de ser mais lento do que utilizar SQL. Veja como
é simples alimentar uma tabela vazia a partir de outra.
INSERT
TBPRODUTO (descricao, codbarra, precocusto, precovenda,
estoque, fornecedor)
SELECT descricao, codbarra, precocusto, precovenda,
estoque, fornecedor
FROM TBPRODUTOVELHA
2º - PROBLEMA COM FORMATO DA DATA
Alguns programadores, costuma
fazer funções para converter a data no formato que o banco entenda, por exemplo: O MySQL
armazena data no formato ‘2011-08-10’ é claro que este formato de data não é
utilizado aqui no brasil, e, neste caso a maioria dos programadores desenvolvem
funções que transforma no formato convencional (dd/mm/aaaa) para mostrar na tela
e outra função para se que torna no formato do banco. Existe comando no SQL que
resolvem este problema:
·
PARA GRAVAR NO FORMATO DO
BANCO (‘YYYY-MM-DD’) USE
STR_TO_DATE(CAMPOTABELA,'%d/%m/%Y');
Neste caso sua data está no formato dd/mm/aaaa e você
deseja transformar para o formato do banco de dados, então você deverá colocar o comando
STR_TO_DATE(campotabela,'%d/%m/%Y') correspondente
ao campo da data de sua tabela
EX1:
INSERT INTO tbvenda
(codvenda, codcli, total, datavenda)
VALUES (005, 679
,180,STR_TO_DATE('18/09/2011','%d/%m/%Y'));
EX2:
Select * from tbcontas where datVen = STR_TO_DATE('25/08/2011','%d/%m/%Y');
·
PEGANDO DO BANCO NO
FORMATO ('YYYY-MM-DD') E EXIBINDO NO FORMATO ('DD-MM-YYYY')
DATE_FORMAT(CAMPOTABELA,'%d/%m/%Y')
Neste caso utiliza-se com maior frequência com
comandos de seleção para ser mostrado na tela de seu software.
EX3:
SELECT CODVENDA, TOTAL, DATE_FORMAT(DATAVENDA,'%D/%M/%Y')
FROM TBVENDA
3º -
PROBLEMACOM CAMPO NULO USE COALESCE
Esta função podemos retornar zero quando campo for nulo.
Ex:
Select COALESCE(sum(total),0.00) as soma from Tbvendas
A variável soma receber 0 se o valor desta consulta for null.
4º - CRIAR MAIS UM COLUNA COM CONTEÚDO CONDICIONAIS – use o CASE
SELECT nome,
endereco,apelido, valor,
CASE
WHEN valor
< 0 THEN 'Saldo zerado'
WHEN valor =
0 THEN 'Saldo zerado'
WHEN valor
> 0 THEN 'Saldo Positivo'
ELSE
'Indefinido'
end as SITUACAO
FROM tbcli
Neste exemplo utilize o campo valor para comparar e gerar
uma nova coluna com informações referente a coluna testada.
sempre que surgir novidades, postarei aqui