Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — Quadrix 2024

Banco de DadosPostgreSQL
Código
qg354478
Banca
Quadrix
Órgão
NOVACAP
Ano
2024
Nível
Superior
Cargo
Analista de Sistemas - Infraestrutura
Quanto aos bancos de dados relacionais em plataforma baixa (Oracle, PostgreSQL e MySQL), julgue o item seguinte.Deve‑se executar o comando SELECT table_name FROM ALL_TABLES; para se obter o nome de todas as tabelas criadas no PostgreSQL.
  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”.

PostgreSQL: catálogo de tabelas

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.

NÃO CAIA NESSA!

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

SELECT table_name FROM ALL_TABLES;

Dicionário de dados (ALL_TABLES, USER_TABLES, DBA_TABLES)

PostgreSQL

SELECT tablename FROM pg_tables WHERE schemaname = 'public'; ou SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

Catálogo do sistema (pg_tables) / Padrão SQL (information_schema.tables)

1Catálogo do sistema
pg_tables
information_schema.tables
2Comando correto
SELECT tablename FROM pg_tables
WHERE schemaname = 'public'
3ALL_TABLES
Específico do Oracle
Não funciona no PostgreSQL
Listar tabelas no PostgreSQL
LEVELsoulevel.com.br
Listar tabelas no PostgreSQL: Catálogo do sistema (pg_tables, information_schema.tables); Comando correto (SELECT tablename FROM pg_tables, WHERE schemaname = 'public'); ALL_TABLES (Específico do Oracle, Não funciona no PostgreSQL)

Item — ❌ Errado

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