Questão de Banco de Dados — PostgreSQL — Quadrix 2023
- Código
- qg029812
- Banca
- Quadrix
- Órgão
- CRQ 4ª Região-SP
- Ano
- 2023
- Nível
- Superior
- Cargo
- Profissionais de Atividade de Suporte - Analista de Sistemas (Programação)

- CCerto
- EErrado

GabaritoE — Errado
Gabarito: ERRADO (letra E). No PostgreSQL 9.2, o comando correto para criar um usuário é CREATE USER (ou CREATE ROLE), e não GRANT. O GRANT é um comando da sublinguagem DCL (Data Control Language) utilizado para conceder privilégios a usuários e papéis já existentes, não para criá-los. A afirmação do enunciado confunde a função de criação de usuário com a de concessão de privilégios.
O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional de código aberto, que segue o padrão SQL. Dentro desse padrão, a linguagem SQL é dividida em sublinguagens, cada uma com responsabilidades específicas. A DDL (Data Definition Language) é responsável pela definição da estrutura do banco (CREATE, ALTER, DROP), enquanto a DCL (Data Control Language) é responsável pelo controle de acesso e permissões, sendo seus principais comandos o GRANT e o REVOKE. A criação de um usuário é uma operação de definição, portanto pertence à DDL, e não à DCL.
Para criar um usuário no PostgreSQL, utiliza-se o comando CREATE USER, que é um atalho para CREATE ROLE ... WITH LOGIN. A sintaxe básica é CREATE USER nome_usuario WITH PASSWORD 'senha';. Já o comando GRANT é usado para conceder privilégios específicos sobre objetos do banco (como tabelas, views, sequences) a um usuário ou papel. Por exemplo, GRANT SELECT ON tabela TO usuario; concede o privilégio de consulta sobre a tabela ao usuário. A confusão entre esses dois comandos é uma pegadinha clássica em provas de banco de dados.
A banca explora exatamente essa distinção: o candidato que sabe que GRANT é usado para "dar" algo pode ser induzido a pensar que ele também "cria" usuários. No entanto, a função do GRANT é exclusivamente a de atribuir privilégios a entidades (usuários ou papéis) que já foram criadas. A criação de usuários é feita com CREATE USER ou CREATE ROLE. Portanto, a afirmação de que "para criar um usuário deve-se utilizar o comando GRANT" está incorreta.
A banca troca a função do comando GRANT. Ela quer que você confunda "conceder privilégios" com "criar usuário". Lembre-se: GRANT dá permissões a quem já existe; CREATE USER/CREATE ROLE cria a entidade. Essa inversão de papéis é o coração da questão.
A afirmação "No PostgreSQL 9.2, para criar um usuário deve-se utilizar o comando GRANT" é incorreta. O comando GRANT é um comando da DCL (Data Control Language) utilizado para conceder privilégios de acesso a usuários e papéis já existentes no banco de dados. Para criar um usuário, o comando correto é CREATE USER (ou CREATE ROLE). A criação de usuário é uma operação de definição de estrutura, pertencente à DDL (Data Definition Language), enquanto o GRANT é uma operação de controle de acesso, pertencente à DCL. Portanto, a assertiva está errada.
Gabarito: ERRADO (letra E).
Link permanente: /questoes/qg029812