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