Baixe o app para aproveitar ainda mais
Prévia do material em texto
IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 6- Sql Parte 4 Conteúdo Programático desta aula Aprender os comandos de junção Conhecer as diferentes sintaxes de junção LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Configurando Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO Um comando SELECT pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções. Sintaxe da Junção Sintaxe ANSI Sintaxe tradicional (não ANSI) Tipos Junção: Junção Cruzada ou Irrestrita (Produto Cartesiano) Junção Interior Junção Exterior Auto-Junção LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA Uma junção cruzada [cross join] de tabelas, também chamada junção irrestrita de duas tabelas gera um resultado formado por todas as combinações possíveis de uma linha da primeira tabela com uma linha da segunda. Não existe uma condição de junção. Esse resultado é chamado produto cartesiano das duas tabelas. Na sintaxe ANSI, junções cruzadas são indicadas com CROSS JOIN, por exemplo: select * from empregado cross join departamento; Na sintaxe Tradicional: select * from empregado , departamento; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO CRUZADA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR Esse tipo de junção conecta as duas tabelas e retorna apenas as linhas que satisfazem a condição de junção. Na sintaxe ANSI, junções interiores são indicadas com INNER JOIN: select <colunas> from tabela1 INNER JOIN tabela2 ON <condição de junção>; Na sintaxe Tradicional: select <colunas> from tabela1 ,tabela2 Where <condição de junção>; LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR Dados do Empregado e do Departamento onde esta alocado LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL SELECT * FROM EMPREGADO , DEPARTAMENTO WHERE ID_DEPTO = DEPARTAMENTO.ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL Projetando Colunas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE ANSI JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – SINTAXE TRADICIONAL JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO SINTAXE TRADICIONAL REPARE AND LIGANDO FILTRAGEM E JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO QUERO JUNÇÃO PARA EMPREGADOS COM SALARIO < 10000 OU ID < 3 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO INTERIOR – FILTRANDO RESULTADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - ANSI LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL NA SINTAXE TRADICIONAL DO ORACLE NÃO EXISTE FULL JOIN SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR (+) = E.ID (+) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR - TRADICIONAL RESULTADO EQUIVALENTE AO FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR (+) = E.ID UNION OPERADOR DE CONJUNTO SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO FROM CLIENTE C , EMPREGADO E WHERE C.VENDEDOR = E.ID (+) COMANDO EQUIVALENTE À LEFT COMANDO EQUIVALENTE À RIGHT LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS JUNÇÃO EXTERIOR PROJETANDO TODAS AS COLUNAS DE CLIENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO, S.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G RIGHT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID NOTE QUE O EMPREGADO DE ID 1 NÃO TEM GERENTE LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECTS.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G RIGHT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID WHERE G.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE, NÃO PRECISA RESOLVER POR OUTER JOIN LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT ID, ULT_NOME, CARGO FROM EMPREGADO WHERE ID_GERENTE IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO, S.ID, S.ULT_NOME, S.CARGO FROM EMPREGADO G LEFT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID DADOS DOS SUBORDINADOS NULOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G LEFT JOIN EMPREGADO S ON S.ID_GERENTE = G.ID WHERE S.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS AUTO JUNÇÃO SELECT G.ID, G.ULT_NOME, G.CARGO FROM EMPREGADO G , EMPREGADO S WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender os como construir subconsulta Conhecer os operadores de conjunto LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS
Compartilhar