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