Linguagem SQL - Comandos DML e DQL
Introdução
Os comandos DML (Manipulação de Dados) e DQL (Consulta de Dados), fundamentais para manipular e consultar os dados armazenados nas tabelas.
- Entender e implementar comandos DML como
INSERT,UPDATEeDELETE; - Consultar campos e registros de uma tabela utilizando
SELECTe a cláusulaWHERE; - Aprender sobre operadores aritméticos, de comparação e lógicos;
- Compreender e utilizar os comandos
COMMITeROLLBACKpara controle de transações.

Resumo dos Comandos DML
Os comandos da categoria DML (Data Manipulation Language) permitem a manipulação direta dos dados em uma ou mais tabelas. Incluem:
- INSERT: Adiciona novos registros;
- UPDATE: Atualiza registros existentes;
- DELETE: Remove registros;
- COMMIT: Confirma as alterações realizadas;
- ROLLBACK: Desfaz alterações realizadas.
Inserção de Dados
Sintaxe:
INSERT INTO tabela [(coluna1, coluna2, ...)] VALUES (valor1, valor2, ...);
Exemplo:
INSERT INTO dept (DEPTNO, DNAME, LOC) VALUES (80, 'COMERCIAL', 'SP'); INSERT INTO dept VALUES (90, 'FINANCEIRO', 'RJ'); INSERT INTO dept (DEPTNO, DNAME) VALUES (55, 'RH');
No terceiro exemplo, a coluna LOC receberá automaticamente o valor NULL.
Quando usar variações do INSERT:
- INSERT INTO tabela (colunas...) VALUES ...: Utilize quando desejar inserir valores apenas em colunas específicas da tabela.
- INSERT INTO tabela VALUES ...: Ideal quando deseja inserir valores em todas as colunas da tabela na mesma ordem em que foram criadas.
- INSERT INTO tabela SELECT ...: Apropriado para inserir registros a partir de resultados de uma consulta SQL, transferindo ou duplicando dados entre tabelas.
Cada variação é adequada conforme a necessidade de controle sobre os dados ou sua origem no processo de inserção.
Sintaxe:
INSERT INTO tabela [(coluna1, coluna2, ...)] VALUES (valor1, valor2, ...);
Exemplo:
INSERT INTO dept (DEPTNO, DNAME, LOC) VALUES (80, 'COMERCIAL', 'SP'); INSERT INTO dept VALUES (90, 'FINANCEIRO', 'RJ'); INSERT INTO dept (DEPTNO, DNAME) VALUES (55, 'RH');
No terceiro exemplo, a coluna LOC receberá automaticamente o valor NULL.
Atualização de Dados
Sintaxe:
UPDATE tabela SET coluna1 = valor1, coluna2 = valor2 WHERE condição;
Exemplo:
UPDATE emp SET deptno = 30 WHERE empno = 7900;
Se a cláusula WHERE for omitida, todas as linhas serão afetadas.
Eliminação de Registros
Sintaxe:
DELETE FROM tabela WHERE condição;
Exemplo:
DELETE FROM dept WHERE dname = 'FINANCEIRO';
Assim como no comando UPDATE, a omissão da cláusula WHERE remove todos os registros da tabela.
Controle de Transações: COMMIT e ROLLBACK
Transações agrupam um conjunto de operações DML, garantindo a consistência e atomicidade das modificações realizadas no banco de dados. O uso adequado de COMMIT e ROLLBACK é essencial para assegurar que as alterações sejam aplicadas corretamente ou desfeitas em caso de erro.
Exemplo Básico com COMMIT e ROLLBACK:
UPDATE emp SET deptno = 10 WHERE empno = 7900; COMMIT; DELETE FROM employees WHERE job = 'SALESMAN'; ROLLBACK;
- O comando
COMMITconfirma todas as alterações feitas desde o últimoCOMMITouROLLBACK. - O comando
ROLLBACKdesfaz todas as alterações feitas desde o últimoCOMMIT.
Exemplo de Transação Complexa com Múltiplas Tabelas:
Imagine que precisamos transferir um funcionário de um departamento para outro, atualizando registros em duas tabelas diferentes: emp (funcionários) e dept (departamentos). Caso ocorra um erro em qualquer etapa, toda a transação deve ser desfeita.
BEGIN; -- Reduz o número de funcionários no departamento atual UPDATE dept SET num_funcionarios = num_funcionarios - 1 WHERE deptno = (SELECT deptno FROM emp WHERE empno = 7900); -- Altera o departamento do funcionário UPDATE emp SET deptno = 20 WHERE empno = 7900; -- Aumenta o número de funcionários no novo departamento UPDATE dept SET num_funcionarios = num_funcionarios + 1 WHERE deptno = 20; -- Commit se tudo der certo COMMIT; -- Rollback em caso de erro -- ROLLBACK;
Explicação:
- O comando
BEGINinicia a transação. - Os registros são atualizados em duas tabelas para refletir a transferência.
- O
COMMITconfirma todas as alterações se nenhuma falha ocorrer. - Se houver erro em qualquer etapa, o
ROLLBACKpode ser chamado manualmente ou automaticamente para reverter as mudanças.
Cenários de Uso:
COMMIT: Quando as alterações devem ser persistidas permanentemente no banco de dados.ROLLBACK: Em situações de falha, erro de execução ou verificação de dados inválidos.
Transações complexas como essa garantem a consistência dos dados ao trabalhar com múltiplas tabelas, essencial em sistemas de produção.
Transações agrupam um conjunto de operações DML, garantindo a consistência e atomicidade das modificações.
Exemplo com COMMIT:
UPDATE emp SET deptno = 10 WHERE empno = 7900; COMMIT;
O comando COMMIT confirma a alteração no banco de dados.
Exemplo com ROLLBACK:
DELETE FROM employees; ROLLBACK;
O comando ROLLBACK desfaz a exclusão, restaurando os dados.