Questão de Banco de Dados — Banco de Dados Relacionais — INSTITUTO AOCP 2024
Banco de Dados›Banco 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;”?
ASELECT * FROM Funcionarios;
BINSERT INTO Funcionarios (ID, Nome) VALUES (1, 'Maria');
CUPDATE Funcionarios SET Nome='Carlos' WHERE ID=1;
DDELETE FROM Funcionarios WHERE ID=1;
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.