Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024
- Código
- ce178299
- Banca
- CESPE / CEBRASPE
- Órgão
- MPO
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Planejamento e Orçamento - Especialidade: Gestão de Infraestrutura de TI

- CCerto
- EErrado

GabaritoC — Certo
Gabarito: Certo (C). O comando GRANT SELECT (cod_professor, nome_professor) ON professores TO PUBLIC concede o privilégio de seleção apenas sobre as colunas especificadas da tabela professores a todos os usuários, exatamente como descreve o item. A sintaxe do GRANT permite listar as colunas após o comando SELECT, restringindo o acesso a elas.
O comando GRANT é uma instrução da sublinguagem DCL (Data Control Language), responsável pelo controle de permissões e segurança no banco de dados. Ele serve para conceder privilégios a usuários ou roles, podendo especificar quais operações (SELECT, INSERT, UPDATE, DELETE, etc.) e, no caso do SELECT, quais colunas específicas da tabela estarão acessíveis. A sintaxe básica é:
GRANT SELECT (coluna1, coluna2) ON tabela TO usuário;Quando se lista colunas após o SELECT, o privilégio fica restrito àquelas colunas. Se nenhuma coluna for listada, o privilégio se aplica a todas as colunas da tabela. O destinatário PUBLIC é um grupo especial que inclui todos os usuários do banco de dados, ou seja, a permissão é concedida a qualquer um que tenha acesso ao banco.
Na prática, se um administrador executar o comando GRANT SELECT (cod_professor, nome_professor) ON professores TO PUBLIC;, qualquer usuário poderá consultar apenas os campos cod_professor e nome_professor da tabela professores. Tentativas de selecionar outras colunas, como email ou telefone, serão negadas por falta de privilégio. Isso é uma forma de implementar segurança em nível de coluna, protegendo dados sensíveis enquanto permite acesso a informações não críticas.
A pegadinha que a banca explora aqui é a confusão entre o GRANT com colunas e o GRANT sem colunas. Muitos candidatos leem o comando e pensam que ele concede acesso a toda a tabela, ignorando a lista de colunas. Outros podem confundir GRANT com REVOKE, que é o comando usado para retirar privilégios. A distinção é essencial: GRANT dá permissão, REVOKE tira. Além disso, é importante lembrar que o SELECT com colunas específicas é uma forma de projeção, limitando os atributos visíveis ao usuário.
Guarde a diferença entre conceder acesso a uma tabela inteira e conceder acesso a colunas específicas: é exatamente nessa distinção que a questão se apoia. O comando apresentado é válido e cumpre exatamente o que o item afirma.
O item descreve corretamente o efeito do comando GRANT SELECT (cod_professor, nome_professor) ON professores TO PUBLIC. A sintaxe está correta: após o SELECT, são listadas as colunas permitidas; após o ON, a tabela; e após o TO, o destinatário PUBLIC. Isso concede a todos os usuários o privilégio de consultar apenas os campos cod_professor e nome_professor da tabela professores, exatamente como afirma o enunciado. Não há erro de sintaxe nem de semântica.
Para questões de GRANT, verifique sempre três elementos: (1) a operação permitida (SELECT, INSERT, etc.), (2) se há lista de colunas restringindo o acesso, e (3) o destinatário (usuário específico, role ou PUBLIC). Se a lista de colunas estiver presente, o privilégio é limitado a elas — essa é a pegadinha mais comum da banca.
Gabarito: Certo (C).
Link permanente: /questoes/ce178299