Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas e Comandos em SQL
Código
ce403625
Banca
CESPE / CEBRASPE
Órgão
MPO
Ano
2024
Cargo
APO ( )
Julgue o item seguinte, relativos à linguagem de definição de dados SQL, à linguagem de manipulação de dados SQL, à linguagem de controle de dados SQL e à linguagem de consulta de dados SQL.   Os comandos insert e delete servem, respectivamente, para inserir e deletar uma tabela no banco de dados; o comando insert permite, ainda, as restrições not null, unique e check.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL: sublinguagens e comandos

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).

O que é DML e o que é 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.

Restrições (Constraints)

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.

Exemplo prático

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.

Distinção importante: DELETE × DROP × TRUNCATE

Comando

O que faz

Sublinguagem

DELETE

Remove linhas (pode ter filtro WHERE)

DML

DROP

Remove a tabela inteira (estrutura + dados)

DDL

TRUNCATE

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 pegadinha da banca

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.

1DML (dados)
INSERT (insere linhas)
UPDATE (atualiza linhas)
DELETE (remove linhas)
2DDL (estrutura)
CREATE (cria tabela)
ALTER (modifica estrutura)
DROP (remove tabela)
TRUNCATE (apaga dados, mantém estrutura)
3Restrições (DDL)
NOT NULL
UNIQUE
CHECK
Comandos SQL
LEVELsoulevel.com.br
Comandos SQL: DML (dados) (INSERT (insere linhas), UPDATE (atualiza linhas), DELETE (remove linhas)); DDL (estrutura) (CREATE (cria tabela), ALTER (modifica estrutura), DROP (remove tabela), TRUNCATE (apaga dados, mantém estrutura)); Restrições (DDL) (NOT NULL, UNIQUE, CHECK)
NÃO CAIA NESSA!

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.

Conclusão

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