// aula 02 · SQL · DML
O que é DML?
DML é o subconjunto do SQL que manipula os dados dentro das tabelas — inserindo, alterando e removendo registros. Diferente do DDL (que cria e altera estruturas), o DML opera sobre o conteúdo. Os três comandos principais são INSERT, UPDATE e DELETE.
INSERT — adicionando registros
Sempre especifique as colunas — não dependa da ordem da tabela. Se uma coluna tem valor padrão (DEFAULT) ou é AUTO_INCREMENT, pode omiti-la.
Inserir múltiplos registros de uma vez é muito mais eficiente do que múltiplos INSERTs separados.
-- Inserir um registro INSERT INTO clientes (nome, cidade, idade, ativo) VALUES ('Fernanda Lima', 'Curitiba', 27, 1); -- Inserir múltiplos registros de uma vez INSERT INTO clientes (nome, cidade, idade, ativo) VALUES ('Roberto Gomes', 'Salvador', 33, 1), ('Camila Torres', 'Recife', 25, 0), ('Diego Alves', 'Fortaleza',38, 1); -- Inserir a partir de outra tabela (INSERT SELECT) INSERT INTO clientes_inativos SELECT * FROM clientes WHERE ativo = 0;
UPDATE — alterando registros
O SET define os novos valores. O WHERE define quais linhas serão afetadas. Sem WHERE, todos os registros serão alterados!
Regra de ouro: nunca faça um UPDATE sem WHERE (a não ser que realmente queira alterar todos os registros). Antes de executar, rode um SELECT com o mesmo WHERE para conferir quantas linhas serão afetadas.
-- Atualizar um campo UPDATE clientes SET cidade = 'Campinas' WHERE id = 3; -- Atualizar múltiplos campos UPDATE clientes SET cidade = 'Porto Alegre', ativo = 1 WHERE id = 3; -- Atualizar com cálculo UPDATE produtos SET preco = preco * 1.10 -- reajuste de 10% WHERE categoria = 'eletrônicos'; -- ✅ Boa prática: confira antes com SELECT SELECT * FROM clientes WHERE id = 3; -- depois execute o UPDATE
DELETE — removendo registros
Remove linhas que atendem à condição. Sem WHERE, apaga todos os registros da tabela (mas mantém a estrutura). Operação irreversível — não tem Ctrl+Z!
Cuidado redobrado: DELETE sem WHERE apaga tudo. Sempre verifique com SELECT antes. Em produção, considere fazer um backup ou usar transações (BEGIN TRANSACTION) para poder fazer rollback.
-- Deletar um registro específico DELETE FROM clientes WHERE id = 3; -- Deletar com condição DELETE FROM clientes WHERE ativo = 0; -- ⚠️ PERIGO: apaga TUDO (sem WHERE) -- DELETE FROM clientes; -- Usando transação para segurança BEGIN TRANSACTION; DELETE FROM clientes WHERE id = 3; -- se estiver certo: COMMIT; -- se não estiver certo: -- ROLLBACK;
DELETE vs TRUNCATE vs DROP
Remove linhas com ou sem condição. Pode ser revertido com ROLLBACK. Mais lento em tabelas grandes pois registra cada linha no log.
Remove todos os registros de uma vez. Mais rápido que DELETE pois não loga cada linha. Reseta contadores AUTO_INCREMENT. Não aceita WHERE.
Remove a tabela inteira — estrutura e dados. Não tem volta. Use quando quer eliminar a tabela do banco definitivamente.