Questão de Banco de Dados — PostgreSQL — Quadrix 2024
- Código
- qg354478
- Banca
- Quadrix
- Órgão
- NOVACAP
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Sistemas - Infraestrutura
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando SELECT table_name FROM ALL_TABLES; é específico do Oracle, não do PostgreSQL. No PostgreSQL, para listar as tabelas criadas, deve-se consultar o catálogo do sistema, por exemplo: SELECT tablename FROM pg_tables WHERE schemaname = 'public'; ou SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';. A banca trocou a sintaxe de um SGBD pelo outro, explorando a confusão entre os catálogos de cada banco.
O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional (ORDBMS) de código aberto, que segue o padrão SQL e oferece recursos como chaves estrangeiras, triggers, views e integridade transacional. Para obter metadados, como a lista de tabelas, o PostgreSQL utiliza o catálogo do sistema — um conjunto de tabelas e visões que armazenam informações sobre os objetos do banco. As principais formas de consultar essas informações são:
pg_tables: uma visão do catálogo que lista as tabelas, com colunas como schemaname, tablename, tableowner. Exemplo: SELECT tablename FROM pg_tables WHERE schemaname = 'public';.
information_schema.tables: uma visão padrão do SQL que também lista as tabelas, com colunas como table_schema, table_name. Exemplo: SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';.
Já o Oracle possui visões de dicionário de dados como ALL_TABLES, USER_TABLES e DBA_TABLES. O comando SELECT table_name FROM ALL_TABLES; funciona no Oracle, mas não no PostgreSQL. Essa é a pegadinha clássica: o candidato que conhece apenas um dos SGBDs pode marcar como certo, mas a banca cobra justamente a distinção entre as plataformas.
Na prática, se você estiver no psql (cliente de linha de comando do PostgreSQL), também pode usar o comando \dt para listar as tabelas do esquema atual. Mas em SQL puro, a consulta correta envolve o catálogo do sistema, nunca ALL_TABLES.
A banca troca a sintaxe do Oracle (ALL_TABLES) pela do PostgreSQL. Lembre-se: no PostgreSQL, use pg_tables ou information_schema.tables; no Oracle, use ALL_TABLES, USER_TABLES ou DBA_TABLES. Essa distinção é recorrente em provas que comparam SGBDs.
SGBD | Comando para listar tabelas | Fonte de metadados |
|---|---|---|
Oracle |
| Dicionário de dados ( |
PostgreSQL |
| Catálogo do sistema ( |
A afirmação está errada porque ALL_TABLES é uma visão do dicionário de dados do Oracle, não do PostgreSQL. No PostgreSQL, o comando correto para listar as tabelas criadas seria, por exemplo, SELECT tablename FROM pg_tables WHERE schemaname = 'public'; ou SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';. Portanto, o comando apresentado não funciona no PostgreSQL, tornando o item incorreto.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg354478