Buscar

RespLista 7 1_7 2

Prévia do material em texto

Programação de Banco de Dados com SQL 7-1: Equijunção Oracle e Produto Cartesiano Atividades Práticas
Objetivos
· Listar as junções proprietárias Oracle e as junções SQL ANSI/ISO: 1999 correspondentes
· Descrever a finalidade das condições de junção
· Criar e executar uma instrução SELECT que resulta em um produto cartesiano
· Criar e executar instruções SELECT para acessar dados de mais de uma tabela usando uma equijunção
· Criar e executar instruções SELECT que adicionam condições de pesquisa usando o operador AND
· Aplicar a regra para uso de aliases de colunas em uma instrução de junção
Vocabulário
Identifique a palavra do vocabulário correspondente a cada definição a seguir.
	Produto cartesiano
	Resulta de uma condição de junção inválida ou omitida; todas as combinações de linhas são exibidas
	Equijunção
	Os valores de uma coluna de uma tabela são iguais a um valor de outra tabela; também denominada junção interna ou junção simples
	Junção Proprietária
	Comando de conexão exclusivo de uma empresa específica
	Alias
	Designa uma tabela com outro nome para simplificar as consultas e melhorar o desempenho
	Junções
	Exibem dados de duas ou mais tabelas relacionadas
Tente/solucione
1. Crie um produto cartesiano que exiba as colunas das d_play_list_items e d_track_listings do banco de dados da DJs on Demand.
R: 
SELECT * FROM d_play_list_items, d_track_listings;
2. Corrija o produto cartesiano produzido na pergunta 1 criando uma equijunção com uma coluna em comum.
R:
	SELECT event_id, p.song_id, comments, cd_number, track FROM d_play_list_items p, d_track_listings t
WHERE p.song_id = t.song_id;
3. Crie uma consulta para exibir o título, o tipo, a descrição e o artista do banco de dados da
DJs on Demand.
R:
SELECT s.title, s.type_code, t.description, s.artist
FROM d_songs s, d_types t
WHERE s.type_code = t.code;
4. Modifique a consulta da pergunta 3 para selecionar somente os títulos com ID 47 ou 48.
R:
	SELECT id, s.title, s.type_code, t.description, s.artist
	FROM d_songs s, d_types t
	WHERE s.type_code = t.code
AND id in (47,48);
5. Crie uma consulta que extraia informações de três tabelas do banco de dados da DJs on Demand: as tabelas d_clients, d_events e d_job_assignments.
R:
SELECT * FROM d_clients, d_events, d_job_assignments;
Ou
SELECT c.client_number, c.first_name, c.last_name, c.phone, c.email, e.id, e.name, e.event_date, e.description, e.cost, e.venue_id, e.package_code, e.theme_code, j.partner_id, j.job_date, j.status
FROM d_clients c, d_events e, d_job_assignments j
WHERE c.client_number = e.client_number
AND e.id = j.event_id;
6. Crie e execute uma equijunção entre as tabelas d_track_listings e d_cds da DJs on Demand. O resultado deverá retornar somente o song_id e o título.
R:
	SELECT SONG_ID, TITLE
	FROM D_TRACK_LISTINGS T, D_CDS C
WHERE T.CD_NUMBER = C.CD_NUMBER;
Marque com V as afirmativas verdadeiras e com F as falsas.
 V	 a. Uma junção é um tipo de consulta que extrai dados de mais de uma tabela com base em colunas de mesmo nome.
 F	 b. Para unir tabelas usando uma equijunção, deverá existir uma coluna em comum nas duas tabelas, e essa coluna geralmente será uma chave primária em uma das tabelas.
 V	 c. Um produto cartesiano ocorre porque a consulta não especifica uma cláusula WHERE.
 F	 d. Os aliases de tabela são necessários para criar uma condição de junção.
 V	 e. Se um alias for usado para um nome de tabela na cláusula FROM, o nome da tabela deverá ser substituído por ele em toda a instrução SELECT.
 F	 f. Um alias de tabela deve ter somente um caractere.
 V	 g. Uma junção simples ou junção interna é o mesmo que uma equijunção. Qual a vantagem de poder combinar dados de várias tabelas para uma empresa?
R: Permite a elaboração de relatórios complexos e informativos com dados registrados em tabelas diferentes.
Programação de Banco de Dados com SQL
7-2 : Não Equijunções e Junções Externas Oracle Atividades Práticas
Objetivos
· Criar e executar uma instrução SELECT para acessar dados de mais de uma tabela usando uma não equijunção
· Criar e executar uma instrução SELECT para acessar dados de mais de uma tabela usando uma junção externa Oracle
Tente/solucione
1. Crie uma junção com base no custo do evento entre as tabelas D_EVENTS e D_PACKAGES da DJs on Demand. Exiba o nome e o código de cada evento.
R:
	SELECT NAME, CODE
	FROM D_EVENTS, D_PACKAGES
WHERE COST BETWEEN 8000 AND 10000;
2. Usando o banco de dados Oracle, crie uma consulta que retorne o sobrenome, o salário e o nível do cargo dos funcionários com base no salário. Selecione o salário entre a faixa salarial mínima e máxima.
R:
	SELECT last_name, salary, grade_level, lowest_sal, highest_sal
	FROM employees, job_grades
WHERE (salary BETWEEN lowest_sal AND highest_sal);
3. Qual condição requer a criação de uma não equijunção?
R: Quando deseja-se realizar uma busca por uma faixa de valores. Quando não há uma correspondência exata.
4. Reescreva a instrução de não equijunção a seguir usando os operadores lógicos de condição (AND, OR, NOT): WHERE a.ranking BETWEEN g.lowest_rank AND g.highest_rank
R:
WHERE a.ranking >= g.lowest_rank
AND a.ranking <= g.highest_rank;
5. Como você sabe quando um alias de tabela deve ou não ser usado?
R: Em uma consulta SQL simples não faz muito sentido utilizar alias, porém quando estamos selecionando valores de várias tabelas ao mesmo tempo e essas tabelas não foram criadas apropriadamente, normalmente utilizando alias para distinguir os nomes dos campos.
6. Qual tipo de junção você usaria para encontrar dados entre uma faixa de números?
R: Usaria uma não-Equijunção.
7. Você precisa produzir para a Global Fast Foods um relatório que mostre os clientes e os pedidos. Um cliente deverá ser incluído no relatório mesmo se não houver pedidos para ele.
R:
	SELECT * FROM F_CUSTOMERS C, F_ORDERS O
WHERE C.ID = O.CUST_ID(+);
8. Crie uma consulta do banco de dados Oracle que exiba os sobrenomes, os IDs de departamento e os nomes de departamento dos funcionários. Inclua todos os funcionários mesmo que eles não estejam designados a um departamento.
R:
SELECT D.DEPARTMENT_ID, DEPARTMENT_NAME, FIRST_NAME, EMPLOYEE_ID, LAST_NAME, EMAIL, PHONE_NUMBER
FROM DEPARTMENTS D, EMPLOYEES E
WHERE D.DEPARTMENT_ID(+) = E.DEPARTMENT_ID;
9. Modifique a consulta do problema 8 para retornar todos os IDs de departamento mesmo que não haja funcionários designados a eles.
R:
SELECT D.DEPARTMENT_ID, DEPARTMENT_NAME, FIRST_NAME, EMPLOYEE_ID, LAST_NAME, EMAIL, PHONE_NUMBER
FROM DEPARTMENTS D, EMPLOYEES E
WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID(+);
10. Há um ou mais erros em cada uma das instruções a seguir. Descreva os erros e corrija-os.
a. WHERE e.department_id(+) = d.department_id (+);
Não é possível adicionar o sinal de mais (+) em ambas as colunas na condição de junção para ter o equivalente ao FULL OUTER JOIN.
WHERE e.department_id(+) = d.department_id;
ou
WHERE e.department_id = d.department_id (+);
b. SELECT e.employee_id, e. last name, d.location_id FROM employees, departments
WHERE e.department_id = d.department_id(+);
Não foi informado o alias adequadamente.
SELECT e.employee_id, e. last name, d.location_id FROM employees e, departments d
WHERE e.department_id = d.department_id(+);
11. Crie uma consulta que mostrará todos os títulos de CDs e IDs de músicas do banco de dados da DJs on Demand, mesmo que não haja um número de CD na tabela de listas de faixas.
R:
	SELECT C.TITLE, T.SONG_ID
	FROM D_CDS C, D_TRACK_LISTINGS T
WHERE C.CD_NUMBER = T.CD_NUMBER(+);
12. Quantas vezes alguém perguntou a você: “O que você quer ser quando crescer?” Para a maioria de nós, a primeira resposta que nos vem à cabeça é algo como gerente de empresa, engenheiro, professor, designer de jogos, médico, cientista, programador ou contador – ou seja, opções de carreiras tradicionais. Você já pensou em trabalhar em algo fora do comum ou em ter uma carreira não tradicional? Algumas pessoas são personal shoppers de executivos, diretores de zoológicos, chefs, químicos que elaboraminseticidas, designers de campos de golfe e administradores de campos esportivos. Imagine que você tenha o trabalho dos seus sonhos ou uma carreira não tradicional em que faça algo de interessante, prazeroso e lucrativo.
Use os recursos da Internet para explorar sua ideia. Escreva uma breve descrição do trabalho a fim de compartilhá-la com a turma.

Continue navegando