Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
- Código
- ce403625
- Banca
- CESPE / CEBRASPE
- Órgão
- MPO
- Ano
- 2024
- Cargo
- APO ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. O comando insert insere dados (linhas/registros) em uma tabela, e o delete remove dados — nenhum dos dois cria ou exclui a estrutura da tabela, função dos comandos DDL CREATE e DROP. Além disso, as restrições NOT NULL, UNIQUE e CHECK são definidas na criação/alteração da estrutura (DDL), não pelo INSERT.
A linguagem SQL é dividida em sublinguagens conforme a finalidade de cada comando. A confusão central desta questão está em misturar as funções de manipulação de dados (DML) com as de definição de dados (DDL).
A DML (Data Manipulation Language) — Linguagem de Manipulação de Dados — é o grupo de comandos que interage com os dados dentro das tabelas. São eles:
INSERT: insere linhas (registros) em uma tabela.
UPDATE: atualiza dados de linhas existentes.
DELETE: remove linhas (registros) de uma tabela.
SELECT: consulta dados (embora alguns autores o classifiquem em grupo próprio, a DQL).
Já a DDL (Data Definition Language) — Linguagem de Definição de Dados — é o grupo de comandos que interage com os objetos do banco, ou seja, com a estrutura: tabelas, índices, visões, etc. São eles:
CREATE: cria tabelas e outros objetos.
ALTER: modifica a estrutura de objetos existentes.
DROP: exclui objetos (tabelas, bancos, etc.).
TRUNCATE: apaga os dados de uma tabela, mas mantém a estrutura.
A pegadinha da questão está exatamente aí: ela afirma que insert e delete servem para "inserir e deletar uma tabela", o que é função do CREATE e do DROP. O INSERT insere linhas, não tabelas; o DELETE remove linhas, não tabelas.
As restrições NOT NULL, UNIQUE e CHECK são regras aplicadas às colunas de uma tabela, definidas no momento da criação (com CREATE TABLE) ou da alteração (com ALTER TABLE) da estrutura. Elas fazem parte da DDL, não da DML. O comando INSERT apenas insere dados que devem respeitar essas restrições, mas não as define.
Para criar uma tabela com restrições, usa-se CREATE TABLE:
CREATE TABLE Clientes (
id INT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
idade INT CHECK (idade >= 18)
);Depois, para inserir um registro, usa-se INSERT:
INSERT INTO Clientes (id, nome, email, idade) VALUES (1, 'João', '[email protected]', 25);Para remover um registro, usa-se DELETE:
DELETE FROM Clientes WHERE id = 1;Note que INSERT e DELETE operam sobre linhas, enquanto CREATE TABLE define a estrutura e as restrições.
Comando | O que faz | Sublinguagem |
|---|---|---|
| Remove linhas (pode ter filtro | DML |
| Remove a tabela inteira (estrutura + dados) | DDL |
| Remove todos os dados, mantém a estrutura | DDL |
Essa distinção é clássica em provas: DELETE é manipulação de dados; DROP e TRUNCATE são definição de dados.
A banca mistura propositalmente os conceitos de DML e DDL. O candidato que sabe que INSERT e DELETE são comandos DML percebe na hora que eles não criam nem excluem tabelas — isso é papel do CREATE e do DROP. Além disso, a afirmação sobre restrições é outra armadilha: NOT NULL, UNIQUE e CHECK são definidas na estrutura (DDL), não no comando de inserção.
A banca troca a função dos comandos DML (INSERT/DELETE) pela função dos comandos DDL (CREATE/DROP). Lembre-se: DML mexe com dados; DDL mexe com estrutura. E as restrições (NOT NULL, UNIQUE, CHECK) são definidas na criação da tabela, não no INSERT.
A afirmativa está errada por dois motivos: (1) insert e delete não criam/excluem tabelas, mas sim linhas; (2) as restrições not null, unique e check não são definidas pelo insert, mas sim na definição da estrutura da tabela (DDL).
Gabarito: Errado.
Link permanente: /questoes/ce403625