Inserção de Registros
A manipulação de dados em bancos de dados relacionais começa com a inserção de novos registros. A cláusula INSERT INTO permite adicionar linhas a uma tabela. Embora seja possível omitir os nomes das colunas, a boa prática recomenda sempre especificá-los para garantir a integridade dos dados, especialmente se a estrutura da tabela sofrer alterações no futuro.
CREATE TABLE IF NOT EXISTS clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome_completo VARCHAR(100) NOT NULL,
idade INT DEFAULT 18,
email VARCHAR(150) UNIQUE,
data_cadastro DATETIME DEFAULT CURRENT_TIMESTAMP,
cidade VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO clientes (nome_completo, idade, email, cidade)
VALUES ('João Silva', 28, 'joao.silva@email.com', 'São Paulo');
Sintaxe básica de inserção:
INSERT INTO nome_tabela (coluna1, coluna2, ..., colunaN)
VALUES (valor1, valor2, ..., valorN);
Atualização de Registros
Para modificar dados existentes, utilizamos a instrução UPDATE. É fundamental utilizar a cláusula WHERE para filtrar quais registros serão alterados. Omitir essa cláusula resultará na atualização de todas as linhas da tabela, o que pode causar perda de dados irreversível.
CREATE TABLE IF NOT EXISTS produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome_produto VARCHAR(100) NOT NULL,
preco DECIMAL(10, 2) DEFAULT 0.00,
estoque INT DEFAULT 0,
data_atualizacao DATETIME
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO produtos (nome_produto, preco, estoque) VALUES
('Notebook Gamer', 4500.00, 15),
('Mouse Sem Fio', 120.50, 50);
UPDATE produtos
SET preco = 4200.00, data_atualizacao = NOW()
WHERE nome_produto = 'Notebook Gamer';
Sintaxe básica de atualização:
UPDATE nome_tabela
SET coluna1 = valor1, coluna2 = valor2, ..., colunaN = valorN
WHERE condicao;
A cláusula WHERE suporta diversos operadores lógicos e de comparação para refinar o filtro:
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
| = | Igual a | 10 = 5 | false |
| <> ou != | Diferente de | 10 <> 5 | true |
| > | Maior que | 10 > 5 | true |
| < | Menor que | 10 < 5 | false |
| >= | Maior ou igual a | 10 >= 5 | true |
| <= | Menor ou igual a | 10 <= 5 | false |
| BETWEEN ... AND | Intervalo fechado | BETWEEN 5 AND 10 | [5, 10] |
| AND | E lógico (&&) | 10 > 5 AND 10 < 5 | false |
| OR | OU lógico (||) | 10 > 5 OR 10 < 5 | true |
É possível combinar múltiplas condições e utilizar funções ou variáveis como valores de atualização:
-- Atualizando com múltiplas condições
UPDATE produtos
SET estoque = 0, data_atualizacao = CURRENT_TIMESTAMP
WHERE id = 2 OR preco > 5000;
-- Utilizando funções nativas do banco de dados
UPDATE produtos
SET data_atualizacao = NOW()
WHERE nome_produto = 'Mouse Sem Fio';
Remoção de Registros
A exclusão de dados pode ser realizada de forma pontual ou para limpar a tabela completamente. Existem duas abordagens principais: DELETE e TRUNCATE.
CREATE TABLE IF NOT EXISTS logs_acesso (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario VARCHAR(50) NOT NULL,
acao VARCHAR(100),
data_registro DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO logs_acesso (usuario, acao) VALUES
('admin', 'login'),
('user1', 'view_page'),
('user2', 'logout');
-- Remover um registro específico
DELETE FROM logs_acesso WHERE id = 2;
-- Remover todos os registros (mantém a estrutura e o contador de auto incremento no InnoDB)
DELETE FROM logs_acesso;
-- Limpar a tabela rapidamente (reinicia o contador de auto incremento)
TRUNCATE TABLE logs_acesso;
Sintaxe de remoção:
-- Remoção condicional ou total
DELETE FROM nome_tabela WHERE condicao;
DELETE FROM nome_tabela;
-- Limpeza total da tabela (DDL implícito, mais rápido e reinicia auto incremento)
TRUNCATE TABLE nome_tabela;
Comportamento do Auto Incremento após limpeza:
Ao limpar completamente uma tabela, o comportamento do próximo valor de auto incremento varia conforme o mecanismo de armazenamento:
- InnoDB: O contador de auto encremento é reiniciado para 1 após um
TRUNCATEouDELETEsem condições, pois o valor máximo é mantido em memória e é perdido ao reiniciar o serviço ou limpar a tabela. - MyISAM: O contador é persistido em arquivo. Portanto, mesmo após a exclusão de todos os registros, o próximo valor de auto incremento continuará a sequência do último registro inserido antes da limpeza.