Vamos dar uns toques de SQL? VII

8 Comentários

Por Pedro Gaspar para o PPLWARE

Comandos: INSERT INTO, UPDATE e DELETE

Nas semanas anteriores temos aprendido a obter registos através de linguagem SQL, mas ate ao momento ainda não se falou de como alterar esses mesmos registos.
Hoje vamos aprender a criar novos registos, alterar os mesmos e por fim a apaga-los utilizando apenas linguagem SQL.

clip_image001

Para apresentar alguns exemplos, utilizei a tabela tbl_pplware (com algumas alterações desde a semana passada) com os seguintes dados:

Antes de podermos fazer listagens (como temos feito nas semanas anteriores) temos que ter dados na nossa base de dados, muito bem, para inserirmos esses mesmos dados utilizamos o INSERT cuja  sintaxe de utilização é a seguinte:

INSERT INTO nome_tabela (nome_campo [,nome_campo2, nome_campo3]) VALUES
 (valor_campo [, valor_campo2, valor_campo3])
EXEMPLO 1

Objectivo: Adicionar uma nova pessoa a tabela
Query:

INSERT INTO tbl_pplware( nome, telefone, cor_cabelo, nascimento, morada ) VALUES
 ('Joana Silva', 21876598, 'louro', 1988, 'Lisboa')

Nota: Não é necessário especificar o campo id_pessoa porque esse campo esta especificado como sendo de auto incrementação
Resultado:

EXEMPLO 2

Objectivo: Adicionar 3 pessoas da família Lopes
Query:

INSERT INTO tbl_pplware( nome, telefone, cor_cabelo, nascimento, morada ) VALUES
 ('Rui Lopes', 239456732, 'castanho', 1982, 'coimbra'),
 ('Silvia Lopes', 239891267, 'ruivo', 1979, 'leiria'),
 ('Paulo Lopes', 233876547, 'preto', 1977, 'coimbra')

Resultado:
A partir deste ponto já podemos inserir novos registos na nossa tabela, então e se tivermos necessidade de alterar alguns desses registos ?

Nesse caso utilizamos o UPDATE, o UPDATE permite-nos actualizar um ou mais campos na nossa tabela sendo que a sintaxe de utilização é a seguinte:

UPDATE tabela SET nome_campo = ‘valor’ [, nome_campo2 = ‘valor2’, nome_campo3 = valor3]
[WHERE clausula]

Por norma utilizamos o WHERE quando queremos actualizar algum campo, mas também é possível fazer uma actualização geral a tabela e nesse caso não necessitamos de utilizar o WHERE

EXEMPLO 3

Objectivo: Actualizar o numero de telefone da Joana Silva
Query:

UPDATE tbl_pplware SET telefone = 219345678
 WHERE nome = 'Joana Silva'

Resultado:

(SELECT nome, telefone FROM `tbl_pplware` WHERE nome = ‘joana silva’)

EXEMPLO 4

Objectivo: Adicionar 2 anos ao nascimento de cada membro da família Lopes
Query:

UPDATE tbl_pplware SET nascimento = nascimento +2
WHERE nome LIKE '%Lopes'

Resultado:

(SELECT nome, nascimento FROM tbl_pplware WHERE nome LIKE ‘%Lopes’)

Agora que ja sabemos como colocar e alterar registos com SQL só nos falta saber apagar esses mesmos registos caso seja necessário, para isso usaremos o DELETE cuje a sintaxe de utilização e a seguinte:

DELETE FROM tabela
[WHERE clausula]

Atenção caso não utilizem o WHERE eliminarão todos os registos da tabela

EXEMPLO 5

Objectivo: Apagar o registo de Joana Silva
Query:

DELETE FROM `tbl_pplware`
WHERE nome = 'Joana Silva'

Estado final da tabela:

Artigos relacionados

Partilhar:
Tags:

Comentários

8

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de CCF
    CCF

    Mais um excelente post de comandos SQL. Obrigado e continuem o excelente trabalho.

  2. Avatar de André Silva

    Não tinha conhecimento desta rubrica, mas fiquei agradado com os artigos anteriores. Talvez já esteja planeado, mas poderiam também falar de subqueries e inner joins: na minha opinião, acho que é fundamental quando trabalhamos com base de dados relacionais.

    Boa continuação de artigos!

    1. Avatar de Pedro A.
      Pedro A.

      Concordo, mas muito bem explicado como se fossemos muito burros…. Acho que os inner joins são um bocado complexos de compreender.

      1. Avatar de Pedro Gaspar
        Pedro Gaspar

        obrigado pelo apoio 🙂
        quando la chegar vou tentar explicar a coisa de forma simples 😉

  3. Avatar de HM
    HM

    Boas,

    Apesar de ser um pouco off-topic, precisava de uma ajuda.

    Preciso de saber como elaborar um select, que vá buscar à base de dados todos os registos que têm mais de 15 dias.

    Por exemplo, tenho um campo com o nome data_entrada, e preciso de saber quais os registos que têm mais de 15 dias, comparando com a data de “hoje”.

  4. Avatar de Trambulhao
    Trambulhao

    Lê o artigo anterior que fala sobre as datas: https://pplware.sitedev.pt/tutoriais/vamos-dar-uns-toques-de-sql-vi-2/

    Mas seria algo do tipo: SELECT * FROM tabela WHERE data_entrada < DATE_SUB(NOW(), INTERVAL 15 DAY);

  5. Avatar de trambulhao
    trambulhao

    Pedro Gaspar, parabéns! Mais um bom artigo da série de SQL.

    Acrescentando.. além da sintaxe demonstrada para o comando INSERT existe uma segunda opção que é a ausência dos nomes dos campos.

    ex: INSERT INTO tabela VALUE (valor1, valor2, ..valorN)

    @HM

    Lê o artigo anterior que fala sobre as datas: https://pplware.sitedev.pt/tutoriais/vamos-dar-uns-toques-de-sql-vi-2/

    Mas seria algo do tipo: SELECT * FROM tabela WHERE data_entrada < DATE_SUB(NOW(), INTERVAL 15 DAY)

  6. Avatar de p. jorge
    p. jorge

    O a sintaxe do exemplo 2 (mais que um “INSERT” utilizando “VALUES”) é específica do MySQL, e não é aceite pelo menos em MS SQL Server.