FC ConcursosFC Concursos

Questão FC369454

Considere o seguinte esquema de um banco de dados relacional, expresso em linguagem SQL: create table editora ( cod_editora integerprimary key, nome_editora varchar(30) not null, t

Linguagem SQL

FGV · 2024

Considere o seguinte esquema de um banco de dados relacional, expresso em linguagem SQL:

 

create table editora

(

cod_editora integerprimary key,

nome_editora varchar(30) not null,

telefone char(11)

);

create table livro

(

cod_livro integerprimary key,

num_isbn char(10) unique not null,

titulo varchar(20) not null,

edicao integerdefault 1 not null,

cod_editora integerreferences editora

);

 

Após criadas, os comandos de inserção a seguir foram executados:

insert into editora values (1,'Ed1','2222-3333'), (2,'Ed2',NULL);

insert into livro values (1,'111','Livro1',2,NULL), (2,'222','Livro2',2,1), (5,'555','Livro5',1,1);

insert into livro(cod_livro,num_isbn,titulo,cod_editora) values (3,'333','Livro3',2),

(4,'444','Livro4',2);

 

A consulta select * from livro where exists (select distinct * from editora) and edicao%2 <> 0 produz como resultado a seguinte quantidade de linhas:

  1. 0.
  2. 1.
  3. 2.
  4. 3.
  5. 4.
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A consulta retorna 3 linhas porque a cláusula EXISTS avalia apenas se a subquery retorna algo. Aqui select distinct * from editora devolve linhas (existem editoras), logo EXISTS é verdadeiro para todos os registros de livro e não filtra nenhuma linha por si só.

O filtro efetivo é edicao%2 <> 0, ou seja \(edicao \% 2 \neq 0\), que seleciona somente edições ímpares. Como a coluna edicao tem default 1, os livros sem valor explícito recebem edição 1.

Analisando os dados inseridos, três livros têm edição ímpar (valores 1): cod_livro 3, 4 e 5. Portanto a consulta combina o verdadeiro de EXISTS com o critério de imparidade e retorna exatamente três linhas.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo