[PIQUETE] DML - Linguagem de Manipulação de Dados
DML — Data Manipulation Language
Linguagem de Manipulação de Dados: INSERT, UPDATE e DELETE
O que é DML?
SQL é dividida em categorias:
Os 3 Comandos Principais
Tabela de Referência para os Exemplos
Usaremos a tabela alunos
para demonstrar todos os comandos. Antes de tudo, crie a estrutura no MySQL:
CREATE TABLE alunos ( id INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, curso VARCHAR(50), nota DECIMAL(4,2) );
INSERT INTO — Inserir Dados
O comando INSERT INTO é usado para adicionar novos registros (linhas) a uma tabela. Você deve especificar em quais colunas os dados serão inseridos e os respectivos valores.
Sintaxe
INSERT INTO nome_tabela (coluna1, coluna2, coluna3) VALUES (valor1, valor2, valor3);
Inserindo um único registro
INSERT INTO alunos (nome, curso, nota) VALUES ('Ana Silva', 'Informática', 8.5);
Inserindo múltiplos registros de uma vez
INSERT INTO alunos (nome, curso, nota) VALUES ('Carlos Mendes', 'Informática', 7.0), ('Beatriz Souza', 'Administração', 9.2), ('Diego Lima', 'Logística', 5.5), ('Fernanda Costa','Informática', 6.8);
id foi declarada como AUTO_INCREMENT,
portanto não precisamos informá-la no INSERT — o MySQL gera o valor automaticamente (1, 2, 3...).
UPDATE — Atualizar Dados
O comando UPDATE modifica valores já existentes em uma ou mais linhas da tabela. É essencial usar a cláusula WHERE para indicar quais registros devem ser alterados.
Sintaxe
UPDATE nome_tabela SET coluna1 = novo_valor1, coluna2 = novo_valor2 WHERE condicao;
Atualizando a nota de um aluno específico
UPDATE alunos SET nota = 9.0 WHERE id = 3; -- Beatriz Souza
Atualizando múltiplas colunas ao mesmo tempo
UPDATE alunos SET curso = 'Desenvolvimento de Sistemas', nota = 8.0 WHERE nome = 'Diego Lima';
Atualizando todos que pertencem a um curso
UPDATE alunos SET nota = nota + 0.5 -- acrescenta 0,5 ponto WHERE curso = 'Informática';
Se você executar
UPDATE alunos SET nota = 0 sem o WHERE,
todos os registros da tabela serão modificados. Sempre verifique sua condição antes de executar!
DELETE — Remover Dados
O comando DELETE remove registros de uma tabela.
Assim como o UPDATE, o WHERE é fundamental para
não excluir mais dados do que o desejado. A operação pode ser desfeita com ROLLBACK
se estiver dentro de uma transação.
Sintaxe
DELETE FROM nome_tabela WHERE condicao;
Removendo um aluno pelo ID
DELETE FROM alunos WHERE id = 4;
Removendo alunos com nota abaixo de 5
DELETE FROM alunos WHERE nota < 5.0;
Removendo todos os registros (com cuidado!)
-- DELETE sem WHERE: remove linha a linha, pode ser desfeito DELETE FROM alunos; -- TRUNCATE: muito mais rápido, reseta AUTO_INCREMENT, NÃO pode ser desfeito TRUNCATE TABLE alunos;
DELETE FROM alunos sem condição apaga todos os registros da tabela.
A estrutura da tabela permanece, mas os dados somem. Prefira usar transações (BEGIN / ROLLBACK)
em operações críticas.
O
DELETE é um comando DML — ele pode ser desfeito dentro de uma transação.
O TRUNCATE é DDL — apaga tudo instantaneamente, não registra linha a linha no log e não pode ser revertido.
Use TRUNCATE apenas quando tiver certeza absoluta.
Transações — Protegendo suas Operações
Uma transação agrupa vários comandos DML em um bloco atômico:
ou todos são confirmados juntos (COMMIT) ou todos são desfeitos (ROLLBACK).
Isso garante a integridade dos dados em caso de erro.
START TRANSACTION; -- inicia a transação INSERT INTO alunos (nome, curso, nota) VALUES ('Lucas Prado', 'Informática', 7.5); UPDATE alunos SET nota = 8.0 WHERE nome = 'Ana Silva'; -- Se tudo estiver correto: COMMIT; -- Se algo deu errado, desfaz tudo: -- ROLLBACK;
Resumo Comparativo
| Comando | Ação | Requer WHERE? | Pode desfazer? | Afeta |
|---|---|---|---|---|
| INSERT INTO | Adiciona registros | Não | Sim (ROLLBACK) | Linhas novas |
| UPDATE | Modifica registros | Sim (recomendado) | Sim (ROLLBACK) | Linhas existentes |
| DELETE FROM | Remove registros | Sim (recomendado) | Sim (ROLLBACK) | Linhas existentes |
| TRUNCATE | Remove tudo | Não se aplica | Não (DDL) | Toda a tabela |
Boas Práticas
Sempre use WHERE
Antes de executar um UPDATE ou DELETE, confirme sua condição com um SELECT para ver exatamente quais registros serão afetados.
Use Transações
Para operações críticas, envolva seus comandos em START TRANSACTION … COMMIT para ter a opção de desfazer com ROLLBACK.
Faça Backup
Antes de manipular dados em produção, sempre gere um backup (mysqldump) para garantir que você pode restaurar em caso de erro.
Teste com SELECT
Execute um SELECT * FROM tabela WHERE … com a mesma condição do UPDATE/DELETE antes de confirmar a operação.
Comentários
Postar um comentário
Ficou com alguma dúvida? Quer compartilhar sua experiência? Tem uma sugestão de
melhoria? Seu comentário é muito importante!