0% acharam este documento útil (0 voto)
37 visualizações72 páginas

Aula 14 - SQL Com o Postgre Join

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
37 visualizações72 páginas

Aula 14 - SQL Com o Postgre Join

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 72

Banco de Dados

Aula 14– SQL com o Postgre DML

Prof. Wellington
Prof. Adriano
HORÁRIO

TERÇA a SEXTA

Entrada 07:50
Café 10:05 à 10:20

Almoço 12:35 à 13:35

Café da tarde 15:50 à 16:05

Saída 16:50
Abastecimento de Garrafa

Antes do início das aulas

E durante o intervalo

Não há tolerância
Saída para Banheiro

É importante que as idas ao banheiro sejam feitas


preferencialmente durante os intervalos. Caso haja
alguma exceção, ela deve ser comunicada previamente.
INTERVALO PARA ALMOÇO
INTERVALO PARA ALMOÇO

Armazenar os notebooks no carrinho.


Uso de dispositivos eletrônicos
Uso de dispositivos eletrônicos
Regras de Convívio

No período de aula, não é permitido


deitar-se ou sentar-se no chão ou nos
PUFFS
Regras de Convívio
Regras de Convívio

É proibida qualquer forma de demonstração afetiva.


Regras de Convívio
Regras de Convívio
É fundamental que todas as atividades sigam
o planejamento pedagógico, não sendo
permitidos jogos ou acesso a outros conteúdos
que não estejam contextualizados com a aula.
AVALIAÇÃO
CRITÉRIOS DE AVALIAÇÃO

CRITÉRIOS CRÍTICOS CRITÉRIOS DESEJÁVEIS


CRITÉRIOS DE AVALIAÇÃO

CRITÉRIOS CRÍTICOS CRITÉRIOS DESEJÁVEIS


Objetivo da Aula

SQL com o Postgre DML


 O que é
 Inner Join?
 Left Join?
 Right join?
 Como implementar?
 Formativa
 Somativa
O que aprendemos na aula anterior?
Conhecendo o
postgre MDL
Funções de grupo
Existem diversas funções de grupo que são implementadas pelo padrão
SQL. Essas funções auxiliam a computar uma variedade de medidas
baseadas em valores das colunas do banco de dados. As principais
funções de grupo são:

Função Retorno
COUNT Retorna o número de linhas afetadas pelo comando.
SUM Retorna o somatório do valor das colunas especificadas.
AVG Retorna a média aritmética dos valores das colunas.
MIN Retorna o menor valor da coluna de um grupo de linhas.
MAX Retorna o maior valor da coluna de um grupo de linhas.
Funções de grupo COUNT

Diferentemente das outras funções de grupo, o COUNT retorna o


número de linhas que atende a uma determinada condição.
Podemos utilizá-lo com um asterisco entre parênteses, para indicar
que queremos saber a quantidade total de linhas,
independentemente de haver linhas com colunas nulas ou não.
Funções de grupo COUNT
Nesse exemplo aparece o total de registros na tabela vendas.
SELECT COUNT(*) FROM vendas;
Funções de grupo COUNT
Nesse exemplo está sendo consultado o total de vendas
para X360.
Funções de grupo SUM
Retorna o valor total de uma determinada coluna em um
determinado grupo de linhas. Assim, se quisermos saber
o total dos salários dos funcionários, utilizamos o
comando:
SELECT SUM(Coluna) FROM Tabela;
Funções de grupo SUM
No exemplo estamos retornando a soma das vendas da
coluna outras vendas:
Funções de grupo AVG
Extrai a média aritmética de um determinado grupo de
linhas. Para saber o salário médio dos funcionários
execute o seguinte comando:

SELECT AVG(Coluna) FROM Tabela;


Funções de grupo AVG
No exemplo estamos retornando a média das vendas da
coluna JP_vendas:
Funções de grupo MIN
Retorna o menor valor de uma coluna em um grupo de
linhas. Podemos utilizá-la para colunas do tipo data ou
alfanuméricas. Para saber o menor salário pago a um
funcionário, execute o seguinte comando:

SELECT MIN(Coluna) FROM Tabela;


Funções de grupo MIN
No exemplo estamos retornando o menor valor da coluna
vendas_globais:
Funções de grupo MAX
Retorna o maior valor de uma coluna em um grupo de linhas.
Igualmente ao MIN, pode-se utilizá-la para colunas do tipo data
ou alfanuméricas. Para saber qual é maior salário pago a um
funcionário, execute o seguinte comando:

SELECT MAX(Coluna) FROM Tabela;


Group By
Geralmente utilizada com as funções de
agrupamento (de agregação), como também com
HAVING. Agrupa o resultado dos dados por um ou mais
campos de uma tabela.

Utilizado para agrupar registros (linhas) da tabela


que compartilham os mesmos valores em todas as
colunas (campos) da lista.
Group By
Funções que podemos usar com o group by:

SUM (somar)
COUNT (contar)
AVG (média)
Group By
Sintaxe:
Group By

Deseja-se obter o número de produtos em estoque,


agrupados pelo tipo.

COMO?
Group By

SELECT Tipo, SUM(Quantidade) AS “Quantidade em Estoque”


FROM Produtos
GROUP BY Tipo

RESULTADO
Group By
Exemplo: obter a maior temperatura mínima observada em cada cidade :
Group By com Having
Having – outros exemplos
SELECT Tipo, SUM(Quantidade) AS
“Quantidade em Estoque”
FROM Produtos
GROUP BY Tipo
HAVING SUM(Quantidade) > 200

RESULTADO
LIMIT e OFFSET
SELECT cod_cli, nome FROM clientes
ORDER BY nome
OFFSET 2
LIMIT 20;

 ORDER BY ordena os resultados pela coluna nome.


 OFFSET diz qual será o início da consulta.
 LIMIT determina qual é o valor final da consulta.
LIMIT e OFFSET
Exemplo:
Aula recaptulada.

O que veremos hoje?


Aula de hoje : SQL –
Join (Junção
Modelagem de dados :
de tabelas)
Modelo lógico
JOIN – Junção de Tabelas
Dados de Várias Tabelas (JOINS)

Uma cláusula JOIN é usada para combinar linhas de duas


ou mais tabelas, com base em uma coluna relacionada
entre elas (chaves primárias e estrangeiras)
Dados de Várias Tabelas (JOINS)
Qualificadores de Nome

O qualificador de nome consiste no nome da tabela


seguido de um ponto e o nome da coluna na tabela,
por exemplo:
O qualificador de nome para a coluna DESCRIÇÃO da
tabela PRODUTO será PRODUTO.descricao.
Qualificadores de Nome
Recuperando Dados de Várias Tabelas
(JOINS)
Sintaxe:
SELECT
<nome_tabela1.nome_campo1>,<nome_tabela2.nome_campo2>
FROM <nome_tabela1>
Tipo Join <nome_tabela2>
ON <tabela1.Chave_Primaria> = <Tabela2.Chave_Estrangeira>
Where <Condição>;
INNER JOIN
Este é simples, o mais entendível e o mais comum. Esta consulta retornará
todos os registros da tabela esquerda (tabela A) que têm correspondência
com a tabela direita (tabela B).
INNER JOIN
8

COD NOME ESPECIALIDADE COD NOME COD_FUNC


001 JOSÉ ENGENHEIRO 001 PEDRO 001
002 JOÃO MESTRE DE OBRAS 002 ALICE 001
003 MARIA CONTABILISTA 003 LUANA 003

SELECT FUNC.NOME NOME_FUNC, DEP.NOME


NOME_DEP
FROM funcionario FUNC
INNER JOIN dependente DEP
ON FUNC.COD = DEP.COD_FUNC;

NOME_FUNC NOME_DEP
JOSÉ PEDRO
JOSÉ ALICE
MARIA LUANA
JOINS Exemplo
Problema: O funcionário Fabio possui dependente?
Nesse caso é utilizado:

INNER JOIN
JOINS Exemplo
SELECT funcionario.funnome, dependente.nome
FROM funcionario
INNER JOIN dependente
ON funcionario.funcodigo = dependente.funcodigo
WHERE funcionario.funcodigo = 1;

Resultado
Junção de produto cartesiano
6

COD NOME ESPECIALIDADE COD NOME COD_FUNC


001 JOSÉ ENGENHEIRO 001 PEDRO 001
002 JOÃO MESTRE DE OBRAS 002 ALICE 001
003 MARIA CONTABILISTA 003 LUANA 003

SELECT FUNC.NOME NOME_FUNC, DEP.NOME


NOME_DEP
FROM funcionario FUNC, dependente DEP
WHERE FUNC.cod = DEP.cod_func;

NOME_FUNC NOME_DEP
JOSÉ PEDRO
JOSÉ ALICE
MARIA LUANA
CROSS JOIN / FULL JOIN

Este JOIN também é conhecido como FULL JOIN. Esta consulta retornará
todos os registros das duas tabelas e juntando também os registros
correspondentes entres as duas tabelas.
CROSS JOIN / FULL JOIN

SELECT Resultado
employee_name,
department_name
FROM
employees as e
FULL OUTER JOIN departments as d
ON d.department_id = e.department_id;
LEFT JOIN
Esta consulta retorna todos os registros da tabela esquerda
(tabela A) e as correspondências que existirem com a tabela
direita (tabela B).
LEFT JOIN
10
COD NOME ESPECIALIDADE COD NOME COD_FUNC
001 JOSÉ ENGENHEIRO
001 PEDRO 001
002 JOÃO MESTRE DE OBRAS 002 ALICE 001
003 MARIA CONTABILISTA 003 LUANA 003

SELECT FUNC.NOME NOME_FUNC, DEP.NOME


NOME_DEP
FROM funcionario FUNC
LEFT OUTER JOIN dependente DEP
ON FUNC.COD = DEP.COD_FUNC;
NOME_FU NOME_D
JOS NC PEDR EP
É
JOS O
ALI
É
MARI CE
LUAN
A
JOÃO A
nul
l
LEFT JOIN

Resultado
LEFT EXCLUDING JOIN

Esta consulta retornará apenas os registros da tabela


esquerda que não têm correspondência com a tabela
direita.
LEFT EXCLUDING JOIN

Resultado
RIGHT JOIN

Esta consulta retornará todos os registros da tabela


direita (tabela B) e as correspondências que existirem
com a tabela esquerda (tabela A).
RIGHT JOIN
11
COD NOME ESPECIALIDADE COD NOME COD_FUNC
001 JOSÉ ENGENHEIRO 001 PEDRO 001
002 JOÃO MESTRE DE OBRAS 002 ALICE 001
003 MARIA CONTABILISTA 003 LUANA 003
004 PAULO null

SELECT FUNC.NOME NOME_FUNC, DEP.NOME


NOME_DEP
FROM funcionario FUNC
RIGHT OUTER JOIN dependente DEP
ON FUNC.COD = DEP.COD_FUNC;
NOME_FU NOME_D
JOS NC PEDR EP
É
JOS O
ALI
É
MARI CE
LUAN
A
nul A
PAUL
RIGHT JOIN

Resultado
RIGHT EXCLUDING JOIN

Esta consulta retornará todos os registros da tabela


direita que não têm correspondência com a tabela
esquerda.
RIGHT EXCLUDING JOIN

Resultado
Exercícios
Implemente a base de dados e faça 10
inserts em cada tabela
EmpresaBDexpress
Exercícios
1)Apresente os funcionários que possuem mais do que 2 dependentes
(mostrar o nome do funcionário e a quantidade de dependentes).

2) Mostre os departamentos e os respectivos funcionários em ordem


alfabética.

3) Listar os funcionários que possuem dependente e os que não


possuem dependentes.

4)Mostre a média salarial dos departamentos.


Preparação Prévia
Exercício 03

Pesquise e faça um breve resumo sobre o


conceito de “VIEW” no SQL.
Entregar em PDF no classroom
DEPARTAMENTO REGIONAL
DE SÃO PAULO

www.sp.senai.br

Você também pode gostar