Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023
Banco de Dados›Consultas e Comandos em SQL
Código
qa537513
Banca
FUNDATEC
Órgão
BRDE
Ano
2023
Cargo
Ana Sist ( )
Analise o trecho de código a seguir, escrito em SQL: No código acima, são mostrados os comandos necessários para:
AAlterar a coluna e-mail para opcional e a coluna codigo_cliente para obrigatória.
BExcluir as colunas codigo_cliente e e-mail da tabela cliente.
CExcluir, respectivamente, as restrições de chave estrangeira da coluna codigo_cliente e de chave primária da coluna e-mail.
DAlterar as chaves da tabela cliente, fazendo com que a coluna e-mail passe a ser a chave primária e a coluna codigo_cliente passe a ser uma chave alternativa.
EDefinir a coluna e-mail como chave alternativa e excluir a coluna codigo_cliente.
Revelar gabarito e comentário▾
GabaritoD — Alterar as chaves da tabela cliente, fazendo com que a coluna e-mail passe a ser a chave primária e a coluna codigo_cliente passe a ser uma chave alternativa.
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 DDL: ALTER TABLE e restrições de chave
Gabarito: letra D. O trecho de código utiliza o comando ALTER TABLE para modificar a estrutura da tabela cliente, especificamente para alterar as chaves: a coluna e-mail passa a ser a chave primária (PRIMARY KEY) e a coluna codigo_cliente passa a ser uma chave alternativa (UNIQUE). As demais alternativas descrevem operações diferentes das realizadas pelo código.
O comando ALTER TABLE é um comando da DDL (Data Definition Language), utilizado para modificar a estrutura de uma tabela existente. Ele permite adicionar, alterar ou excluir colunas, bem como adicionar ou remover restrições (constraints), como chave primária, chave estrangeira, UNIQUE, NOT NULL, entre outras. No contexto do código apresentado, a operação é de alteração de chaves, não de exclusão de colunas ou de restrições.
Para entender a questão, é importante distinguir os conceitos de chave primária e chave alternativa. A chave primária é uma coluna (ou conjunto de colunas) que identifica de forma única cada registro da tabela, não podendo conter valores nulos. Uma chave alternativa é uma coluna (ou conjunto de colunas) que também possui a propriedade de unicidade, mas não é a chave primária; ela é definida com a restrição UNIQUE. No código, a coluna e-mail é definida como PRIMARY KEY, tornando-se a nova chave primária, enquanto a coluna codigo_cliente recebe a restrição UNIQUE, tornando-se uma chave alternativa.
A pegadinha da questão está em confundir a operação de alteração de chaves com a exclusão de colunas ou de restrições. O comando ALTER TABLE pode ser usado para DROP COLUMN (excluir coluna) ou DROP CONSTRAINT (excluir restrição), mas no código apresentado, a sintaxe indica a adição de restrições (ADD PRIMARY KEY e ADD UNIQUE), não a exclusão. Portanto, a alternativa correta é a que descreve a alteração das chaves da tabela.
Guarde a distinção entre os comandos DDL: CREATE (criar), ALTER (modificar) e DROP (excluir). A questão explora exatamente essa diferença, e é nela que as alternativas se dividem.
Critério
e-mail (ALTER TABLE ... ADD PRIMARY KEY)
codigo_cliente (ALTER TABLE ... ADD UNIQUE)
Tipo de restrição adicionada
Chave primária (PRIMARY KEY)
Chave alternativa (UNIQUE)
Efeito sobre a coluna
Identifica cada registro de forma única; não aceita NULL
Garante unicidade, mas não é a chave primária
Operação realizada
Adição de restrição de chave
Adição de restrição de unicidade
O que não é feito
Não altera opcionalidade (NULL/NOT NULL), não exclui coluna, não remove constraint
Não exclui coluna, não remove constraint, não define como chave primária
Alternativa A — ❌ Incorreta
A alternativa afirma que o código altera a coluna e-mail para opcional e a coluna codigo_cliente para obrigatória. Isso não corresponde ao código, que não utiliza as restrições NULL ou NOT NULL. Além disso, a operação descrita seria de alteração de colunas, não de chaves. O código está adicionando restrições de chave, não alterando a opcionalidade das colunas.
Alternativa B — ❌ Incorreta
A alternativa afirma que o código exclui as colunas codigo_cliente e e-mail da tabela cliente. Isso não corresponde ao código, que não utiliza o comando DROP COLUMN. O código está adicionando restrições de chave, não excluindo colunas. A exclusão de colunas seria feita com ALTER TABLE cliente DROP COLUMN codigo_cliente, DROP COLUMN e-mail;.
Alternativa C — ❌ Incorreta
A alternativa afirma que o código exclui, respectivamente, as restrições de chave estrangeira da coluna codigo_cliente e de chave primária da coluna e-mail. Isso não corresponde ao código, que não utiliza o comando DROP CONSTRAINT. O código está adicionando restrições de chave, não excluindo. A exclusão de restrições seria feita com ALTER TABLE cliente DROP CONSTRAINT nome_da_restricao;.
Alternativa D — ✅ Correta ⟵ GABARITO
A alternativa afirma que o código altera as chaves da tabela cliente, fazendo com que a coluna e-mail passe a ser a chave primária e a coluna codigo_cliente passe a ser uma chave alternativa. Isso corresponde exatamente ao código, que utiliza ALTER TABLE cliente ADD PRIMARY KEY (e-mail); e ALTER TABLE cliente ADD UNIQUE (codigo_cliente);. A coluna e-mail é definida como chave primária e a coluna codigo_cliente recebe a restrição UNIQUE, tornando-se uma chave alternativa.
Alternativa E — ❌ Incorreta
A alternativa afirma que o código define a coluna e-mail como chave alternativa e exclui a coluna codigo_cliente. Isso não corresponde ao código, que define e-mail como chave primária, não alternativa, e não exclui a coluna codigo_cliente, mas sim adiciona a restrição UNIQUE a ela. A exclusão de coluna seria feita com DROP COLUMN, o que não ocorre no código.