Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
- Código
- ce403619
- Banca
- CESPE / CEBRASPE
- Órgão
- MPO
- Ano
- 2024
- Cargo
- APO ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: Certo. O comando GRANT SELECT (cod_professor, nome_professor) ON professores TO public; concede o privilégio de seleção apenas sobre as colunas especificadas, e não sobre a tabela inteira. Isso está de acordo com a sintaxe padrão do SQL, que permite a concessão de privilégios em nível de coluna. A questão trata de um comando da DCL (Data Control Language), cujos principais comandos são GRANT e REVOKE.
O comando GRANT é utilizado para conceder privilégios de acesso a usuários ou roles. A sintaxe básica é GRANT <privilégio> ON <objeto> TO <usuário>. Quando se especifica uma lista de colunas entre parênteses após o privilégio, como SELECT (cod_professor, nome_professor), o privilégio fica restrito àquelas colunas. Isso significa que o usuário (ou, no caso, public, que representa todos os usuários) poderá executar SELECT apenas nas colunas cod_professor e nome_professor da tabela professores, não tendo acesso às demais colunas da tabela.
Essa funcionalidade é importante para o controle de segurança e privacidade dos dados, permitindo que se limite o acesso a informações sensíveis. Por exemplo, se a tabela professores tiver uma coluna salario, o administrador pode conceder acesso apenas às colunas cod_professor e nome_professor, evitando que usuários vejam os salários.
É importante distinguir a concessão de privilégio em nível de coluna da concessão em nível de tabela. Se o comando fosse GRANT SELECT ON professores TO public;, o privilégio seria sobre todas as colunas da tabela. A especificação das colunas restringe o escopo do privilégio.
A pegadinha desta questão está em reconhecer que a sintaxe com lista de colunas é válida e que ela restringe o privilégio. Muitos candidatos podem pensar que o comando está errado por não ser uma sintaxe comum, mas é uma funcionalidade prevista no padrão SQL e suportada pela maioria dos SGBDs, como Oracle, PostgreSQL e SQL Server.
O comando apresentado está correto. A sintaxe GRANT SELECT (coluna1, coluna2) ON tabela TO usuário é válida e concede o privilégio de seleção apenas sobre as colunas listadas. Portanto, a afirmação de que "disponibilizará para seleção somente os campos cod_professor e nome_professor" está correta.
O comando GRANT faz parte da DCL (Data Control Language), que controla os aspectos de autorização de dados e licenças de usuários. Os principais comandos da DCL são GRANT e REVOKE.
Gabarito: Certo
Link permanente: /questoes/ce403619