Treinamento básico SQL

Tabelas importantes

https://autocom3arquivos.com.br/2018/12/17/layout-tabelas-nf-estabelecimento/

Comando SELECT

O comando SELECT permite recuperar os dados de um objeto do banco de dados, como uma tabela. A sintaxe mais básica do comando é:

  • SELECT <lista_de_campos> FROM <nome_da_tabela>

Exemplo:

  • SELECT CODIGO, NOME FROM CLIENTES;
  • SELECT * FROM CLIENTES;

O caractere * (asterísco) representa todos os campos. Apesar de prático, este caractere não é muito utilizado, pois, para o SGBD é mais rápido receber o comando com todos os campos explicitados. O uso do * obriga o servidor a consultar quais são os campos antes de efetuar a busca dos dados, criando mais um passo no processo.

Cláusula Where

A cláusula Where permite ao comando SQL passar condições de filtragem. Veja o exemplo:

 Select * from expedicao_master_nf_estabelecimento where codbarras = ‘0001180000538’ 

Nesse caso o resultado seria os dados referente a esta nota de código de barras 0018180385596

Clique na imagem para ampliar

Outro uso seria usar mais de um filtro com o where. Vamos supor que eu queira filtrar um item especifico de uma nota na tabela expedicao_itens_nf_estabelecimento. Poderia ser utilizado o comando:

 select * from expedicao_itens_nf_estabelecimento where codbarras = ‘0001180000538’ and item = ‘002’

Clique na imagem para ampliar

Exemplo:

SELECT loja, num_caixa, nfe_numero,nfe_cstat,nfe_canc,data,n14,nfe_chave FROM r04 where data >= ctod(’01/08/2018′) and data <=ctod(’31/08/2018′) and loja = ’01’ and num_caixa = ‘001’

Cláusura WHERE para busca de texto

Para busca parcial de string, o SELECT fornece o operador LIKE. Pode ser utilizado a máscara % no fim do texto ou no início e no fim. Veja o exemplo abaixo:

 Select * from expedicao_master_nf_estabelecimento where nome_req like ‘%EMANUEL%’;

Clique na imagem para ampliar

O uso de máscara no início e no fim da string fornece maior poder de busca, mas causa considerável perda de performance. Este recurso deve ser utilizado com critério.

Ordenação

A ordenação pode ser definida com o comando ORDER BY. Veja o exemplo de ordenação por data:

 Select codbarras, nome_req, data from expedicao_master_nf_estabelecimento order by data;

Clique na imagem para ampliar

A utilização da palavra DESC garante a ordenação invertida:

 Select codbarras, nome_req, data from expedicao_master_nf_estabelecimento order by data desc;

Clique na imagem para ampliar

Funções de agrupamento

São cinco as funções básicas de agrupamento:

AVG: Retorna a média do campo especificado

SELECT AVG(VALOR) FROM PEDIDOS

MIN/MAX/SUM: Respectivamente retorna o menor valor, o maior e o somatório de um grupo de registros:

SELECT MIN(VALOR) FROM PEDIDOS

SELECT MAX(VALOR) FROM PEDIDOS

SELECT AVG(VALOR) FROM PEDIDOS

COUNT: Retorna a quantidade de itens da seleção

Um exemplo de uso é o que pode ser visto abaixo:

Agrupamento

Um poderoso recurso do comando SELECT é o parâmetro GROUP BY. Através dele podemos retornar informações agrupadas de um conjunto de registros, estabelecendo uma condição de agrupamento. É um recurso muito utilizado na criação de relatórios.

O comando abaixo retorna o maior valor de pedido de cada cliente. Observe o resultado utilizando o comando MAX e GROUP BY:

 Select nome_req, max(liquido) from expedicao_master_nf_estabelecimento group by nome_req;

Clique na imagem para ampliar

Abaixo vemos quantos pedidos foram feitos por cada cliente, utilizando o comando COUNT:

 Select nome_req, count(*) from expedicao_master_nf_estabelecimento group by nome_req;

Clique na imagem para ampliar

HAVING

Através do comando HAVING podemos filtrar a cláusula GROUP BY. Observe o comando abaixo:

 Select nome_req, count(*) from expedicao_master_nf_estabelecimento group by nome_req having count(*) >= 2

Somente os clientes com 2 ou mais pedidos serão selecionados. Repare que o HAVING é utilizado, geralmente com alguma função de agrupamento.

Clique na imagem para ampliar

Leitura recomendada:

https://www.devmedia.com.br/sql-select-guia-para-iniciantes/29530

Comando INSERT

O comando para inclusão no banco de dados é o INSERT, que possui a seguinte estrutura:

 INSERT INTO nome_tabela (lista-de-campos)

VALUES (lista_dados)

OU

INSERT INTO nome_tabela  VALUES (lista_dados)

Onde:

  • Nome_tabela: nome da tabela no qual será inserido os dados.
  • Lista-de-campos: nome das colunas que receberão os valores.
  • Lista-dados: valores que serão inseridos na tabela. Estes campos devem estar na mesma ordem descrita em lista-de-campos, todos separados por vírgula. Se for utilizado um comando SELECT o mesmo deve retornar a mesma quantidade de colunas com os mesmos tipos de dados especificados em lista-de-campos.

Exemplos:

 INSERT INTO EMPREGADOS(CODIGO, NOME, SALARIO, SECAO) VALUES(1, “HELBERT CARVALHO”, 1.500, 1)

INSERT INTO EMPREGADOS VALUES(1,”HELBERT CARVALHO”,1500,1)

Na segunda opção foi omitida a declaração dos campos. Essa sintaxe funciona somente se for repassado valores para todas as colunas. Podemos também passar valores através de um comando SELECT, conforme abaixo:

 INSERT INTO EMPREGADOS(CODIGO,NOME, SALARIO, SECAO) SELECT CODIGO,NOME,SALARIO, SECAO FROM EMPREGADOS_FILIAL WHERE DEPARTAMENTO = 2

Neste comando todos os empregados da tabela. EMPREGADOS_FILIAL foram cadastrados na tabela EMPREGADOS. Se o nome dos campos não for citado no comando INSERT, o SELECT deverá retornar valores compatíveis para todos os campos disponíveis na tabela de destino.

Outros exemplos:

INSERT INTO sngpc_registroms_naoenviar (“registroms”, “incluidoem”, “incluidopor”, “lojaqincluiu”) VALUES (‘1011806180014’, ‘2018-09-24T12:02:44’, ‘LUCAS’, ‘00050’);

 INSERT INTO expedicao_master_nfvenda_itens_outrasinf (“codbarras”, “item”, “cProdANP”, “UFCons”, “st_base”, “st_valor”, “st_ipi”, “st_desp”,) VALUES (‘00011800’, ‘001’, ‘220101004’, ‘RJ’,0,0,0,0);

Comando UPDATE

Primeira lição sobre o update é: NUNCA FAÇA UPDATE SEM UMA CLAUSURA WHERE CORRETA. Esse processo é irreversível. Caso tenha dúvida, faça um select primeiro para ter certeza que a sua consulta está correta.

O comando para atualizar registros é UPDATE, que tem a seguinte sintaxe:

UPDATE nome_tabela

SET CAMPO = “novo_valor”

WHERE CONDIÇÃO

Onde:

  • Nome_tabela: nome da tabela que será modificada.
  • Campo: campo que terá seu valor alterado.
  • Novo_valor: valor que substituirá o antigo dado cadastrado em campo.
  • Where: Se não for informado, a tabela inteira será atualizada.
  • Condição: regra que impõe condição para execução do comando.

Exemplos de uso do comando update:

Primeiro fiz um select e localizei o campo que desejo alterar, que no caso é o campo DATA.

Clique na imagem para ampliar

Para alterar o campo DATA, foi utilizado o comando:

update expedicao_master_nf_estabelecimento set data = ‘2018-11-23’ where codbarras = ‘0001180000538’

Clique na imagem para ampliar

Update expedicao_master_nf_estabelecimento <<< nome da tabela

set data <<< campo que desejamos alterar

= ‘2018-11-23’ <<< valor que queremos inserir no campo

where codbarras = ‘0001180000538’ <<<filtro que fizemos para especificar o campo que desejamos alterar

Resultado do campo alterado:

Clique na imagem para ampliar

Update em mais de um campo:

update funcionarios set NOME = ‘RONALDO SILVA’, SALARIO = 1000.00 where COD_FUNC=’0012′

Neste exemplo alteramos mais de um campo de uma vez.

Leitura recomendada: https://www.devmedia.com.br/comandos-basicos-em-sql-insert-update-delete-e-select/37170

 

Print Friendly, PDF & Email

Sobre o Autor