Questão nº 58
Questão de Administração de Banco de Dados · FGV MPAL 2018 (nº 58)
FGV2018Analista do Ministério Público - Administrador de Banco de DadosAdministração de Banco de Dados
Gabarito: Bver comentário ↓
Observe o comando SQL a seguir.
```
drop table T1, T2 cascade
```
No MYSQL, esse comando
- Aremove a tabela T1 e os registros de T2 que dependem dos registros de T1.
- Bremove as tabelas T1 e T2 e os registros de outras tabelas que dependem de T1 e/ou T2. (alternativa correta)
- Cremove a tabela T2 e os registros de T1 que dependem dos registros de T2.
- Dremove as tabelas T1 e T2 e ignora a opção cascade.
- Eprovoca um erro de sintaxe, pois não é válido no MYLSQL.
Resposta comentada
Gabarito Alternativa B
O comando DROP TABLE é usado para remover completamente uma ou mais tabelas de um banco de dados. Quando a palavra-chave CASCADE é usada junto, em um sentido geral de SQL, ela indica que o banco de dados deve remover não apenas o objeto especificado, mas também todos os objetos ou dados que dependem dele.
- (A) Incorreta: O comando
DROP TABLE T1, T2indica que ambas as tabelas T1 e T2 serão removidas, não apenas T1. - (B) Correta: Este comando remove as tabelas T1 e T2. A opção
CASCADE, embora em MySQL seja frequentemente ignorada paraDROP TABLE(onde geralmente se espera que as dependências de chaves estrangeiras sejam tratadas explicitamente ou que a operação falhe), neste contexto de questão de prova, é interpretada como a remoção das tabelas e também dos registros em outras tabelas que possuem dependência (via chaves estrangeiras, por exemplo) dos dados em T1 e/ou T2. Ou seja, a ação de remoção "cascateia" para os dados dependentes. - (C) Incorreta: O comando
DROP TABLE T1, T2indica que ambas as tabelas T1 e T2 serão removidas, não apenas T2. - (D) Incorreta: Embora em MySQL a palavra-chave
CASCADEseja de fato ignorada para o comandoDROP TABLE(o que faria com que a remoção de tabelas com dependências de chaves estrangeiras falhasse, a menos que as chaves estrangeiras fossem removidas primeiro), a questão e seu gabarito oficial sugerem uma interpretação ondeCASCADEtem o efeito de remover dados dependentes. A armadilha da banca aqui é que, para quem conhece as especificidades do MySQL, esta alternativa parece a mais correta em termos de implementação real, mas o gabarito oficial adota uma interpretação mais genérica ou de outros SGBDs para oCASCADE. - (E) Incorreta: O comando
DROP TABLE T1, T2 CASCADEé sintaticamente válido no MySQL; a palavra-chaveCASCADEé simplesmente analisada e ignorada, não causando um erro de sintaxe.
Fonte: FGV MPAL 2018 Analista do Ministério Público - Administrador de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.