Analise o script a seguir, no âmbito do PostgreSQL.CREATE TA...

Próximas questões
Com base no mesmo assunto
Q873278 Banco de Dados
Analise o script a seguir, no âmbito do PostgreSQL.
CREATE TABLE T ( chave serial NOT NULL PRIMARY KEY, dados json NOT NULL ); INSERT INTO T (dados) VALUES ('{ "nome": "Maria", "notas": {"disciplina":"Fisica","nota": 10}}'), ('{ "nome": "Pedro", "notas": {"disciplina":"Calculo","nota": 9}}');
O comando SQL que produz corretamente uma lista dos alunos, com a matrícula, nome e respectivas disciplinas e notas é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A resposta correta é a alternativa C. Vamos entender o porquê:

O tema da questão envolve a manipulação de dados no formato JSON em um banco de dados PostgreSQL. O PostgreSQL oferece suporte a dados JSON, permitindo armazenar, consultar e manipular esse tipo de dado com flexibilidade. Para resolver essa questão, é necessário compreender os operadores de manipulação de JSON do PostgreSQL.

Na alternativa C, são utilizados os operadores -> e ->> para acessar os elementos dentro do dado JSON armazenado na coluna dados. O operador -> é usado para extrair um elemento JSON em um formato que ainda permite a extração de elementos aninhados, enquanto o operador ->> é usado para extrair o elemento como texto.

Vamos analisar o comando correto passo a passo:

  • chave matricula: Seleciona a coluna chave e a renomeia como matricula. A coluna chave é do tipo serial e serve como identificador único (chave primária) para os registros da tabela.
  • dados -> 'nome' AS aluno: Utiliza o operador -> para acessar o campo 'nome' dentro do JSON e o renomeia como aluno. Isso retorna o nome do aluno dentro do objeto JSON.
  • dados -> 'notas' ->> 'disciplina' disc: Acessa o objeto aninhado 'notas' e, dentro dele, extrai o valor associado à chave 'disciplina' como texto, renomeando-o para disc.
  • dados -> 'notas' ->> 'nota' grau: Semelhante ao anterior, extrai o valor da chave 'nota' dentro do objeto 'notas' e o renomeia como grau.

O comando completo, portanto, produz uma lista dos alunos com suas respectivas matrículas, nomes, disciplinas e notas, acessando corretamente as informações no formato JSON armazenadas na tabela T.

As demais alternativas falham em acessar corretamente os dados JSON devido ao uso inadequado dos operadores ou por não se referirem corretamente aos elementos do JSON.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

-> int Obter elemento do array JSON '[1,2,3]' :: json-> 2

 

-> texto Obter campo de objeto JSON '{"a": 1, "b": 2}' :: json -> 'b'

 

- >> int Obtém o elemento do array JSON como texto '[1,2,3]' :: json - >> 2

 

- >> texto Obter o campo do objeto JSON como texto '{"a": 1, "b": 2}' :: json - >> 'b'

 

#> array de texto Objeto JSON no caminho especificado '{"a": [1,2,3], "b": [4,5,6]}' :: json #> '{a, 2}'

 

# >> array de texto Obter objeto JSON no caminho especificado como texto '{"a": [1,2,3], "b": [4,5,6]}' :: json # >> '{a 2}

Quem não tem acesso:  - -> C

The short arrow -> keeps the type as JSON, and the long arrow ->>  returns text.

Source: https://popsql.com/learn-sql/postgresql/how-to-query-a-json-column-in-postgresql

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo