14
Base de Dados 1

Aula 8 select & joi ns

Embed Size (px)

Citation preview

Page 1: Aula 8   select & joi ns

Base de Dados 1

Page 2: Aula 8   select & joi ns

Produto Cartesiano

JOINs

ALIAS de Tabelas

UNION

INTERSECT

MINUS

Agenda

Page 3: Aula 8   select & joi ns

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.

Produto Cartesiano

Page 4: Aula 8   select & joi ns

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

JOIN

Page 5: Aula 8   select & joi ns

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;

INNER JOIN

Page 6: Aula 8   select & joi ns

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;

RIGHT JOIN

Page 7: Aula 8   select & joi ns

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;

LEFT JOIN

Page 8: Aula 8   select & joi ns

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;

FULL JOIN

Page 9: Aula 8   select & joi ns

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

Juntado Tabelas Com Clausula WHERE

Page 10: Aula 8   select & joi ns

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.

ALIAS de tabelas

Page 11: Aula 8   select & joi ns

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

Misturando SELECT

Page 12: Aula 8   select & joi ns

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.

UNION

Base de Dados 1

Page 13: Aula 8   select & joi ns

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.

INTERSECT

Page 14: Aula 8   select & joi ns

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.

MINUS