Base de Dados 1
Agenda
Produto Cartesiano
JOINs
ALIAS de Tabelas
UNION
INTERSECT
MINUS
Produto Cartesiano
O produto cartesiano é a associação N:N entre duas
tabelas;
Para juntar duas tabelas bastará fazer:
SELECT *
FROM pessoa, localidade

O resultado será o produto cartesiano dos dois conjuntos.
O produto cartesiano entre as tabelas pessoa e localidade
associa a cada linha da tabela pessoa o conjunto das
linhas da tabela localidade.
JOIN
O Conceito de JOIN (ligação) entre tabelas permite
extrair, num único SELECT, informação contida em
diferentes tabelas.
JOIN utilizando WHERE
INNERJOIN
LEFTJOIN
RIGHTJOIN
INNER JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
or:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
RIGHT JOIN
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
ou
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
LEFT JOIN
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
or:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
FULL JOIN
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
Juntado Tabelas Com
Clausula WHERE
A forma mais utilizada para se juntar tabelas é utilizando
apenas a clausula WHERE.
No entanto é preciso ter cuidado, colocando todas as
condições necessárias para obter o resultado correcto.

SELECT *
FROM pessoa, localidade
WHERE códigoLocal = código
ALIAS de tabelas
Se os campos de seleção ou junção de duas tabelas
tiverem o mesmo nome, então para eliminar
quaisquer ambiguidades, cada um dos campos deve
ser precedido do nome da tabela, seguido de um
ponto.
O nome de uma tabela pode ser reduzido ou
alterado num SELECT, através da utilização de um
ALIAS que deve ser colocado à frente da tabela e que
passará a ser uma outra forma de identificar a tabela.
Misturando SELECT
Existe a possibilidade de “Misturar” vários selects e
no final ter apenas um.
Para isso utiliza-se os seguintes operadores da teoria
de conjuntos
UNION
INTERSECT
MINUS
UNION
Permite fazer a reunião entre SELECTs.
O número de campos a selecionar em cada um dos
comandos SELECT tem de ser igual.
Nota: Numa UNION, o nome das colunas
apresentado no resultado é o nome das colunas
selecionadas na primeira instrução SELECT.
Cada SELECT pode conter a sua própria cláusula
WHERE. No entanto, só poderá existir uma única
cláusula ORDER BY no último SELECT, sendo a
ordenação aplicada a todo o resultado.
INTERSECT
Permite fazer a Intersecção entre SELECTs
O Operador INTERSECT permite juntar o conteúdo
de dois comandos SELECT, apresentando apenas as
linhas que resultam de ambos os comandos.

Nota: O operador INTERSECT só é suportado pelo
ORACLE.
MINUS
Permite Subtrair dois SELECTs
Devolve os registos que resultam do primeiro
SELECT e que não aparecem no segundo

Nota: O operador MINUS só é suportado pelo
ORACLE.

Aula 8 select & joi ns

  • 1.
  • 2.
    Agenda Produto Cartesiano JOINs ALIAS deTabelas UNION INTERSECT MINUS
  • 3.
    Produto Cartesiano O produtocartesiano é a associação N:N entre duas tabelas; Para juntar duas tabelas bastará fazer: SELECT * FROM pessoa, localidade O resultado será o produto cartesiano dos dois conjuntos. O produto cartesiano entre as tabelas pessoa e localidade associa a cada linha da tabela pessoa o conjunto das linhas da tabela localidade.
  • 4.
    JOIN O Conceito deJOIN (ligação) entre tabelas permite extrair, num único SELECT, informação contida em diferentes tabelas. JOIN utilizando WHERE INNERJOIN LEFTJOIN RIGHTJOIN
  • 5.
    INNER JOIN SELECT column_name(s) FROMtable1 INNER JOIN table2 ON table1.column_name=table2.column_name; or: SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;
  • 6.
    RIGHT JOIN SELECT column_name(s) FROMtable1 RIGHT JOIN table2 ON table1.column_name=table2.column_name; ou SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;
  • 7.
    LEFT JOIN SELECT column_name(s) FROMtable1 LEFT JOIN table2 ON table1.column_name=table2.column_name; or: SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;
  • 8.
    FULL JOIN SELECT column_name(s) FROMtable1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;
  • 9.
    Juntado Tabelas Com ClausulaWHERE A forma mais utilizada para se juntar tabelas é utilizando apenas a clausula WHERE. No entanto é preciso ter cuidado, colocando todas as condições necessárias para obter o resultado correcto. SELECT * FROM pessoa, localidade WHERE códigoLocal = código
  • 10.
    ALIAS de tabelas Seos campos de seleção ou junção de duas tabelas tiverem o mesmo nome, então para eliminar quaisquer ambiguidades, cada um dos campos deve ser precedido do nome da tabela, seguido de um ponto. O nome de uma tabela pode ser reduzido ou alterado num SELECT, através da utilização de um ALIAS que deve ser colocado à frente da tabela e que passará a ser uma outra forma de identificar a tabela.
  • 11.
    Misturando SELECT Existe apossibilidade de “Misturar” vários selects e no final ter apenas um. Para isso utiliza-se os seguintes operadores da teoria de conjuntos UNION INTERSECT MINUS
  • 12.
    UNION Permite fazer areunião entre SELECTs. O número de campos a selecionar em cada um dos comandos SELECT tem de ser igual. Nota: Numa UNION, o nome das colunas apresentado no resultado é o nome das colunas selecionadas na primeira instrução SELECT. Cada SELECT pode conter a sua própria cláusula WHERE. No entanto, só poderá existir uma única cláusula ORDER BY no último SELECT, sendo a ordenação aplicada a todo o resultado.
  • 13.
    INTERSECT Permite fazer aIntersecção entre SELECTs O Operador INTERSECT permite juntar o conteúdo de dois comandos SELECT, apresentando apenas as linhas que resultam de ambos os comandos. Nota: O operador INTERSECT só é suportado pelo ORACLE.
  • 14.
    MINUS Permite Subtrair doisSELECTs Devolve os registos que resultam do primeiro SELECT e que não aparecem no segundo Nota: O operador MINUS só é suportado pelo ORACLE.