Você está na página 1de 18

Comandos SQL Parte Final

Juno Create View

Junes
Expresses

JOIN Natural JOIN OUTER JOIN

Efeito de um aumento de salrio de 10% para os empregados que trabalham no projeto ProdutoX

SELECT numat, salario AS sal_atual, 1.1 * salario AS sal_novo FROM Empregado JOIN TrabalhaEm ON numemp=numat JOIN Projeto ON nproj=numproj WHERE nomeproj = 'ProdutoX' ;

Selecionar nome e endereo dos empregados que trabalham no Departamento de Pesquisa


SELECT nominic, ender FROM Empregado JOIN Departamento ON ndepto = numdep WHERE nomedep = 'pesquisa';

NATURAL JOIN
JOIN no elimina a duplicidade dos atributos de juno Para eliminar a duplicidade de atributos de juno:

NATURAL JOIN

NATURAL JOIN no necessita de condio de juno explcita


os

atributos com o mesmo nome so testados

Selecionar nome e endereo dos empregados que trabalham no Departamento de Pesquisa

Usando NATURAL JOIN renomeando os atributos. Empregado.ndepto = Departamento.ndepto , porque este o nico par com o mesmo nome aps a renomeao:
SELECT nominic, ender FROM Empregado NATURAL JOIN Departamento AS Depto(nomedep, ndepto, nchefe, dtinchef) WHERE nomedep = 'pesquisa';

LEFT OUTER JOIN

Seleciona todas as linhas da tabela esquerda da juno. Seleciona as linhas da tabela direita da juno de acordo com a condio de juno.

Buscar o nome de todos os empregados. Se o empregado possuir dependentes, selecionar o nome e sexo de cada um dos seus dependentes
SELECT FROM

e.nominic, d.depend, d.sexo Empregado AS e LEFT OUTER JOIN Dependente AS d ON e.numat = d.numemp;

Nome de todos os empregados da empresa; se o empregado possuir dependentes do sexo masculino, selecionar o nome de cada um dos seus dependentes

SELECT e.nominic, d.depend FROM Empregado AS e LEFT OUTER JOIN Dependente AS d ON e.numat = d.numemp WHERE d.sexo = 'M' ;

RIGHT OUTER JOIN

Seleciona todas as linhas da tabela direita da juno. Seleciona as linhas da tabela esquerda da juno de acordo com a condio de juno.

FULL OUTER JOIN

Seleciona todas as linhas de ambas as tabelas envolvidas LEFT OUTER JOIN combinada com RIGHT OUTER JOIN

JUNES

INNER JOIN = JOIN


LEFT OUTER JOIN = LEFT JOIN RIGHT OUTER JOIN = RIGHT JOIN FULL OUTER JOIN = FULL JOIN

Nomes dos empregados e nomes de seus supervisores diretos


Emp(empinic, empfim, nsup) nominic,nomefim, nsup (Empreg) Sup(supinic, supfim, nsup) nominic,nomefim, numat (Empreg)

empinic, empfim, supinic, supfim (Emp

Sup)

SELECT einic, efim, sinic, sfim FROM Empregado(nominic, nomefim, nsuper) AS Emp(einic, efim, nsup) NATURAL JOIN Empregado(nominic, nomefim, numat) AS Sup(sinic, sfim, nsup);

Recuperar o nome do empregado e, se o empregado possuir supervisor, recuperar tambm o nome do seu supervisor imediato

SELECT e.nominic as IniEmp, e.nomefim as FimEmp, s.nominic as IniSup, s.nomefim as FimSup FROM Empregado e LEFT OUTER JOIN Empregado s ON e.nsuper = s.numat;

Para cada projeto localizado em Houston selecionar o nmero do projeto, o nmero e o nome do chefe do departamento que controla o projeto SELECT numproj, ndep, nominic FROM Projeto JOIN Departamento ON numdep=ndep JOIN Empregado ON nchefe=numat

WHERE

locproj = 'Houston';

Vises
Create

View

Vises

Viso uma tabela que derivada de outras tabelas. So utilizadas como um mecanismo de segurana e de autorizao. TrabalhaEm(numemp, nproj, horas); Empregado(nominic, nomefim, numat, ...); Projeto(nomeproj, numproj, ...); Create view trabalha_em1 as select nominic, nomefim, nomeproj, horas from empregado, projeto, trabalhaem where numat=numemp and numproj=nproj; Trabalha_em1(nominic, nomefim, nomeproj, horas);

Vises

Create View Info_Depto(Nome_depto,Tot_emp, Total_Sal) AS Select nomedep, Count(*), Sum(Salario) From departamento, empregado Where numdep = ndepto Group By nomedep; Obs.: Uma viso est sempre Atualizada. Automaticamente ela reflete o contedo das tabelas bsicas. Remove a viso do BD:

DROP VIEW trabalha_em1;

Você também pode gostar