Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Prof. Eduardo Neves
edumneves@gmail.com
http://www.itnerante.com.br/profile/EduardoNeves
Dúvidas de Banco de Dados:
Fórum do curso 
Artigos do Blog:
http://goo.gl/Sm6JgV
mailto:edumneves@gmail.com
http://www.itnerante.com.br/profile/EduardoNeves
http://goo.gl/Sm6JgV
= SOME (equivalente ao IN) 
<> SOME
< SOME 
<= SOME 
> SOME 
>= SOME 
= ALL 
<> ALL
< ALL 
<= ALL 
> ALL 
>= ALL 
= ANY (equivalente ao IN) 
<> ANY
< ANY 
<= ANY 
> ANY 
>= ANY 
Os operadores any-or-all podem ser: 
/* Mostre os dados dos funcionários que não recebem mais que 5000 */ 
SELECT * 
FROM Funcionário
WHERE 
matricula <> ALL ( 
SELECT matriculaFuncionario
FROM trabalha
WHERE salario > 5000) 
SELECT * 
FROM Funcionário
WHERE 
matricula not in ( 
SELECT matriculaFuncionario
FROM trabalha
WHERE salario > 5000) 
Q8 - 2 - Considere a expressão em SQL a seguir.
SELECT R1.sno
FROM R1
WHERE R1.pno >= ALL (SELECT R2.pno FROM R2)
O resultado dessa consulta é
Q8 - 2 - Considere a expressão em SQL a seguir.
SELECT R1.sno
FROM R1
WHERE R1.pno >= ALL (SELECT R2.pno FROM R2)
O resultado dessa consulta é
 Deleção: 
DELETE FROM NOME_TABELA 
WHERE (expressão lógica) 
-- Apagando todo funcionário com nome João Alberto 
DELETE FROM funcionario
WHERE nome = ‘João Alberto’; 
-- Apagando todo funcionário que não tenha uma venda
DELETE FROM clients
WHERE 
id_cli NOT IN (SELECT id_cli from vendas)
Considere uma tabela relacional TX, cuja instância é 
mostrada a seguir. Considere também o comando 
SQL abaixo. 
O número de registros deletados da tabela TX por esse 
comando é: 
(A) 0 
(B) 1 
(C) 2 
(D) 3 
(E) 4 
Considere uma tabela relacional TX, cuja instância é 
mostrada a seguir. Considere também o comando 
SQL abaixo. 
O número de registros deletados da tabela TX por esse 
comando é: 
(A) 0 
(B) 1 
(C) 2 
(D) 3 
(E) 4 
47 Considere as seguintes tabelas relacionais e respectivas 
instâncias.
Analise o comando SQL a seguir.
delete from S
where not exists
(select * from R
where R.A=S.C and R.B=S.D)
O número de registros deletados por 
esse comando é:
(A) 0;
(B) 1;
(C) 2;
(D) 4;
(E) 5.
delete from S
where not exists
(select * from R
where
R.A=S.C and R.B=S.D)
47 Considere as seguintes tabelas relacionais e respectivas 
instâncias.
Analise o comando SQL a seguir.
delete from S
where not exists
(select * from R
where R.A=S.C and R.B=S.D)
O número de registros deletados por 
esse comando é:
(A) 0;
(B) 1;
(C) 2;
(D) 4;
(E) 5.
Q11 - Com referência ao banco BD_CERVEJA, analise a seguinte 
operação. 
Assinale a opção que apresenta a quantidade de registros removidos. 
(A) Zero. 
(B) Um. 
(C) Dois. 
(D) Quatro. 
(E) Cinco. 
Q11 - Com referência ao banco BD_CERVEJA, analise a seguinte 
operação. 
Assinale a opção que apresenta a quantidade de registros removidos. 
(A) Zero. 
(B) Um. 
(C) Dois. 
(D) Quatro. 
(E) Cinco. 
 Atualização: 
UPDATE NOME_TABELA 
SET COL1=VAL1, COL2=VAL2,...,COLN=VALN 
WHERE (expressão lógica) 
UPDATE funcionario
SET idade = idade+5 
WHERE nome = ‘Felipe’; 
Em um banco de dados, a tabela Pessoa foi criada com a 
seguinte instrução:
Após a criação, a tabela foi preenchida, porém o programador percebeu que 
todos os Nomes foram colocados no lugar do Sobrenome e vice-versa.
Que instrução SQL pode ser usada para realizar a troca, corrigindo a base?
Em um banco de dados, a tabela Pessoa foi criada com a 
seguinte instrução:
Após a criação, a tabela foi preenchida, porém o programador percebeu que 
todos os Nomes foram colocados no lugar do Sobrenome e vice-versa.
Que instrução SQL pode ser usada para realizar a troca, corrigindo a base?
Q13 - Que comando SQL deve ser dado para bloquear o crédito da 
conta 123456, colocando "S" no campo credito_bloqueado_sn?
(A) UPDATE Conta SET credito_bloqueado_sn="S" SELECT * FROM 
Conta WHERE id_conta=123456
(B) UPDATE Conta SET credito_bloqueado_sn="S" WHERE 
id_conta=123456
(C) UPDATE Conta SET VALUES (id_conta,"S") WHERE 
id_conta=123456
(D) UPDATE credito_bloqueado_sn="S" From Conta WHERE 
id_conta=123456
(E) UPDATE INTO Conta VALUES (123456,"S")
Q13 - Que comando SQL deve ser dado para bloquear o crédito da 
conta 123456, colocando "S" no campo credito_bloqueado_sn?
(A) UPDATE Conta SET credito_bloqueado_sn="S" SELECT * FROM 
Conta WHERE id_conta=123456
(B) UPDATE Conta SET credito_bloqueado_sn="S" WHERE 
id_conta=123456
(C) UPDATE Conta SET VALUES (id_conta,"S") WHERE 
id_conta=123456
(D) UPDATE credito_bloqueado_sn="S" From Conta WHERE 
id_conta=123456
(E) UPDATE INTO Conta VALUES (123456,"S")
24 Observe o comando SQL a seguir. 
Para que esse comando esteja corretamente 
formulado, quando analisado isoladamente, 
pressupõe-se que: 
(A) Y seja uma coluna da tabela X; 
(B) X seja uma coluna da tabela Y; 
(C) X e Y sejam tabelas; 
(D) X seja um banco de dados e Y seja uma tabela; 
(E) Y seja uma coluna da tabela X e Z seja o nome de 
um tipo de dados válido. 
24 Observe o comando SQL a seguir. 
Para que esse comando esteja corretamente 
formulado, quando analisado isoladamente, 
pressupõe-se que: 
(A) Y seja uma coluna da tabela X; 
(B) X seja uma coluna da tabela Y; 
(C) X e Y sejam tabelas; 
(D) X seja um banco de dados e Y seja uma tabela; 
(E) Y seja uma coluna da tabela X e Z seja o nome de 
um tipo de dados válido. 
not NULL =
NULL or false =
NULL or true = 
NULL or NULL =
NULL and false =
NULL and true =
NULL and NULL =
NULL
NULL
true
NULL
false
NULL
NULL
74 Na maioria das implementações SQL, pode-se considerar que as 
expressões lógicas possam assumir três valores, verdadeiro (T), falso 
(F) e desconhecido (?). Isso decorre principalmente da manipulação de 
valores nulos (NULL).
Assim sendo, analise as quatro expressões lógicas a seguir.
not ?
F or ?
T and ?
? or T
Assinale a opção que apresenta os valores finais das expressões lógicas 
acima, na ordem de cima para baixo.
(A) F; ?; T; T
(B) F; F; T; T
(C) ?; ?; ?; ?
(D) ?; ?; ?; T
(E) ?; F; ?; ?
74 Na maioria das implementações SQL, pode-se considerar que as 
expressões lógicas possam assumir três valores, verdadeiro (T), falso 
(F) e desconhecido (?). Isso decorre principalmente da manipulação de 
valores nulos (NULL).
Assim sendo, analise as quatro expressões lógicas a seguir.
not ?
F or ?
T and ?
? or T
Assinale a opção que apresenta os valores finais das expressões lógicas 
acima, na ordem de cima para baixo.
(A) F; ?; T; T
(B) F; F; T; T
(C) ?; ?; ?; ?
(D) ?; ?; ?; T
(E) ?; F; ?; ?
 Funções para números
◦ ABS (n)
 Devolve o valor absoluto de (n). 
◦ CEIL (n)
 Obtém o valor inteiro imediatamente superior ou 
igual a "n". 
◦ FLOOR (n) 
 Devolve o valor inteiro imediatamente inferior ou 
igual a "n". 
 Funções para números
◦ MOD (m, n)
 Retorna o resto da divisão de "m" por "n". 
◦ POWER (m, exponente)
 Calcula a potência de um número. 
◦ SQRT (n)
 Retorna a raiz quadrada de "n". 
 Funções para cadeias de caracteres: 
◦ LPAD (col, tam, ‘char’)
 Adiciona caracteres à esquerda do resultado até 
que tenha um certo tamanho. 
 Ex: LPAD(nome, 10, ‘*’) = ******Dudu 
◦ RPAD (col, tam, ‘char’)
 Adiciona caracteres à direita do resultado até 
que tenha um certo tamanho. 
 Ex: RPAD(nome, 10, ‘*’) = Dudu****** 
 Funções para cadeias de caracteres: 
◦ LTRIM (col, ‘chars’)
 Suprime um conjunto de caracteres à esquerda 
do resultado. 
 Ex: LTRIM(nome, ‘E’) = Eduardo - duardo 
◦ RTRIM (col, ‘chars’)
 Suprime um conjunto de caracteres à direita da 
cadeia. 
 Ex: RTRIM(nome, ‘do’) = Eduardo -Eduar
 Funções: 
◦ NVL (col, valor)
 Oracle 
 Substitui um valor nulo por outro valor. 
◦ ISNULL (col, valor)
 SQL Server
 Substitui um valor nulo por outro valor. 
◦ ISNULL (col)
 MySQL
 Se expressão for NULL retorna 1, senão retorna 0
◦ IFNULL (col, valor)
 MySQL
 Substitui um valor nulo por outro valor. 
◦ COALESCE (col, valor)
 Substitui um valor nulo poroutro valor. 
◦ COALESCE (col1, col2, col3)
 retorna o primeiro argumento da lista cujo valor 
é diferente de NULL. 
◦ NULLIF (col, valor)
 retorna NULL se col = valor; 
◦ IIF ( boolean_expression, true_value, false_value ) 
Considere a instrução abaixo, digitada em um banco de 
dados Oracle 11g que possui a tabela Produtos, aberta e em
condições ideais, contendo os campos NomeProduto − 
varchar2(50), PrecoUnitario − number(5,2),
UnidadesEmEstoque − integer, UnidadesNoPedido − integer:
Para retornar 0 se o valor de UnidadesNoPedido for nulo, a 
lacuna I deverá ser corretamente preenchida com
(A) IIF
(B) IFNULL
(C) NVL
(D) COALESCE
(E) ISNULL
www.provasdeti.com.br
Considere a instrução abaixo, digitada em um banco de 
dados Oracle 11g que possui a tabela Produtos, aberta e em
condições ideais, contendo os campos NomeProduto − 
varchar2(50), PrecoUnitario − number(5,2),
UnidadesEmEstoque − integer, UnidadesNoPedido − integer:
Para retornar 0 se o valor de UnidadesNoPedido for nulo, a 
lacuna I deverá ser corretamente preenchida com
(A) IIF
(B) IFNULL
(C) NVL
(D) COALESCE
(E) ISNULL
www.provasdeti.com.br
 Função para conversão de tipos: 
 CAST 
◦ CAST(dado_origem as tipo_dado_destino) 
SELECT CAST (AVG(PRECO) AS DECIMAL (10,2)) 
FROM PRODUTO; 
SELECT CAST (’11/05/2016’ AS DATE) 
FROM DUAL; 
Efetua a união lógica do resultado de duas consultas. 
consulta1 UNION consulta2 
O resultado das consultas 1 e 2 devem ser compatíveis, ou seja, 
os atributos retornados pelas consultas devem ser os mesmos. 
( SELECT matricula, nome_func, endereço 
FROM Funcionário 
WHERE salario > 5000) 
UNION 
( SELECT matricula, nome_func, endereço 
FROM Funcionário 
WHERE idade > 50) 
Obs: UNION retira as repetições.
/* UNION ALL não retira as repetições */
( SELECT matricula, nome_func, endereço 
FROM Funcionário 
WHERE salario > 5000) 
UNION ALL
( SELECT matricula, nome_func, endereço 
FROM Funcionário 
WHERE idade > 50) 
SELECT idade
FROM Funcionário 
UNION
SELECT idade
FROM Medico 
Idade
30
31
32
33
34
Funcionario
Idade
32
33
34
40
42
Medico
Idade
30
31
32
33
34
32
33
34
40
42
Idade
30
31
32
33
34
40
42
Tira repetições
SELECT idade
FROM Funcionário 
UNION
SELECT idade
FROM Medico 
Idade
30
30
30
30
30
Funcionario
Idade
32
33
34
Medico
Idade
30
30
30
30
30
32
33
34
Idade
30
32
33
34
Tira repetições
SELECT idade
FROM Funcionário 
UNION
SELECT idade
FROM Medico 
Idade
30
30
30
30
30
Funcionario
Idade
Medico
Idade
30
30
30
30
30
Idade
30
Tira repetições
Interseção: 
SELECT Placa
FROM Carros
WHERE Marca IN (‘Toyota’, ‘Ford’) 
INTERSECT 
SELECT Placa
FROM Carros
WHERE Marca IN (‘Toyota’, ‘Honda’) 
Placa Marca Preço AnoFab
DAE6534 Ford 1000 2009
DKL4589 Toyota 500 2009
LME2298 Ford 3000 2010
JPG2356 Toyota 4000 2014
PPO4554 Honda 2000 2013
Carros
Diferença: 
SELECT Placa
FROM Carros
WHERE Marca IN (‘Toyota’, ‘Ford’) 
EXCEPT
SELECT Placa
FROM Carros
WHERE Marca IN (‘Toyota’, ‘Honda’) 
Placa Marca Preço AnoFab
DAE6534 Ford 1000 2009
DKL4589 Toyota 500 2009
LME2298 Ford 3000 2010
JPG2356 Toyota 4000 2014
PPO4554 Honda 2000 2013
Carros
 No Oracle o MINUS é equivalente ao EXCEPT
 UNION, EXCEPT e INTERSECT 
◦ removem duplicatas
 UNION ALL, EXCEPT ALL, INTERSECT ALL
◦ Não removem duplicatas
34 Analise os comandos SQL a seguir. 
Sabendo-se que os comandos I, II e III retornam, respectivamente, 9, 
2 e 3 registros, e que as duas tabelas possuem chaves primárias, o 
número de registros presentes nas tabelas X e Y, respectivamente, é: 
(A) 8 e 1; 
(B) 7 e 2; 
(C) 6 e 3; 
(D) 5 e 4; 
(E) 4 e 5. 
34 Analise os comandos SQL a seguir. 
Sabendo-se que os comandos I, II e III retornam, respectivamente, 9, 
2 e 3 registros, e que as duas tabelas possuem chaves primárias, o 
número de registros presentes nas tabelas X e Y, respectivamente, é: 
(A) 8 e 1; 
(B) 7 e 2; 
(C) 6 e 3; 
(D) 5 e 4; 
(E) 4 e 5. 
46 Considere as seguintes tabelas relacionais e 
respectivas instâncias.
Analise o comando SQL a seguir.
select * from R UNION 
select * from S
O número de linhas produzidas por esse
comando, excetuada a linha de títulos de 
colunas, é:
(A) 2;
(B) 5;
(C) 6;
(D) 7;
(E) 11.
46 Considere as seguintes tabelas relacionais e 
respectivas instâncias.
Analise o comando SQL a seguir.
select * from R UNION 
select * from S
O número de linhas produzidas por esse
comando, excetuada a linha de títulos de 
colunas, é:
(A) 2;
(B) 5;
(C) 6;
(D) 7;
(E) 11.
MatF NomeF IdD
10 Ana D1
20 Caio D1
30 Lia D3
40 Luiz null
50 Lais null
Funcionario
IdD NomeD
D1 RH
D2 Vendas
D3 TI
D4 Projetos
Departamento
 Junção Interna: 
Select * 
From Funcionario F INNER JOIN 
Departamento D on F.idD = D.idD
MatF NomeF IdD IdD NomeD
10 Ana D1 D1 RH
20 Caio D1 D1 RH
30 Lia D3 D3 TI
Obs: INNER pode ser
suprimido, ou seja, pode-se 
usar apenas JOIN
Cláusula ON é obrigatória
MatF NomeF IdD
10 Ana D1
20 Caio D1
30 Lia D3
40 Luiz null
50 Lais null
Funcionario
IdD NomeD
D1 RH
D2 Vendas
D3 TI
D4 Projetos
Departamento
 Junção Interna: 
Select * 
From Funcionario F, Departamento D 
Where F.idD = D.idD
MatF NomeF IdD IdD NomeD
10 Ana D1 D1 RH
20 Caio D1 D1 RH
30 Lia D3 D3 TI
MatF NomeF IdD
10 Ana D1
20 Caio D1
30 Lia D3
40 Luiz null
50 Lais null
Funcionario
IdD NomeD
D1 RH
D2 Vendas
D3 TI
D4 Projetos
Departamento
 Junção Externa à Esquerda: 
Select * 
From Funcionario F LEFT OUTER JOIN 
Departamento D on F.idD = D.idD
MatF NomeF IdD IdD NomeD
10 Ana D1 D1 RH
20 Caio D1 D1 RH
30 Lia D3 D3 TI
40 Luiz null null null
50 Lais null null null
Obs: OUTER pode ser
suprimido, ou seja, pode-se 
usar apenas LEFT JOIN
Cláusula ON é obrigatória
MatF NomeF IdD
10 Ana D1
20 Caio D1
30 Lia D3
40 Luiz null
50 Lais null
Funcionario
IdD NomeD
D1 RH
D2 Vendas
D3 TI
D4 Projetos
Departamento
 Junção Externa à Direita: 
Select * 
From Funcionario F RIGHT OUTER JOIN 
Departamento D on F.idD = D.idD
MatF NomeF IdD IdD NomeD
10 Ana D1 D1 RH
20 Caio D1 D1 RH
Null Null Null D2 Vendas
30 Lia D3 D3 TI
Null Null Null D4 Projetos
Obs: OUTER pode ser
suprimido, ou seja, pode-se 
usar apenas RIGHT JOIN
Cláusula ON é obrigatória
MatF NomeF IdD
10 Ana D1
20 Caio D1
30 Lia D3
40 Luiz null
50 Lais null
Funcionario
IdD NomeD
D1 RH
D2 Vendas
D3 TI
D4 Projetos
Departamento
 Junção Externa Completa: 
Select * 
From Funcionario F FULL OUTER JOIN 
Departamento D on F.idD = D.idD
MatF NomeF IdD IdD NomeD
10 Ana D1 D1 RH
20 Caio D1 D1 RH
Null Null Null D2 Vendas
30 Lia D3 D3 TI
Null Null Null D4 Projetos
40 Luiz Null Null Null
50 Lais Null Null Null
Obs: OUTER pode ser
suprimido, ou seja, pode-se 
usar apenas FULL JOIN
Cláusula ON é obrigatória
 Junção Cruzada (produto Cartesiano): 
Select Cod_Pac, Nome_Pac, Cod_Med, Nome_Med
From Paciente CROSS JOIN Medico 
Paciente Medico
Paciente x Medico
Obs: ON é opcional no 
CROSS JOIN
 Junção Cruzada (produto Cartesiano): 
Select Cod_Pac, Nome_Pac, Cod_Med, Nome_Med
From Paciente, Medico 
Paciente Medico
Paciente x Medico
SELECT *
FROM table1 t1 JOIN table2 t2
ON t1.a = t2.c
ORDER BY t1.a
A b
1 One
Null Three
4 Join4
c D
Null Two
4 four
A B c D
1 One Null Two
1 One 4 four
Null Three Null Two
Null Three 4 four
4 Join4 Null Two
4 Join4 4 four
A b c D
4 Join4 4 four
49 Considere duas tabelas X e Y, com as seguintes instâncias: 
52
O comando SQL que retorna 
49 Considere duas tabelas X e Y, com as seguintes instâncias: 
O comando SQL que retorna 
a b c d
1 2 1 2
3 3 3 4
5 7 5 6
a b c d
1 2 1 2
3 3 3 4
5 7 5 6
a b c d
1 2 1 2
3 3 3 4
5 7 5 6
4 5 NULL NULL
a b c d
1 2 1 2
3 3 3 4
5 7 5 6
4 5 NULL NULL
27 Sabe-se que as tabelas T1 e T2 têm, cada uma: 
 1.000 registros; 
 5 colunas; 
 uma coluna intitulada “A” totalmente preenchida com valoresnulos. 
Pode-se concluir que o comando SQL 
produz um resultado que contém: 
(A) 5 colunas e 1 linha; 
(B) 10 colunas e 1 linha; 
(C) 5 colunas e 1.000 linhas; 
(D) 10 colunas e 1.000 linhas; 
(E) 9 colunas e 1.000.000 de linhas.
27 Sabe-se que as tabelas T1 e T2 têm, cada uma: 
 1.000 registros; 
 5 colunas; 
 uma coluna intitulada “A” totalmente preenchida com valores 
nulos. 
Pode-se concluir que o comando SQL 
produz um resultado que contém: 
(A) 5 colunas e 1 linha; 
(B) 10 colunas e 1 linha; 
(C) 5 colunas e 1.000 linhas; 
(D) 10 colunas e 1.000 linhas; 
(E) 9 colunas e 1.000.000 de linhas.
36 Considerando duas tabelas relacionais R e S, tal que haja 
uma chave primária definida para cada uma delas e que a 
instância de R contenha um número maior de registros que a 
instância de S, analise os comandos SQL a seguir. 
I. I. select * from r full outer join s on r.a = s.a
II. select * from r left outer join s on r.a = s.a union
select * from r right outer join s on r.a = s.a
Sabendo-se que as instâncias de R e S não são vazias, é correto 
concluir que:
(A) os resultados de I e II contêm as mesmas linhas;
(B) o resultado de I contém mais linhas que o de II;
(C) o resultado de II contém mais linhas que o de I;
(D) os resultados de I e II não possuem interseção e têm o 
mesmo número de linhas;
(E) os resultados de I e II possuem interseção e não têm o 
mesmo número de linhas.
I. select * from r full outer join s on r.a = s.a
a b
1 1
2 2
3 3
a c
1 1
1 2
4 5
a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null Null
null null 4 5
r s
II. select * from r left outer join s on r.a = s.a union
select * from r right outer join s on r.a = s.a
a b
1 1
2 2
3 3
a c
1 1
1 2
4 5
a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null null
r s
a b a c
1 1 1 1
1 1 1 2
null Null 4 5
a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null null
null Null 4 5
36 Considerando duas tabelas relacionais R e S, tal que haja 
uma chave primária definida para cada uma delas e que a 
instância de R contenha um número maior de registros que a 
instância de S, analise os comandos SQL a seguir. 
I. I. select * from r full outer join s on r.a = s.a
II. select * from r left outer join s on r.a = s.a union
select * from r right outer join s on r.a = s.a
Sabendo-se que as instâncias de R e S não são vazias, é correto 
concluir que:
(A) os resultados de I e II contêm as mesmas linhas;
(B) o resultado de I contém mais linhas que o de II;
(C) o resultado de II contém mais linhas que o de I;
(D) os resultados de I e II não possuem interseção e têm o 
mesmo número de linhas;
(E) os resultados de I e II possuem interseção e não têm o 
mesmo número de linhas.
49 Observe a utilização de junções externas nos dois comandos 
SQL
mostrados abaixo.
Assinale a opção que indica a condição necessária e suficiente
para que os dois comandos sempre produzam o mesmo
resultado.
Assinale a opção que indica a condição necessária e suficiente
para que os dois comandos sempre produzam o mesmo
resultado.
(A) Não haja duplicação de registros nas instâncias de “x” e “y”.
(B) As duas tabelas possuam o mesmo número de registros.
(C) Nenhum dos valores da coluna “a” da tabela “x” seja nulo
(NULL).
(D) Nenhuma das tabelas possua uma instância vazia.
(E) Uma das tabelas possua mais registros que a outra.
II. select * from r full outer join s on r.a = s.a
a b
1 1
2 2
3 3
3 3
3 3
a c
1 1
1 2
4 5
r s a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null null
3 3 null null
3 3 null null
null Null 4 5
II. select * from r left outer join s on r.a = s.a union
select * from r right outer join s on r.a = s.a
a b
1 1
2 2
3 3
3 3
3 3
a c
1 1
1 2
4 5
a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null null
3 3 null null
3 3 null null
r s
a b a c
1 1 1 1
1 1 1 2
null Null 4 5
a b a c
1 1 1 1
1 1 1 2
2 2 null Null
3 3 null null
null Null 4 5
Assinale a opção que indica a condição necessária e suficiente
para que os dois comandos sempre produzam o mesmo
resultado.
(A) Não haja duplicação de registros nas instâncias de “x” e “y”.
(B) As duas tabelas possuam o mesmo número de registros.
(C) Nenhum dos valores da coluna “a” da tabela “x” seja nulo
(NULL).
(D) Nenhuma das tabelas possua uma instância vazia.
(E) Uma das tabelas possua mais registros que a outra.
Considere que as instâncias das tabelas T1, T2 e T3 têm, 
respectivamente, 1.000, 10.000 e 100.000 registros. O comando SQL 
select 1 from t1 
union
select 2 from t2 
union
select 3 from t3 
produz um resultado com:
a) 3 linhas;
b) 1.000 linhas;
c) 10.000 linhas;
d) 100.000 linhas;
e) 111.000 linhas.
Considere que as instâncias das tabelas T1, T2 e T3 têm, 
respectivamente, 1.000, 10.000 e 100.000 registros. O comando SQL 
select 1 from t1 
union
select 2 from t2 
union
select 3 from t3 
produz um resultado com:
a) 3 linhas;
b) 1.000 linhas;
c) 10.000 linhas;
d) 100.000 linhas;
e) 111.000 linhas.
Considerando-se as tabelas e o comando SQL 
mostrados acima, é correto concluir que esse 
comando produz um resultado com uma única 
coluna contendo somente o(s) valor(es):
(A) 4 
(B) 3, 4 
(C) 1, 3, 5 
(D) 3, 4, 5 
(E) 1, 3, 4, 5 
Considerando-se as tabelas e o comando SQL 
mostrados acima, é correto concluir que esse 
comando produz um resultado com uma única 
coluna contendo somente o(s) valor(es):
(A) 4 
(B) 3, 4 
(C) 1, 3, 5 
(D) 3, 4, 5 
(E) 1, 3, 4, 5 
Considerando-se as tabelas e o comando SQL 
mostrados acima, é correto concluir que o 
número de registros removidos da tabela Y pela 
execução desse comando é:
(A) 1
(B) 2
(C) 3
(D) 4
(E) 5
Considerando-se as tabelas e o comando SQL 
mostrados acima, é correto concluir que o 
número de registros removidos da tabela Y pela 
execução desse comando é:
(A) 1
(B) 2
(C) 3
(D) 4
(E) 5
Q25 - 67 - O modelo relacional a seguir representa um banco 
de dados simplificado de uma empresa de comércio. As chaves 
estão sublinhadas.
CLIENTE(NomeC, EnderecoC)
PRODUTO(NomeP)
FORNECEDOR(NomeF)
PRODUZ(NomeF,NomeP,Preco)
PEDIDO(NomeC,NomeF,NomeP,Quantidade)
Se o dono da empresa deseja saber quais clientes nunca 
pediram um produto do fornecedor cujo nome é "Barateira", que 
consulta SQL deve fazer?
CLIENTE(NomeC, EnderecoC)
PRODUTO(NomeP)
FORNECEDOR(NomeF)
PRODUZ(NomeF,NomeP,Preco)
PEDIDO(NomeC,NomeF,NomeP,Quantidade)
Se o dono da empresa deseja saber quais clientes nunca 
pediram um produto do fornecedor cujo nome é "Barateira", que 
consulta SQL deve fazer?
(A) SELECT * FROM CLIENTE 
WHERE CLIENTE. NOMEC IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
(B) SELECT * FROM CLIENTE 
WHERE CLIENTE.NOMEC NOT IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
(C) SELECT * FROM CLIENTE 
WHERE CLIENTE.NOMEC=PEDIDO.NOMEC AND 
CLIENTE.NOMEC NOT IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
CLIENTE(NomeC, EnderecoC)
PRODUTO(NomeP)
FORNECEDOR(NomeF)
PRODUZ(NomeF,NomeP,Preco)
PEDIDO(NomeC,NomeF,NomeP,Quantidade)
Se o dono da empresa deseja saber quais clientes nunca 
pediram um produto do fornecedor cujo nome é "Barateira", que 
consulta SQL deve fazer?
(D) SELECT * FROM CLIENTE,PEDIDO 
WHERE CLIENTE.NOMEC=PEDIDO.NOMEC AND 
CLIENTE.NOMEC IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
(E) SELECT * FROM CLIENTE,PEDIDO 
WHERE CLIENTE.NOMEC=PEDIDO.NOMEC AND 
NOMEF<>"Barateira"
CLIENTE(NomeC, EnderecoC)
PRODUTO(NomeP)
FORNECEDOR(NomeF)
PRODUZ(NomeF,NomeP,Preco)
PEDIDO(NomeC,NomeF,NomeP,Quantidade)
Se o dono da empresa deseja saber quais clientes nunca 
pediram um produto do fornecedor cujo nome é "Barateira", que 
consulta SQL deve fazer?
(A) SELECT * FROM CLIENTE 
WHERE CLIENTE. NOMEC IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
(B) SELECT * FROM CLIENTE 
WHERE CLIENTE.NOMEC NOT IN 
(SELECT NOMEC FROM PEDIDO WHERE NOMEF="Barateira")
(C) SELECT * FROM CLIENTE 
WHERE CLIENTE.NOMEC=PEDIDO.NOMEC AND 
CLIENTE.NOMEC NOT IN 
(SELECTNOMEC FROM PEDIDO WHERE NOMEF="Barateira")
Em SQL, para se listarem os nomes dos 
departamentos da tabela departamento que não 
possuem colaboradores, é correto utilizar o código 
abaixo
SELECT nomedepartamento
FROM departamento d 
EXCEPT 
(SELECT nomedepartamento
FROM departamento d, colaborador c 
WHERE d.codigodepartamento = 
c.codigodepartamento);
Em SQL, para se listarem os nomes dos 
departamentos da tabela departamento que não 
possuem colaboradores, é correto utilizar o código 
abaixo
SELECT nomedepartamento
FROM departamento d 
EXCEPT 
(SELECT nomedepartamento
FROM departamento d, colaborador c 
WHERE d.codigodepartamento = 
c.codigodepartamento);
C
Uma tabela A contém apenas o código (cod_pac) de todos 
os pacientes internados em um hospital. Uma tabela B, 
com a mesma estrutura, contém o código (cod_pac) de 
todos os pacientes deste hospital que estão internados há 
mais de 15 dias. Para listar o código de todos os pacientes 
deste hospital internados por um período menor ou igual a 
15 dias, deve-se utilizar a seguinte instrução SQL: 
a) SELECT cod_pac FROM A DIFF SELECT cod_pac FROM B
b) SELECT cod_pac FROM (A UNION B)
c) SELECT cod_pac FROM A where
cod_pac not in (SELECT cod_pac FROM B)
d) SELECT cod_pac FROM A where cod_pac in (A MINUS B)
e) SELECT cod_pac FROM (A DIFF B)
Uma tabela A contém apenas o código (cod_pac) de todos 
os pacientes internados em um hospital. Uma tabela B, 
com a mesma estrutura, contém o código (cod_pac) de 
todos os pacientes deste hospital que estão internados há 
mais de 15 dias. Para listar o código de todos os pacientes 
deste hospital internados por um período menor ou igual a 
15 dias, deve-se utilizar a seguinte instrução SQL: 
a) SELECT cod_pac FROM A DIFF SELECT cod_pac FROM B
b) SELECT cod_pac FROM (A UNION B)
c) SELECT cod_pac FROM A where
cod_pac not in (SELECT cod_pac FROM B)
d) SELECT cod_pac FROM A where cod_pac in (A MINUS B)
e) SELECT cod_pac FROM (A DIFF B)
CREATE TABLE Livro (ISBN INT, Nome VARCHAR(40),Autor INT, Editora INT); 
CREATE TABLE Autor (Codigo INT, NOME VARCHAR(40)); 
CREATE TABLE Editora (Codigo INT, Nome VARCHAR(40)); 
INSERT INTO Livro VALUES (12345, "Programas em C",1,1); 
INSERT INTO Livro VALUES (67890, "Métodos Ágeis",1,2); 
INSERT INTO Autor VALUES (1, "Manoel da Silva"); 
INSERT INTO Editora VALUES (1, "Editora Livros"); 
Note que os exemplos abaixo consideram que as linhas apresentadas acima 
já foram executadas. Para receber como resultado apenas a string
Programas em C, é necessário executar o comando 
a) SELECT Nome FROM Editora WHERE Editora.Codigo = Livro.Editora AND 
Autor.Codigo = Livro.Autor; 
b) SELECT b.Nome FROM Autor a, Livro c, Editora c WHERE a.Autor = 
b.Codigo AND a.Editora = c.Codigo; 
c) SELECT * FROM Livro a WHERE (SELECT Codigo FROM Autor WHERE 
Codigo = a.Autor) AND (SELECT Codigo FROM Editora WHERE Codigo = 
a.Editora); 
d) SELECT Nome FROM Livro WHERE Autor IN (SELECT Codigo FROM Autor) 
AND Editora IN (SELECT Codigo FROM Editora); 
e) SELECT * FROM Livro WHERE Livro.Autor = (SELECT Codigo FROM Autor) 
AND Livro.Editora = (SELECT Codigo FROM Editora); 
CREATE TABLE Livro (ISBN INT, Nome VARCHAR(40),Autor INT, Editora INT); 
CREATE TABLE Autor (Codigo INT, NOME VARCHAR(40)); 
CREATE TABLE Editora (Codigo INT, Nome VARCHAR(40)); 
INSERT INTO Livro VALUES (12345, "Programas em C",1,1); 
INSERT INTO Livro VALUES (67890, "Métodos Ágeis",1,2); 
INSERT INTO Autor VALUES (1, "Manoel da Silva"); 
INSERT INTO Editora VALUES (1, "Editora Livros"); 
Note que os exemplos abaixo consideram que as linhas apresentadas acima 
já foram executadas. Para receber como resultado apenas a string
Programas em C, é necessário executar o comando 
a) SELECT Nome FROM Editora WHERE Editora.Codigo = Livro.Editora AND 
Autor.Codigo = Livro.Autor; 
b) SELECT b.Nome FROM Autor a, Livro c, Editora c WHERE a.Autor = 
b.Codigo AND a.Editora = c.Codigo; 
c) SELECT * FROM Livro a WHERE (SELECT Codigo FROM Autor WHERE 
Codigo = a.Autor) AND (SELECT Codigo FROM Editora WHERE Codigo = 
a.Editora); 
d) SELECT Nome FROM Livro WHERE Autor IN (SELECT Codigo FROM Autor) 
AND Editora IN (SELECT Codigo FROM Editora); 
e) SELECT * FROM Livro WHERE Livro.Autor = (SELECT Codigo FROM Autor) 
AND Livro.Editora = (SELECT Codigo FROM Editora); 
Acerca de sistemas de gerenciamento de banco de dados 
relacional (SGBDR), julgue o item a seguir.
Considerando-se a inexistência de concorrência de 
transação, a existência de permissão de leitura; e considerando-
se também que as tabelas A e B, além de possuírem o atributo 
ID, estejam disponíveis, é correto afirmar que a execução do 
comando SQL mostrado abaixo terá como resultado uma 
quantidade de registros igual à soma dos registros das duas 
tabelas.
SELECT ID FROM A 
UNION 
SELECT ID FROM B
Acerca de sistemas de gerenciamento de banco de dados 
relacional (SGBDR), julgue o item a seguir.
Considerando-se a inexistência de concorrência de 
transação, a existência de permissão de leitura; e considerando-
se também que as tabelas A e B, além de possuírem o atributo 
ID, estejam disponíveis, é correto afirmar que a execução do 
comando SQL mostrado abaixo terá como resultado uma 
quantidade de registros igual à soma dos registros das duas 
tabelas.
SELECT ID FROM A 
UNION 
SELECT ID FROM B
E
Q1 – B
Q2 – C
Q3 – B
Q4 – C
Q5 – A
Q6 – C
Q7 – E
Q8 – E
Q9 – E
Q10 – B
Q11 – E
Q12 – D
Q13 – B
Q14 – A
Q15 – D
Q15.1 – C
Q16 – D
Q17 – D
Q18 – A
Q19 – D
Q20 – A
Q21 – A
Q22 – A
Q23 – C
Q24 – E
Q25 – B
Q26 – C
Q27 – C
Q28 – D
Q29 – E
88

Mais conteúdos dessa disciplina