SLQ E BANCO DE DADOS (MYSQL)


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

Seguidores

Quem sou eu

Minha foto
Luiz Mota, Trabalha com hardware, software e redes, formado em ciências da computação.