Seu navegador não oferece leitura em voz alta. Você pode ler o guia normalmente.
Os comandos SQL costumam ser divididos em grupos conforme a finalidade: definir estrutura, manipular dados, controlar acesso e controlar transações. A prova cobra a classificação, o efeito de cada comando e o que acontece quando uma transação é desfeita. Os testes abaixo foram executados em um banco de teste, com dados fictícios.
Os grupos de comandos
| Sigla | Nome usual | Comandos típicos | Atua sobre |
|---|---|---|---|
| DDL | linguagem de definição de dados | CREATE, ALTER, DROP |
a estrutura (tabelas, índices, visões) |
| DML | linguagem de manipulação de dados | INSERT, UPDATE, DELETE |
as linhas |
| DQL | linguagem de consulta | SELECT |
a leitura |
| DCL | linguagem de controle de dados | GRANT, REVOKE |
permissões |
| TCL | linguagem de controle de transação | COMMIT, ROLLBACK, SAVEPOINT |
confirmação e desfazimento |
Atenção: há divergência entre autores. Alguns incluem o SELECT na DML; outros o separam como DQL. TRUNCATE é tratado por muitos como DDL, embora esvazie dados. Quando a questão pede a classificação, vale a que o enunciado ou a bibliografia da banca adota; na dúvida, o critério “estrutura x dados x permissão x transação” ajuda.
DDL na prática: estrutura e restrições
CREATE TABLE processo(
id INTEGER PRIMARY KEY,
numero TEXT NOT NULL UNIQUE,
situacao TEXT DEFAULT 'aberto',
prazo_dias INTEGER CHECK (prazo_dias > 0)
);
As restrições (constraints) protegem a integridade:
PRIMARY KEY: identifica a linha, sem repetição e sem NULL.NOT NULL: proíbe ausência.UNIQUE: proíbe repetição.DEFAULT: valor usado quando nada é informado.CHECK: exige que uma condição seja verdadeira.FOREIGN KEY: obriga o valor a existir na tabela referenciada (integridade referencial).
Inserimos três processos, P-001, P-002 e P-003, com prazos de 10, 30 e 15 dias. A coluna situacao não foi informada e assumiu ‘aberto’ pelo DEFAULT. Depois tentamos três inserções inválidas, e o banco rejeitou todas:
| Tentativa | Erro obtido |
|---|---|
| repetir o número P-001 | violação da restrição de unicidade |
| prazo igual a 0 | violação do CHECK (prazo maior que zero) |
| número NULL | violação de NOT NULL |
A mensagem exata muda conforme o sistema, mas o efeito é o mesmo: o comando falha e nenhuma linha é gravada.
ALTER TABLE processo ADD COLUMN responsavel TEXT acrescentou uma coluna; as linhas existentes ficaram com NULL nela.
DML na prática
UPDATE processo SET situacao = 'arquivado' WHERE numero = 'P-002';
Atualizou 1 linha. O perigo clássico é esquecer o WHERE: UPDATE processo SET situacao = 'arquivado' altera todas as linhas (3, no teste). O mesmo vale para o DELETE.
Transação: COMMIT e ROLLBACK
Uma transação é um conjunto de operações tratado como unidade: ou tudo vale, ou nada vale. As propriedades clássicas são conhecidas pela sigla ACID: atomicidade, consistência, isolamento e durabilidade.
Teste de desfazimento:
BEGINiniciou a transação.UPDATE processo SET situacao = 'arquivado'(sem WHERE) alterou 3 linhas; dentro da transação, a consulta mostrou os 3 como arquivados.ROLLBACKdesfez tudo. A consulta seguinte mostrou 2 processos abertos e 1 arquivado, o estado anterior.
Em seguida, outra transação: DELETE FROM processo WHERE situacao = 'arquivado' removeu 1 linha, e o COMMIT tornou a remoção definitiva. Restaram P-001 e P-003. Depois do COMMIT, o ROLLBACK já não recupera nada.
Em alguns sistemas o modo padrão é o de confirmação automática (autocommit): cada comando vira uma transação e é confirmado sozinho, a menos que se abra uma transação explícita. Isso explica por que um DELETE sem WHERE pode ser irreversível sem backup.
DELETE, TRUNCATE e DROP
| Comando | Efeito | Com WHERE? |
|---|---|---|
DELETE |
remove linhas, preservando a tabela | sim |
TRUNCATE |
esvazia a tabela de uma vez | não |
DROP TABLE |
remove a tabela inteira, estrutura e dados | não |
No teste, DELETE FROM processo sem filtro apagou as 2 linhas restantes (a contagem passou a 0, e a tabela continuou existindo). Depois do DROP TABLE, qualquer SELECT na tabela falhou com a mensagem de que a tabela não existe. O comportamento de TRUNCATE em relação a transações varia por sistema, e o SQLite do teste nem o possui; confira o sistema da questão.
DCL: quem pode fazer o quê
GRANT SELECT ON processo TO usuario concede permissão de leitura; REVOKE a retira. O princípio do menor privilégio recomenda dar apenas o necessário para a função. Esse tema se liga à segurança da informação e ao controle de acesso.
Como classificar na prova
- A instrução cria, altera ou apaga estrutura? DDL.
- Insere, altera ou apaga linhas? DML.
- Concede ou retira permissão? DCL.
- Confirma, desfaz ou marca ponto de retorno? TCL.
Erros comuns
- Classificar
TRUNCATEcomo DML sem considerar a divergência de autores; verifique o gabarito da banca. - Esquecer o
WHEREemUPDATEeDELETE. - Achar que
ROLLBACKfunciona depois doCOMMIT. - Confundir
DROP(apaga a tabela) comDELETE(apaga linhas). - Dizer que
CHECKeFOREIGN KEYsão a mesma coisa.
Fontes e atualização
Não há norma oficial brasileira sobre SQL; o conteúdo segue o padrão da linguagem e a literatura de bancos de dados. Os resultados vieram de execução em um banco de teste. Mensagens de erro, TRUNCATE e autocommit variam por sistema: confira o edital.
Próximos passos
- Estude a consulta em SELECT, WHERE, ORDER BY, LIKE e IN.
- Veja o risco de consultas mal construídas em injeção de SQL.
- Proteja os dados com backup completo, incremental e diferencial.