Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630728
Banca
Quadrix
Órgão
IBICT
Ano
2024
Cargo
Tecno ( )

CREATE TABLE Autores (


AutorID INT AUTO_INCREMENT PRIMARY KEY,
Nome VARCHAR(100),
Email VARCHAR(100),
InstituicaoID INT,
FOREIGN KEY (InstituicaoID) REFERENCES Instituicoes(InstituicaoID)


);
CREATE TABLE Revistas (

RevistaID INT AUTO_INCREMENT PRIMARY KEY,
Nome VARCHAR(100),
ISSN VARCHAR(20)

);
CREATE TABLE Artigos (


ArtigoID INT AUTO_INCREMENT PRIMARY KEY,
Titulo VARCHAR(255),
Resumo TEXT,
PalavrasChave VARCHAR(255),
RevistaID INT,
FOREIGN KEY (RevistaID) REFERENCES Revistas(RevistaID)

 

);
CREATE TABLE Instituicoes (


InstituicaoID INT AUTO_INCREMENT PRIMARY KEY,
Nome VARCHAR(100),
Cidade VARCHAR(100),
Pais VARCHAR(100)


);


CREATE TABLE Autor_Artigo (


AutorID INT,
ArtigoID INT,
PRIMARY KEY (AutorID, ArtigoID),
FOREIGN KEY (AutorID) REFERENCES Autores(AutorID),
FOREIGN KEY (ArtigoID) REFERENCES Artigos(ArtigoID)

 

);


Com relação ao código SQL acima, no SGBD MySQL, julgue o item a seguir.

 

Para que seja atualizado o e‑mail do autor João Silva, deve‑se executar o comando a seguir.
UPDATE Autores
SET Email = = ‘[email protected]
WHERE Nome = ‘João Silva’;

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

Comando UPDATE no MySQL: sintaxe e operador de atribuição

Gabarito: ERRADO (letra E). O comando apresentado contém um erro de sintaxe: SET Email = = '[email protected]' — há um operador de atribuição duplicado (= =), o que torna o comando inválido no MySQL. A forma correta seria SET Email = '[email protected]', com um único sinal de igual. Além disso, a comparação na cláusula WHERE (Nome = 'João Silva') é case-sensitive no MySQL, dependendo do collation da coluna, o que pode não encontrar o registro se houver diferença de maiúsculas/minúsculas ou acentuação.

O comando UPDATE é uma instrução da sublinguagem DML (Data Manipulation Language), utilizada para modificar dados existentes em uma tabela. Sua sintaxe básica é UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2 WHERE condição;. O operador de atribuição em SQL é o sinal de igual (=), e ele deve aparecer uma única vez entre a coluna e o valor. No comando do enunciado, Email = = '[email protected]' apresenta dois sinais de igual consecutivos, o que é um erro de sintaxe — o MySQL interpretaria isso como uma tentativa de comparação ou simplesmente rejeitaria o comando.

Na prática, para atualizar o e-mail do autor João Silva, o comando correto seria:

UPDATE Autores
SET Email = '[email protected]'
WHERE Nome = 'João Silva';

É importante notar que a cláusula WHERE é fundamental para atualizar apenas o registro desejado. Sem ela, o comando atualizaria todos os registros da tabela, o que seria um erro grave. Além disso, a comparação de strings no MySQL pode ser case-sensitive ou case-insensitive dependendo do collation da coluna. Se a coluna Nome tiver um collation case-insensitive (como utf8mb4_unicode_ci), a comparação Nome = 'João Silva' encontraria o registro mesmo se o nome estivesse armazenado como 'joão silva'. No entanto, se o collation for case-sensitive (como utf8mb4_bin), a comparação seria exata e poderia não encontrar o registro se houvesse diferença de maiúsculas/minúsculas ou acentuação.

Outro ponto relevante é que o comando UPDATE faz parte da DML, enquanto comandos como CREATE TABLE e ALTER TABLE fazem parte da DDL (Data Definition Language). Essa distinção é frequentemente cobrada em provas de banco de dados. A banca Quadrix, nesta questão, explora justamente a atenção aos detalhes da sintaxe SQL — um erro aparentemente simples, como um operador duplicado, é suficiente para tornar o comando inválido.

NÃO CAIA NESSA!

A banca insere um erro sutil de sintaxe: = = em vez de =. O candidato desatento pode ler o comando e achar que está correto, focando apenas na lógica do UPDATE e ignorando o operador duplicado. Além disso, a comparação Nome = 'João Silva' pode não funcionar se o collation da coluna for case-sensitive e o nome armazenado tiver diferenças de acentuação ou capitalização. Fique atento a esses detalhes — eles são a essência da pegadinha.

  1. 1UPDATE tabela
  2. 2SET coluna = valor
  3. 3WHERE condição
LEVEL · soulevel.com.br

Alternativa C — ❌ Incorreta (não é o gabarito)

A alternativa C afirma que o comando está Certo, mas isso é falso. O comando contém um erro de sintaxe claro: SET Email = = '[email protected]'. O operador de atribuição = aparece duas vezes, o que é inválido no MySQL. Mesmo que a lógica do UPDATE esteja correta (atualizar o e-mail do autor com nome 'João Silva'), a sintaxe inválida torna o comando inexecutável. Portanto, a alternativa C está incorreta.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa E afirma que o comando está Errado, e isso está correto. O erro está no operador de atribuição duplicado (= =), que torna o comando inválido. A forma correta seria SET Email = '[email protected]'. Além disso, a comparação na cláusula WHERE pode não encontrar o registro se o collation da coluna Nome for case-sensitive e houver diferenças de capitalização ou acentuação. Portanto, o comando, como apresentado, não executaria corretamente, e a alternativa E é o gabarito.

Gabarito: letra E

Link permanente: /questoes/qa630728