Escolar Documentos
Profissional Documentos
Cultura Documentos
Ainda temos um bônus com vários comandos que considero úteis para o
nosso dia a dia e que ainda não apresentei nos outros vídeos
Realizar consultas onde todos os elementos de uma tabelas
aparecem, mesmo que haja junção com outras tabelas (ex:
fazer um relatório de vendas de empregados, trazendo TODOS
os nomes e vendas, até os nomes daqueles que não venderam
nada no período)
Agora que você já entendeu como faz (se ainda não, volta lá na parte 3, link
da descrição), vou dizer a verdade pra você....
Entenderam???????
“Sim, Leon, tudinho....”
clientes
id nome
1 Leoncio
2 Mariazinha
3 Joaozinho
compras 4 Jack
5 Joe
id_cliente id_produto quantidade
6 Joanna
1 1 5
7 Juan
1 3 10
1 5 973519459 produtos
2 1 15
id nome
3 1 2
1 Pringles
3 4 3
2 Alface
3 Coca cola
4 Ruffles
5 Bolinhas do capeta
da Lindt
SELECT produtos.nome, compras.quantidade
FROM compras JOIN produtos ON compras.id_produto = produtos.id
JOIN clientes ON compras.id_cliente = clientes.id
WHERE clientes.nome = “Leoncio” compras
nome quantidade
Pringles 5
Coca Cola 10
Bolinhas do capeta 973519459
da Lindt
O INNER JOIN vai trazer as intersecções das tabelas com base nos critérios
de junção
SELECT *
FROM compras
JOIN produtos ON compras.id_produto = produtos.id
02 – você precisa de todas as linhas ou precisa de um filtro?
SELECT *
FROM compras
JOIN produtos ON compras.id_produto = produtos.id
03 – você precisa de todas as colunas ou somente de algumas?
nome SUM(quantidade)
Pringles 22
Coca Cola 10
Ruffles 3
Bolinhas do capeta 973519459
da Lindt
Esse resultado tá certo???
nome SUM(quantidade)
Pringles 22
Coca Cola 10
Ruffles 3
Bolinhas do capeta 973519459
da Lindt
Esse resultado tá certo??? Vamos lembrar da tabelas de produtos
produtos resultado
id nome nome SUM(quantidade)
1 Pringles Pringles 22
2 Alface Coca Cola 10
3 Coca cola Ruffles 3
4 Ruffles Bolinhas do capeta 973519459
5 Bolinhas do capeta da Lindt
da Lindt
Porque o INNER JOIN, padawan, somente traz a intersecção entre as
tabelas juntadas! E o que isso quer dizer?? Vamos rever as tabelas de
compras e produtos
produtos compras
id nome id_cliente id_produto quantidade
1 Pringles 1 1 5
2 Alface ???? 1 3 10
3 Coca cola 1 5 973519459
4 Ruffles 2 1 15
5 Bolinhas do capeta 3 1 2
da Lindt
3 4 3
Como fazer para aparecer
o “delicioso” alface???
Outra forma de realizar junções entre tabelas é a junção à esquerda!
nome SUM(quantidade)
Pringles 22
Alface 0
Coca Cola 10
Ruffles 3
Bolinhas do capeta 973519459
da Lindt
Vamos tirar o agrupamento para ver linha a linha das compras?
Relembrando como é a tabela de compras
compras
id_cliente id_produto quantidade
1 1 5
1 3 10
1 5 973519459
2 1 15
3 1 2
3 4 3
Vamos tirar o agrupamento para ver linha a linha das compras? Primeiro
com o INNER JOIN
Alface NULL
Coca Cola 10
Ruffles 3
Bolinhas do capeta 973519459
da Lindt
Legal? Entenderam a diferença?
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_wildcard_charlist
Já que mostramos a junção “normal” e a junção à esquerda, vamos
mostrar pra vocês outros os tipos de junção
Mas somente para saberem que existe com uma explicação rápido,
vamos lá...
É possível utilizar uma consulta como se fosse uma tabela! Dá
pra usar no FROM, chamar por um nome e tudo!
Ex:
SELECT *
FROM (SELECT * FROM cliente WHERE uf = ‘GO’) as clientes_goianos;
Vamos ver um exemplo prático no w3schools, corre lá!
É possível utilizar uma consulta como se fosse uma tabela
temporária com o comando WITH.
Ex:
WITH
clientes_goianos AS (SELECT * FROM cliente WHERE uf = ‘GO’)
SELECT * FROM clientes_goianos;
Bora treinar o WITH no w3schools!!
UNION e UNION ALL: juntam linhas de tabelas diferentes! Mas as
colunas e tipos tem que ser os mesmos!! Ex: unir os CPFs e
nomes dos professores e alunos de uma escola
-- molezinha, né?
Vamos uma última vez para o w3schools:
Realizar consultas com diferentes tipos de junção!
SQL ANSI/ISO
• Lista de documentos:
https://docs.oracle.com/database/121/SQLRF/ap_standard_sql001.htm#SQLRF55514
• ANSI: https://www.ansi.org/resource-center (Família ANSI/ISO/IEC 9075)