Baixe o app para aproveitar ainda mais
Prévia do material em texto
Avaliação Parte superior do formulário 1) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL FULL JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES FULL JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; 4 (alternativa incorreta) 3 (alternativa incorreta) 6 (alternativa correta) 5 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) Resposta incorreta! Ao todo 6 linhas serão retornadas na tabela resultado, pois para cada um dos registros da tabela CURSOS(tabela que está no lado direito da expressão SQL) existirá um registro na tabela resultado, independente dos registros terem correspondente na tabela INSTRUTORES contabilizando cinco linhas, e mais uma do registro do instrutor Fábio que não possui correspondente na tabela CURSOS. 2) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL RIGHT JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES RIGHT JOIN CURSOS 11 ON INSTRUTORES.NOME = CURSOS.TITULO; 0 (alternativa incorreta) 4 (alternativa incorreta) 1 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) 5 (alternativa correta) Resposta incorreta! O comando executa com sucesso e retorna 5 registros. Como nenhuma combinação entre as tabelas é satisfeita pela condição de união, o atributo RIGHT JOIN retorna os 5 registros da tabela à direita, que no caso é a tabela CURSOS. 3) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL INNER JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES INNER JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; 3 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) 2 (alternativa incorreta) 5 (alternativa incorreta) 4 (alternativa correta) Resposta incorreta! Somente 4 linhas serão retornadas na tabela resultado, pois existem apenas 4 registros que atendem o critério de união informado na expressão SQL. No INNER JOIN registros sem relacionamento com a outra tabela não são incluídos na tabela resultado, isso quer dizer que instrutores sem curso, ou cursos sem instrutores não irão aparecer no resultado de um INNER JOIN. 4) Suponha uma tabela LIVROS e a tabela USUARIOS, e suponha o relacionamento entre elas onde o campo EMPRESTOU_ID da tabela LIVROS representa o valor do campo ID da tabela USUARIOS, armazenando o ID do usuário que emprestou o livro da biblioteca, ou então o valor NULL no caso do livro estar disponível na biblioteca. Qual a melhor forma de construir um SELECTde união entre estas tabelas, visando trazer os dados de todos os livros e de todos os usuários, independente se os livros estão locados ou não? SELECT * FROM LIVROS RIGHT JOIN JOIN USUARIOS ON LIVROS.EMPRESTOU_ID = USUARIOS.ID (alternativa incorreta) SELECT * FROM LIVROS LEFT JOIN USUARIOS ON LIVROS.EMPRESTOU_ID = USUARIOS.ID (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) SELECT * FROM LIVROS FULL JOIN USUARIOS ON LIVROS.EMPRESTOU_ID = USUARIOS.ID (alternativa correta) SELECT * FROM LIVROS INNER JOIN USUARIOS ON LIVROS.EMPRESTOU_ID = USUARIOS.ID (alternativa incorreta) Resposta correta! Para que os registros de ambas as tabelas constem no resultado, é necessário que um FULL JOIN seja utilizado garantindo que todos os registros, mesmo os sem relacionamento entre as tabelas devido ao campo EMPRESTOU_ID sejam apresentados. 5) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL LEFT JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES LEFT JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; 4 (alternativa incorreta) 2 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) 3 (alternativa incorreta) 5 (alternativa correta) Resposta incorreta! Ao todo 5 linhas serão retornadas na tabela resultado, pois para cada um dos registros da tabela INSTRUTORES (tabela que está no lado esquerdo da expressão SQL) existirá um registro na tabela resultado, independente dos registros terem correspondente na tabela CURSOS. Isso quer dizer que o registro do instrutor Fábio aparece na tabela resposta, mesmo sem cursos correspondentes. A instrução LEFT JOINapresenta TODOS os registros da tabela a esquerda (LEFT) apresentada no comando, incluindo aqueles que tenham mais de um relacionamento com a outra tabela. Observe que o registro do instrutor André aparece duas vezes na tabela resultado, pois dois registros correspondentes existem para seu ID na tabela CURSOS. O registro do curso de PHP não aparece nesta tabela resultado, mas apareceria se a instrução fosse RIGHT JOIN, que neste caso traria todos os registros da tabela a direita, independente de haver relacionamentos com a outra tabela. REFAZENDO: Avaliação Parte superior do formulário 1) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL INNER JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES INNER JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; 5 (alternativa incorreta) 2 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) 3 (alternativa incorreta) 4 (alternativa correta) Resposta correta! Somente 4 linhas serão retornadas na tabela resultado, pois existem apenas 4 registros que atendem o critério de união informado na expressão SQL. No INNER JOIN registros sem relacionamento com a outra tabela não são incluídos na tabela resultado, isso quer dizer que instrutores sem curso,ou cursos sem instrutores não irão aparecer no resultado de um INNER JOIN. 2) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL FULL JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES FULL JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; Nenhuma das alternativas. (alternativa incorreta) 5 (alternativa incorreta) 4 (alternativa incorreta) 3 (alternativa incorreta) 6 (alternativa correta) Resposta correta! Ao todo 6 linhas serão retornadas na tabela resultado, pois para cada um dos registros da tabela CURSOS(tabela que está no lado direito da expressão SQL) existirá um registro na tabela resultado, independente dos registros terem correspondente na tabela INSTRUTORES contabilizando cinco linhas, e mais uma do registro do instrutor Fábio que não possui correspondente na tabela CURSOS. 3) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL RIGHT JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES RIGHT JOIN CURSOS ON INSTRUTORES.ID = CURSOS.INS; Nenhuma das alternativas. (alternativa incorreta) 5 (alternativa correta) 4 (alternativa incorreta) 3 (alternativa incorreta) 2 (alternativa incorreta) Resposta correta! Ao todo 5 linhas serão retornadas na tabela resultado, pois para cada um dos registros da tabela CURSOS(tabela que está no lado direito da expressão SQL) existirá um registro na tabela resultado, independente dos registros terem correspondente na tabela INSTRUTORES. A instrução RIGHT JOIN apresenta TODOS os registros da tabela a direita (RIGHT) apresentada no comando, incluindo aqueles cujo campo de relacionamento com a outra tabela esteja nulo. Observe que o registro do instrutor André aparece duas vezes na tabela resultado, pois dois registros correspondentes existem para seu ID na tabela CURSOS, e que no caso do registro do curso PHP, que apresenta o valor NULL na coluna INS, também aparece na tabela resultado, mas não apareceria se a tabela CURSOS estivesse no lado esquerdo da instrução RIGHT JOIN. 4) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL RIGHT JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES RIGHT JOIN CURSOS 11 ON INSTRUTORES.NOME = CURSOS.TITULO; Nenhuma das alternativas. (alternativa incorreta) 0 (alternativa incorreta) 1 (alternativa incorreta) 5 (alternativa correta) 4 (alternativa incorreta) Resposta correta! O comando executa com sucesso e retorna 5 registros. Como nenhuma combinação entre as tabelas é satisfeita pela condição de união, o atributo RIGHT JOIN retorna os 5 registros da tabela à direita, que no caso é a tabela CURSOS. 5) Com base nas duas tabelas apresentadas abaixo, quantas linhas terá a tabela resultado da expressão SQL EQUI JOINexistente logo após as tabelas? 01 Tabela INSTRUTORES: Tabela CURSOS: 02 ------------------- ------------------ 03 ID | NOME ID | INS | TITULO 04 1 | André 1 | 1 | Java 05 2 | Carlos 2 | NULL | PHP 06 3 | Samuel 3 | 1 | MySQL 07 4 | Fábio 4 | 3 | SQL 08 5 | 2 | C++ 09 10 SELECT * FROM INSTRUTORES INNER JOIN CURSOS USING (ID); 5 (alternativa incorreta) 3 (alternativa incorreta) 4 (alternativa correta) 2 (alternativa incorreta) Nenhuma das alternativas. (alternativa incorreta) Resposta correta! Ao todo 4 linhas serão retornadas na tabela resultado, pois para cada um dos IDs da tabela INSTRUTORESexiste um ID correspondente na tabela CURSOS. Observe que o parâmetro USING que caracteriza um EQUI JOIN indica que ambos os campos ID das tabelas é que serão utilizados para montar o relacionamento, e que no caso o registro de ID da tabela CURSOS não possui correspondente na tabela INSTRUTORES. Parte inferior do formulário Parte inferior do formulário
Compartilhar