Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — INSTITUTO AOCP 2024

Banco de DadosBanco de Dados Relacionais
Código
qg263147
Banca
INSTITUTO AOCP
Órgão
UFS
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Classe E
Qual dos seguintes comandos Struct Query Language (SQL) NÃO retornará uma mensagem de erro se executado imediatamente após a execução do comando “DROP TABLE IF EXISTS Funcionarios;”?
  1. ASELECT * FROM Funcionarios;
  2. BINSERT INTO Funcionarios (ID, Nome) VALUES (1, 'Maria');
  3. CUPDATE Funcionarios SET Nome='Carlos' WHERE ID=1;
  4. DDELETE FROM Funcionarios WHERE ID=1;
  5. ECREATE TABLE Funcionarios (ID INT PRIMARY KEY, Nome VARCHAR(50));
Revelar gabarito e comentário

GabaritoE — CREATE TABLE Funcionarios (ID INT PRIMARY KEY, Nome VARCHAR(50));

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

Comandos SQL e a cláusula IF EXISTS

Gabarito: letra E. O comando CREATE TABLE Funcionarios é o único que NÃO retornará erro, pois recria a tabela que foi removida pelo DROP TABLE IF EXISTS. Os demais comandos (SELECT, INSERT, UPDATE, DELETE) tentam acessar uma tabela que não existe mais, gerando erro. A questão testa o conhecimento da cláusula IF EXISTS e a ordem lógica dos comandos SQL.

O comando DROP TABLE IF EXISTS Funcionarios; é uma instrução DDL (Data Definition Language) que remove a tabela Funcionarios do banco de dados, mas com uma proteção: a cláusula IF EXISTS impede que o comando retorne erro caso a tabela não exista. Após a execução, a tabela deixa de existir no banco. Portanto, qualquer comando que tente acessar, manipular ou consultar essa tabela resultará em erro, pois ela não está mais disponível.

A única alternativa que não gera erro é aquela que recria a tabela. O comando CREATE TABLE é um comando DDL que define uma nova estrutura de tabela. Como a tabela foi removida, o comando CREATE TABLE Funcionarios (ID INT PRIMARY KEY, Nome VARCHAR(50)); será executado com sucesso, criando uma nova tabela com as colunas especificadas. É importante notar que, se a tabela ainda existisse, o CREATE TABLE sem a cláusula IF NOT EXISTS retornaria erro, mas como ela foi removida, a criação é válida.

A pegadinha da questão está em reconhecer que o DROP TABLE IF EXISTS remove a tabela, e não apenas seus dados. O candidato pode confundir o DROP com o TRUNCATE, que remove apenas os dados, mantendo a estrutura da tabela. Enquanto o TRUNCATE permite que comandos como SELECT, INSERT, UPDATE e DELETE continuem funcionando (pois a tabela existe), o DROP elimina a tabela por completo, tornando qualquer acesso a ela um erro. Essa distinção é crucial para resolver a questão.

Guarde a fronteira entre DROP (remove a estrutura e os dados) e TRUNCATE (remove apenas os dados): é exatamente nela que as alternativas se dividem. A alternativa correta é a que recria a estrutura, enquanto as demais tentam operar sobre uma estrutura que não existe mais.

Critério

DROP TABLE IF EXISTS (executado)

TRUNCATE TABLE (hipotético)

Efeito na estrutura

Remove a tabela por completo (estrutura + dados)

Mantém a estrutura, remove apenas os dados

Comandos DML/DQL (SELECT, INSERT, UPDATE, DELETE)

❌ Erro — tabela não existe

✅ Funcionam normalmente

Comando DDL CREATE TABLE

✅ Funciona (recria a tabela)

❌ Erro — tabela já existe (sem IF NOT EXISTS)

Comando DDL DROP TABLE

✅ Funciona (sem erro, pois IF EXISTS suprime aviso)

✅ Funciona (remove estrutura e dados)

Alternativa A — ❌ Incorreta

O comando SELECT * FROM Funcionarios; tenta consultar dados de uma tabela que foi removida pelo DROP TABLE IF EXISTS. Como a tabela não existe mais, o banco retornará um erro informando que a tabela não foi encontrada. O SELECT é um comando DQL (Data Query Language) que depende da existência da tabela para funcionar.

Alternativa B — ❌ Incorreta

O comando INSERT INTO Funcionarios (ID, Nome) VALUES (1, 'Maria'); tenta inserir dados em uma tabela que não existe. O INSERT é um comando DML (Data Manipulation Language) que requer a tabela previamente criada. Como o DROP removeu a tabela, o comando falhará com erro.

Alternativa C — ❌ Incorreta

O comando UPDATE Funcionarios SET Nome='Carlos' WHERE ID=1; tenta atualizar dados em uma tabela inexistente. O UPDATE é um comando DML que também depende da existência da tabela. Sem a tabela, o banco retornará erro.

Alternativa D — ❌ Incorreta

O comando DELETE FROM Funcionarios WHERE ID=1; tenta excluir dados de uma tabela que não existe. O DELETE é um comando DML que requer a tabela existente. Como o DROP removeu a tabela, o comando falhará com erro.

Alternativa E — ✅ Correta ⟵ GABARITO

O comando CREATE TABLE Funcionarios (ID INT PRIMARY KEY, Nome VARCHAR(50)); recria a tabela que foi removida. O CREATE TABLE é um comando DDL (Data Definition Language) que define uma nova estrutura. Como a tabela não existe mais, o comando será executado com sucesso, criando uma nova tabela com as colunas ID (chave primária) e Nome. Se a tabela ainda existisse, o CREATE TABLE sem IF NOT EXISTS retornaria erro, mas como foi removida, a criação é válida.

PEGA ESSA DICA!

Para questões que envolvem DROP TABLE IF EXISTS, lembre-se: o DROP remove a estrutura e os dados, enquanto o TRUNCATE remove apenas os dados. Se a tabela foi removida, apenas comandos DDL que recriam a estrutura (como CREATE TABLE) funcionarão; comandos DML/DQL que acessam dados falharão. Essa distinção é a chave para resolver rapidamente.

Gabarito: letra E

Link permanente: /questoes/qg263147