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
ce403671
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2024
Cargo
TJ

Em determinada faculdade, para controlar os dados das monitorias prestadas por alunos a seus colegas, foram criadas as tabelas Aluno, Disciplina e Monitoria por meio dos scripts SQL a seguir.


CREATE TABLE Aluno (
matricula integer,
nome varchar(50),
cpf integer,
PRIMARY KEY(matricula)
);


CREATE TABLE Disciplina (
cod_disciplina integer,
nome_disciplina varchar(50),
PRIMARY KEY(cod_disciplina)
);


CREATE TABLE Monitoria (
cod_monitoria integer,
dia_da_semana char(20),
numero_de_horas integer,
matricula_aluno_atendido integer,
matricula_aluno_monitor integer,
cod_disciplina_apoiada integer,
PRIMARY KEY(cod_monitoria),
FOREIGN KEY (matricula_aluno_atendido) REFERENCES
Aluno (matricula),
FOREIGN KEY (matricula_aluno_monitor) REFERENCES
Aluno (matricula),
FOREIGN KEY (cod_disciplina_apoiada) REFERENCES
Disciplina (cod_disciplina)
);


A partir dessas informações, julgue o próximo item.


Se as referidas tabelas forem criadas em um banco de dados MySQL, para que seja feita uma mudança no nome do campo dia_da_semana para nome_do_dia na tabela Monitoria, será necessário executar o comando a seguir.


ALTER TABLE Monitoria MODIFY COLUMN dia_da_semana
TO nome_do_dia

  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 – Comando ALTER TABLE para renomear coluna no MySQL

Gabarito: Errado. O comando apresentado não é sintaticamente correto no MySQL, pois a cláusula MODIFY COLUMN altera o tipo de dado e as restrições de uma coluna, mas não o seu nome. Para renomear uma coluna no MySQL, o comando correto é ALTER TABLE ... CHANGE COLUMN ou ALTER TABLE ... RENAME COLUMN (a partir do MySQL 8.0). A sintaxe MODIFY COLUMN ... TO ... não existe na linguagem SQL.

O comando ALTER TABLE é um comando da sublinguagem DDL (Data Definition Language), responsável por modificar a estrutura de objetos do banco de dados, como tabelas, colunas e restrições. No contexto da questão, o objetivo é alterar o nome da coluna dia_da_semana para nome_do_dia na tabela Monitoria. Para isso, o MySQL oferece duas sintaxes principais:

  • ALTER TABLE Monitoria CHANGE COLUMN dia_da_semana nome_do_dia char(20); — a cláusula CHANGE COLUMN permite renomear a coluna e, opcionalmente, alterar seu tipo e restrições. É obrigatório especificar o novo nome e o tipo de dado.

  • ALTER TABLE Monitoria RENAME COLUMN dia_da_semana TO nome_do_dia; — a cláusula RENAME COLUMN (disponível a partir do MySQL 8.0) é mais específica e simples, permitindo apenas a renomeação.

A cláusula MODIFY COLUMN, por sua vez, é utilizada para alterar o tipo de dado ou as restrições de uma coluna existente, sem modificar seu nome. Por exemplo, ALTER TABLE Monitoria MODIFY COLUMN dia_da_semana varchar(30); alteraria o tipo da coluna, mas não o nome. A sintaxe apresentada na questão, MODIFY COLUMN dia_da_semana TO nome_do_dia, é inválida, pois a palavra-chave TO não faz parte da sintaxe do MODIFY COLUMN.

A pegadinha da questão está em confundir a finalidade das cláusulas MODIFY COLUMN e CHANGE COLUMN/RENAME COLUMN. O candidato que sabe que MODIFY COLUMN é usado para alterar colunas pode ser induzido a acreditar que ele também serve para renomear, mas a sintaxe correta para renomear é outra. Além disso, a presença da palavra TO no comando, que não é utilizada nesse contexto, reforça o erro sintático.

Guarde a distinção: MODIFY COLUMN altera o tipo/restrições; CHANGE COLUMN e RENAME COLUMN alteram o nome. É exatamente essa fronteira que decide a questão.

1MODIFY COLUMN
Altera tipo/restrições
Não renomeia
2CHANGE COLUMN
Renomeia
Exige novo nome + tipo
3RENAME COLUMN (8.0+)
Renomeia
Sintaxe: ... TO ...
ALTER TABLE (MySQL)
LEVELsoulevel.com.br
ALTER TABLE (MySQL): MODIFY COLUMN (Altera tipo/restrições, Não renomeia); CHANGE COLUMN (Renomeia, Exige novo nome + tipo); RENAME COLUMN (8.0+) (Renomeia, Sintaxe: ... TO ...)

Item — ❌ Errado

O comando ALTER TABLE Monitoria MODIFY COLUMN dia_da_semana TO nome_do_dia está incorreto por dois motivos: (1) a cláusula MODIFY COLUMN não é usada para renomear colunas, apenas para alterar o tipo de dado ou restrições; (2) a sintaxe com TO não é válida no MySQL. Para renomear a coluna, o comando correto seria ALTER TABLE Monitoria CHANGE COLUMN dia_da_semana nome_do_dia char(20); ou ALTER TABLE Monitoria RENAME COLUMN dia_da_semana TO nome_do_dia; (MySQL 8.0+).

PEGA ESSA DICA!

Na prova, ao ver um comando ALTER TABLE com MODIFY COLUMN, lembre-se: ele serve para mudar o tipo ou as restrições da coluna, nunca o nome. Para renomear, use CHANGE COLUMN (MySQL) ou RENAME COLUMN (MySQL 8.0+). Essa distinção é clássica em questões de SQL.

Gabarito: Errado.

Link permanente: /questoes/ce403671