select nazwa firmy

Transkrypt

select nazwa firmy
Połączenia w systemie Oracle
• Natural Joins - tabel poprzez kolumny o tych
samych nazwach.
• Equijoins - połączenie operatorem porównania.
• Self Joins - połączenie w obrębie jednej tabeli (z
dwoma różnymi aliasami).
• Cartesian Products - połączenie dwóch lub więcej
tabel, dla których nie podano warunku połączenia.
• Inner Joins (Simple Joins) - połączenie dwóch lub
kilku tabel, które zwraca w wyniku tylko wiersze
pasujące do warunku połączenia.
BAZY DANYCH
WYKŁAD 8
Typy połączeń w Oracle.
Operatory zbiorów i pseudozbiorów.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2014-2015 E. Busłowska
1
Połączenia w systemie Oracle
3
• Składnia dotychczasowa
SELECT dname, ename
FROM Dept D, EMP E
WHERE E.deptno=D.deptno AND
LOWER(loc) LIKE '%ll%';
• Składnia ANSI
SELECT dname, ename
FROM Dept D NATURAL JOIN Emp E
WHERE LOWER(loc) LIKE '%ll%';
Copyright © 2014-2015 E. Busłowska
4
Przykład połączenia JOIN
Przykład połączenia JOIN
• Składnia dotychczasowa
SELECT D.dname, D.loc || ' ' || E.ename
Name, E.hiredate
FROM Emp E, Dept D
WHERE E.deptno = D.deptno
AND job = ‘SALESMAN';
Copyright © 2014-2015 E. Busłowska
2
Przykład połączenia naturalnego
• Outer Joins – rozszerzone połączenie typu Inner
Joins o wiersze „niepasujące”, rozróżnia się
połączenia zewnętrzne lewostronne (Left Outer
Joins), prawostronne (Right Outer Joins) i pełne
(Full Outer Joins).
• Antijoins - połączenie zwracające wiersze, które nie
pasują do podanego warunku.
• Semijoins - połączenie z warunkiem EXISTS.
• Theta Joins - Połączenie nierównościowe.
Połączenie dwóch relacji z kryterium połączenia
innym niż równość.
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
• Składnia ANSI
SELECT D.dname, D.loc || ' ' || E.ename,
E.hiredate
FROM Emp E JOIN Dept D USING(depno)
WHERE E.job = ‘SALESMAN';
5
Copyright © 2014-2015 E. Busłowska
6
1
Połączenie INNER JOIN ... ON
Połączenie INNER JOIN ... ON
• Składnia ANSI
SELECT column_name(s)
FROM table_name1 INNER JOIN table_name2 ON
table_name1.column_name=
table_name2.column_name
Copyright © 2014-2015 E. Busłowska
7
Połączenie
LEFT OUTER JOIN
8
• SELECT empno, mgr
FROM EMP1 LEFT OUTER JOIN EMP2
ON EMP1.empno=EMP2.mgr;
9
Połączenie
RIGHT OUTER JOIN
Copyright © 2014-2015 E. Busłowska
10
Połączenie
RIGHT OUTER JOIN
• SELECT kolumny
FROM tabela1 RIGHT OUTER JOIN tabela2
ON tabela1.kolumna = tabela2.kolumna;
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
Połączenie
LEFT OUTER JOIN
• SELECT kolumny
FROM tabela1 LEFT OUTER JOIN tabela2
ON tabela1.kolumna = tabela2.kolumna;
Copyright © 2014-2015 E. Busłowska
• Składnia ANSI
SELECT D.dname, E.ename
FROM Emp E
INNER JOIN Dept D
ON (E.depno = D.deptno)
WHERE E.job = ‘S%’;
• SELECT empno, mgr
FROM EMP1 RIGHT OUTER JOIN EMP2
ON EMP1.empno=EMP2.mgr;
11
Copyright © 2014-2015 E. Busłowska
12
2
Połączenie
FULL OUTER JOIN
Połączenie
FULL OUTER JOIN
• SELECT kolumny
FROM tabela1 FULL OUTER JOIN tabela2
ON tabela1.kolumna = tabela2.kolumna;
Copyright © 2014-2015 E. Busłowska
• SELECT empno, mgr
FROM EMP1 FULL OUTER JOIN EMP2
ON EMP1.empno=EMP2.mgr;
13
• UNION ALL – zwraca wszystkie wiersze
połączonych zapytań.
• UNION – zwraca wszystkie nie powtarzające się
wiersze zapytań.
• INTERSECT – wyświetla wiersze mające
odpowiedniki w zapytaniach.
• MINUS – umożliwia wybór elementów
znajdujących się w jednym zbiorze i nie
należących do drugiego
• Alternatywą operatorów są połączenia zewnętrzne.
15
UNION
SELECT kol_1, kol_2, kol_3
FROM tab_1
Operator zbiorów
SELECT kol_1, kol_2, kol_3
FROM tab_2
[Operator zbiorów
SELECT kol_1, kol_2, kol_3
FROM tab_3
...];
Copyright © 2014-2015 E. Busłowska
16
MINUS
SELECT IdSamochodu, Model, NazwaFirmy
FROM Dealerzy D, Samochody1 S1
WHERE D.IdDealera = S1.IdDealera AND
NazwaFirmy=‘HONDA’
MINUS
SELECT IdSamochodu, Model, NazwaFirmy
FROM Dealerzy D, Samochody S
WHERE D.IdDealera = S.IdDealera AND
NazwaFirmy=‘HONDA’;
SELECT IdSamochodu, IdDealera, Model, PojSilnika
FROM Samochody
WHERE IdDealera=1
UNION
SELECT IdSamochodu, IdDealera, Model, PojSilnika
FROM Samochody1
WHERE IdDealera=2;
Copyright © 2014-2015 E. Busłowska
14
STRUKTURA ZAPYTANIA Z OPERATORAMI ZBIORÓW
Operatory zbiorów
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
17
Copyright © 2014-2015 E. Busłowska
18
3
INTERSECT
Łączenie operatorów zbiorów i pseudozbiorów
SELECT IdSamochodu, Model, NazwaFirmy
FROM Dealerzy D, Samochody S
WHERE D.IdDealera = S.IdDealera AND
NazwaFirmy=‘Honda’
INTERSECT
SELECT IdSamochodu, Model, NazwaFirmy
FROM Dealerzy D, Samochody S1
WHERE D.IdDealera = S1.IdDealera AND
NazwaFirmy=‘Honda’;
Copyright © 2014-2015 E. Busłowska
• Wybór wierszy z dwóch tabel nie mających
swoich odpowiedników:
– (Zapytanie1 UNION Zapytanie2) MINUS
(Zapytanie2 INTERSECT Zapytanie1)
– (Zapytanie1 MINUS Zapytanie2) UNION
(Zapytanie2 MINUS Zapytanie1)
19
Copyright © 2014-2015 E. Busłowska
20
Sortowanie wyników działania operatorów zbiorów
• W instrukcji złożonej może wystąpić tylko
raz ORDER BY.
• Kolumny użyte w ORDER BY muszą
występować w SELECT.
Copyright © 2014-2015 E. Busłowska
21
4