You are on page 1of 6

Universidade de Mogi das Cruzes

Disciplina: Programao de Banco de Dados Junes Em um banco de dados podemos ter duas ou mais tabelas relacionadas. comum ao elaborarmos uma consulta e termos a necessidade de trazer dados de diferentes tabelas. Para criarmos esta seleo devemos definir os critrios de agrupamento para trazer estes dados. Estes critrios so chamados de Junes. Uma juno de tabelas para criar uma pseudo-tabela derivada de duas ou mais tabelas de acordo com as regras especificadas, e que so parecidas com as regras da teoria dos conjuntos. Os relacionamentos tornam-se explcitos quando os dados so manipulados: ao consultar o banco de dados e no durante sua criao. Voc pode unir dados a partir de quaisquer colunas nas tabelas, desde que os tipos dos dados sejam iguais e a operao faa sentido. Esses dados no precisam ser chaves, apesar de normalmente o serem. Boas junes A coluna de juno normalmente a coluna de chave: primria ou estrangeira As colunas de juno devem ter tipos de dados compatveis Supondo que desejamos mostrar em nossa consulta o nome e o rgm do Aluno e o nome da turma que ele esta alocado.

Select alu.rgm, alu.nome, tur.turma from ALUNOS as Alu, TURMA as Tur where alu.cod_turma = Tur.cdigo;

Turma

JUNO

RGM Nome Telefone cod_turma 27898 Antonio Jose 80900909 01 899090 Luiza Rossi 09-08989 02 6767879 Renato Faria 767567 03 Codigo turma Descrio 01 SisInfo Sistema de Informao 02 TDS Tecnlogo Processamento de Dados 03 CIECO Cincia da computao

Agora vamos fazer uma juno entre 3 tabelas: Desejamos mostrar o nome e salario do funcionrio, a cidade onde ele mora e o departamento que trabalha.

Select func.nome, func.salario, cid.nome, depto.nome from Funcionrio as func, Cidade as cid, Departamento as depto where func.cod_cidade = cid.codigo AND func.cod_depto = depto.codigo;

Funcionarios Cdigo Nome 01909 Carlos Allan 9909 Manuel 5787 Renato

telefone 8788099 67989090 6789899

Salrio 10.000,00 800,00 4000,00

Cod_cidade 01 09 06

Cod_depto 04 08 98 Estado SP SP SP

JUNO

Cidade Cdigo 01 06 09

Nome Mogi das Cruzes Taubat So Jos dos Campos

Departamento Cdigo Nome 04 Compras 08 Informtica 98 Vendas

Como funciona??? O comando de junes entre tabelas faz um produto cartesiano entre as tabelas consultadas e retorna apenas aquelas que satisfaam a condio de juno (igualdade entre campos das tabelas)
Alunos RGM Nome Telefone cod_turma 27898 Antonio Jose 80900909 01 899090 Luiza Rossi 09-08989 02 6767879 Renato Faria 767567 03 Codigo turma Descrio 01 SisInfo Sistema de Informao 02 TDS Tecnlogo Processamento de Dados 03 CIECO Cincia da computao Nome Antonio Jose Antonio Jose Antonio Jose Luiza Rossi Luiza Rossi Luiza Rossi Renato Faria Renato Faria Renato Faria Telefone 80900909 80900909 80900909 09-08989 09-08989 09-08989 767567 767567 767567 Cod_turma 01 01 01 02 02 02 03 03 03 Cdigo 01 02 03 01 02 03 01 02 03 Turma SisInfo TDS CIECO 01 TDS CIECO 01 TDS CIECO Descrio Sistema de Informao Tecnlogo Processamento de Dados Cincia da computao SisInfo Tecnlogo Processamento de Dados Cincia da computao SisInfo Tecnlogo Processamento de Dados Cincia da computao

Turma

Rgm 27898 27898 27898 899090 899090 899090 676787 9 676787 9 676787 9

Rodar esses comandos no BD create table Cargo( codigo numeric(5) Constraint pk_cargo_cod Primary Key, nome varchar(100) not null, salario_base numeric(10,2) not null ); create table Cidade( codigo numeric(5) Constraint pk_cidade_cod Primary Key, nome varchar(100) not null ); create table Departamento( codigo numeric(5) Constraint pk_depto_cod Primary Key, nome varchar(100) not null ); create table funcionario( codigo numeric(5) Constraint pk_func_cod Primary Key, nome varchar(100) not null, telefone varchar(50) null, salario numeric(10,2) not null, cod_cargo numeric(5) not null, cod_cidade numeric(5) not null, cod_depto numeric(5) not null, gerente numeric(5), Constraint fk_func_cargo Foreign Key(cod_cargo) References Cargo(codigo), Constraint fk_func_cidade Foreign Key(cod_cidade) References Cidade(codigo), Constraint fk_func_depto Foreign Key(cod_depto) References Departamento(codigo), Constraint fk_func_gerente Foreign Key(gerente) References Funcionario(codigo) );

INSERT INTO cargo (codigo, nome, salario_base) VALUES (1, 'estagiario', 800.00); INSERT INTO cargo (codigo, nome, salario_base) VALUES (2, 'gerente', 2000.00); INSERT INTO cargo (codigo, nome, salario_base) VALUES (3, 'supervisor', 1800.00); INSERT INTO cargo (codigo, nome, salario_base) VALUES (4, 'encarregado', 1500.00); INSERT INTO cargo (codigo, nome, salario_base) VALUES (5, 'auxiliar geral', 1000.00); INSERT INTO cidade (codigo, nome) VALUES (1, 'mogi das cruzes'); INSERT INTO cidade (codigo, nome) VALUES (2, 'Sao Paulo'); INSERT INTO cidade (codigo, nome) VALUES (3, 'Campinas'); INSERT INTO cidade (codigo, nome) VALUES (4, 'Sao Jose dos Campos'); INSERT INTO departamento (codigo, nome) VALUES (1, 'vendas'); INSERT INTO departamento (codigo, nome) VALUES (2, 'compras'); INSERT INTO departamento (codigo, nome) VALUES (3, 'PCP');

INSERT INTO departamento (codigo, nome) VALUES (4, 'producao'); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (1, 'Antonio Leite', '989 0999', 10000.00, 2, 3, 2, NULL); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (2, 'Lucas Silva', '8778 7878', 7000.00, 2, 1, 1, 1); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (3, 'Bruna Santos', '899 9987', 2000.98, 3, 3, 4, 2); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (4, 'Camila Rocha', '987 554545', 4000.98, 4, 2, 1, 1); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (5, 'Dayna Santos', '7655 6654', 600.00, 1, 4, 3, 1); INSERT INTO funcionario (codigo, nome, telefone, salario, cod_cargo, cod_cidade, cod_depto, gerente) VALUES (6, 'Emerson Santos', '899 99989', 6000.98, 2, 3, 4, 2); RESPONDER (compare suas respostas) --Mostrar o nome o e cargo de todos os funcionarios --Resposta---> Dayana -- estagiario --Lucas -- gerente --Emerson gerente --Antonio gerente --Bruna supervisor --Camila encarregado Select func.nome, cag.nome from funcionario as func, cargo as cag where func.cod_cargo = cag.codigo;

--Mostrar o nome e o salario dos funcionarios que trabalhem no deparatamento de compras(Fazer com sub-querys e com juncao) --Resposta---> antonio -- 10000.00 Select func.nome, func.salario from funcionario as func, departamento as dep where func.cod_depto = dep.codigo and dep.nome = 'compras';

--Mostrar o nome, a cidade onde mora, e o departamento onde trabalha dos funcionarios que sao estagiarios --Resposta---> Dayana -- Sao Jose -- PCP Select func.nome, cid.nome, dep.nome from funcionario as func, cidade as cid, departamento as dep, cargo as cag where func.cod_cidade=cid.codigo and dep.codigo=func.cod_depto and func.cod_cargo=cag.codigo and cag.nome='estagiario';

--Quem o gerente da Camila? --Resposta---> antonio leite

--Onde o gerente do Bruno mora? --Resposta---> Lucas --Mogi

--Qual o nome, salario e o cargo dos funcionarios que moram em Mogi? --Resposta---> Lucas --7000 gerente