„relacyjne bazy danych (oracle) ”
DESCRIPTION
„Relacyjne Bazy Danych (Oracle) ” Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/1.jpg)
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
„Relacyjne Bazy Danych (Oracle)”
Prezentacja jest współfinansowana przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego w projekcie pt.
„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do
zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie
Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl
1
![Page 2: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/2.jpg)
SELECT
SelectionProjection
Table 1 Table 2
Table 1Table 1
Join
2
![Page 3: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/3.jpg)
SELECT
Kwerenda SELECT służy do pobierania informacji z bazy danych spełniających podane kryteria
SELECT ename,sal FROM emp ename,sal – lista kolumn * - wszystkie kolumny emp – nazwa tabeli
3
![Page 4: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/4.jpg)
Kwerendy
Kwerenda SELECT
4
![Page 5: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/5.jpg)
Ograniczanie wierszy
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
SELECT *FROM ProductWHERE category=‘Gadgets’
SELECT *FROM ProductWHERE category=‘Gadgets’
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks5
![Page 6: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/6.jpg)
Ograniczanie wierszy
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
SELECT PName, Price, ManufacturerFROM ProductWHERE Price > 100
SELECT PName, Price, ManufacturerFROM ProductWHERE Price > 100
PName Price Manufacturer
SingleTouch $149.99 Canon
MultiTouch $203.99 Hitachi6
![Page 7: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/7.jpg)
Ograniczanie wierszy
Klauzula WHERE pozwala na ograniczanie wyników zapytania do wierszy spełniających kryteria
SELECT * FROM emp WHERE empno>7700
7
![Page 8: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/8.jpg)
Ograniczanie wierszy
Klauzula WHERE Klauzulę umieszczamy po klauzuli FROM Warunek w klauzuli WHERE może składać się z
wielu części SELECT * FROM emp WHERE empno>7700 AND
empno<7900
8
![Page 9: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/9.jpg)
Wyrażenia arytmetyczne
SELECT last_name, salary, salary + 300 FROM employees;
9
![Page 10: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/10.jpg)
Wyrażenia arytmetyczne
SELECT last_name, 12*salary*commission_pctFROM employees;
10
![Page 11: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/11.jpg)
Ograniczanie wierszy
Warunki można grupować używając nawiasów SELECT * FROM emp WHERE (empno>7700
AND empno<7900) OR empno=7934;
11
![Page 12: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/12.jpg)
Ograniczanie wierszy
Podstawowe operatory algebraiczne „=” równy „>” większy niż „<” mniejszy niż „>=” większy bądź równy „<=” mniejszy bądź równy „<>” różny
12
![Page 13: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/13.jpg)
Ograniczanie wierszy
Inne operatory BETWEEN – analogicznie do „>” AND „<” SELECT * FROM emp WHERE sal BETWEEN
1500 AND 2000
13
![Page 14: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/14.jpg)
Ograniczanie wierszy
Operator IN SELECT * FROM emp WHERE sal IN
(1500,1600,3000,950);
14
![Page 15: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/15.jpg)
Ograniczanie wierszy
Operator LIKE Pozwala sprawdzić wzorzec wartości: „%” oznacza
dowolny ciąg znaków, „_” oznacza jeden znak SELECT * FROM emp WHERE ename LIKE '%R'
15
![Page 16: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/16.jpg)
Ograniczanie wierszy
Operator LIKE – przykłady ename like '%ER' ename LIKE '%E%' ename LIKE '%E_'
16
![Page 17: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/17.jpg)
Ograniczanie wierszy
Warunek wykorzystany po klauzuli WHERE jest ewaluowany przez bazę danych, zwrócone zostaną wiersze, dla których dany warunek jest prawdziwy
Warunek nie musi zawierać nazw kolumn np: SELECT * FROM emp WHERE 1=1
Warunek zawsze prawdziwy
17
![Page 18: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/18.jpg)
Tabela DUAL
DUAL – metatabela w bazie danych Oracle służąca do wykonywania prostych operacji
SELECT 2+2 FROM DUAL
18
![Page 19: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/19.jpg)
Wartość specjalna NULL
NULL w danej kolumnie oznacza brak wartości Wartość NULL nie oznacza ani pustego ciągu
znaków dla kolumn tekstowych ani wartości zero dla kolumn liczbowych
NULL <> NULL
19
![Page 20: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/20.jpg)
Ograniczanie kolumn
Listę zwróconych kolumn można ograniczyć wpisując odpowiednie nazwy po słowie kluczowym SELECT
SELECT ename,job,sal FROM emp WHERE empno>7700;
20
![Page 21: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/21.jpg)
Ograniczanie wyników
Operatory logiczne – pozwalają na łączenie wyników wielu warunków
AND – oba warunki muszą być spełnione OR – jeden z warunków musi być spełniony NOT – operator jednoargumentowy – negowanie
listy wyników
21
![Page 22: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/22.jpg)
SELECT DISTINCT
Klauzula DISTINCT pozwala na wybranie tylko wierszy zawierających unikatową wartość jednej lub więcej kolumn
SELECT DISTINCT job FROM emp;
22
![Page 23: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/23.jpg)
SELECT DISTINCT
Klauzula DISTINCT zastosowana do wielu kolumn
SELECT DISTINCT job,sal FROM emp;
23
![Page 24: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/24.jpg)
Użycie operatora IS NULL
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;
24
![Page 25: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/25.jpg)
Aliasy
SELECT last_name "Name" , salary*12 AS "Annual Salary”FROM employees;
25
![Page 26: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/26.jpg)
Funkcje
Funkcje pozwalają na zmianę sposobu prezentacji wyniku, lub wykonanie operacji na jednej lub więcej kolumnach przed prezentacją wyniku
SELECT ename,
LENGTH(job) FROM emp;
26
![Page 27: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/27.jpg)
Funkcje
Funkcje można stosować do kolumn, większość funkcji występuje tylko dla kolumn danego typu
Wywołanie funkcji na typie danych, dla którego nie została ona określona powoduje błąd
27
![Page 28: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/28.jpg)
Funkcje
Wybrane funkcje zdefiniowane dla ciągów znaków
CONCAT (wartość1, wartość2) SUBSTR(wartość, początek, koniec) LENGTH(wartość) LPAD(wartość,długość,znak)/RPAD(wartość,długość,znak) UPPER(wartość)/LOWER(wartość) REVERSE(wartość) INITCAP(wartość)
28
![Page 29: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/29.jpg)
Funkcje
SELECT last_name ||' is a '|| job_id AS "Employee Details”FROM employees;
29
![Page 30: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/30.jpg)
Funkcje
Wybrane funkcje dla wartości liczbowych ROUND(wartość,liczba_znaków) TRUNC(wartość,liczba_znaków) MOD(wartość,dzielnik) SIN(wartość)/COS(wartość)/SINH(wartość)/COSH(wartość) POWER(wartość,potega)
30
![Page 31: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/31.jpg)
Funkcje
round(125.315) = 125 round(125.315, 0) = 125 round(125.315, 1) =125.3 round(125.315, 2) =125.32 round(125.315, 3) =125.315 round(-125.315, 2) =-125.32
31
![Page 32: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/32.jpg)
Funkcje
Wykorzystanie funkcji przy klauzuli WHERE SELECT * FROM emp WHERE
MOD(sal,200)=0;
32
![Page 33: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/33.jpg)
Sortowanie wyników
Klauzula ORDER BY Klauzulę umieszczamy po klauzuli WHERE
33
![Page 34: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/34.jpg)
Sortowanie wyników
Można wykorzystać kilka kolumn do sortowania Można sortować rosnąco lub malejąco
(ASC/DESC) SELECT * FROM emp WHERE sal>2000
ORDER BY sal ASC,ename DESC;
34
![Page 35: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/35.jpg)
Agregacje
Agregowanie wyników pozwala na analizę wybranych kolumn z tabeli oraz zaprezentowanie wyniku danej funkcji w postaci jednej kolumny
Proste agregacje pozwalają np. na: Obliczenie średniej wartości danej kolumny Obliczenie wartości minimalnej/maksymalnej Policzenie liczby wierszy
Funkcje grupujące ignorują wartości null w kolumnie.
35
![Page 36: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/36.jpg)
Agregacje
36
![Page 37: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/37.jpg)
COUNT(*)
Agregacja COUNT(*) zwraca liczbę wierszy pasujących do danego zapytania
Agregacja ta może skanować daną tabelę, bądź indeks, jej wykorzystanie na dużych tabelach może być powolne
SELECT COUNT(*) FROM emp WHERE sal>2000;
37
![Page 38: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/38.jpg)
MIN(), MAX(), AVG()
Korzystając z agregacji MIN,MAX lub AVG można policzyć minimalną, maksymalną bądź średnią wartość danej kolumny pasującej do zapytania
38
![Page 39: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/39.jpg)
Grupowanie danych
39
![Page 40: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/40.jpg)
Grupowanie danych
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
40
![Page 41: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/41.jpg)
Grupowanie danych
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id ;
41
![Page 42: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/42.jpg)
Grupowanie danych
SELECT department_id dept_id, job_id, AVG(salary)
FROM employees
GROUP BY department_id, job_id ;
42
![Page 43: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/43.jpg)
Grupowanie danych
Działanie HAVING odrzuca grup niespełniające warunku
1. Wiersze są grupowane.
2. Funkcja grupująca jest zastosowana.
3. Grupy spełniające warunek z klauzuli HAVING są wyświetlane.
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
43
![Page 44: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/44.jpg)
Grupowanie danych
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;
44
![Page 45: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/45.jpg)
Funkcja NVL
Konwertuje null do wartości podanej
Dane mogą być liczbami, tekstem lub datami. NVL(commission_pct,0)
NVL(job_id,‘Bez pracy')
45
![Page 46: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/46.jpg)
Funkcja NVL
SELECT ename, sal, NVL(comm, 0), (sal*12) + (sal*12*NVL(comm, 0)) AN_SAL
FROM emp;
46
![Page 47: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/47.jpg)
Użycie wyrażenia CASE
Dają możliwość użycia konstrukcji typu IF-THEN-ELSE w poleceniu SQL
CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]END
CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]END
47
![Page 48: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/48.jpg)
Użycie wyrażenia CASE
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM emp;
48
![Page 49: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/49.jpg)
Łączenie tabel
49
![Page 50: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/50.jpg)
Uzyskiwanie danych z wielu tabel
50
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product
Company CName StockPrice Country
GizmoWorks 25 USA
Canon 65 Japan
Hitachi 15 Japan
![Page 51: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/51.jpg)
Uzyskiwanie danych z wielu tabel
51
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product Company
Cname StockPrice Country
GizmoWorks 25 USA
Canon 65 Japan
Hitachi 15 Japan
PName Price
SingleTouch $149.99
SELECT PName, PriceFROM Product, CompanyWHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200
SELECT PName, PriceFROM Product, CompanyWHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200
![Page 52: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/52.jpg)
Iloczyny kartezjańskie
52
![Page 53: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/53.jpg)
Łączenia zgodne z SQL
• Cross – iloczyn kartezjański
• Natural - naturalne
• Klauzula Using
• Pełne lub dwustronne zewnętrzne
• Arbitralne warunki łączenia dla łączeń zewnętrznych
53
![Page 54: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/54.jpg)
Łączenie tabel
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
54
![Page 55: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/55.jpg)
Łączenie tabel
SELECT *
FROM employees, departments
WHERE employees.department_id = departments.department_id;
55
![Page 56: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/56.jpg)
Używanie aliasów tabel
SELECT *
FROM employees, departments
WHERE employees.department_id = departments.department_id;
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e , departments d
WHERE e.department_id = d.department_id;
56
![Page 57: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/57.jpg)
Łączenia Naturalne
• Klauzula NATURAL JOIN bazuje na wszystkich kolumnach z dwóch tabel, które mają tę samą nazwę.
• Wybiera wiersze z dwóch tabel tak, aby wartości w tych samych kolumnach obu tabel były zgodne.
• Jeśli kolumny mające identyczne nazwy mają rożne typy danych, wówczas zwracany jest błąd.
57
![Page 58: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/58.jpg)
Łączenia Naturalne
SELECT department_id, department_name,
location_id, city
FROM departments NATURAL JOIN locations ;
58
![Page 59: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/59.jpg)
Tworzenie łączeń z klauzulą ON
• Warunek łączenia dla łączenia naturalnego w podstawowym przypadku jest warunkiem równościowym dla wszystkich kolumn o tej samej nazwie.
• Aby określić arbitralny warunek lub określić kolumny do łączenia używa się klauzuli ON.
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
59
![Page 60: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/60.jpg)
Tworzenie łączeń z klauzulą ON
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
60
![Page 61: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/61.jpg)
Dodatkowe warunki
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
AND e.manager_id = 149 ;
61
![Page 62: „Relacyjne Bazy Danych (Oracle) ”](https://reader036.vdocuments.site/reader036/viewer/2022081504/56812ac1550346895d8e896b/html5/thumbnails/62.jpg)
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
„Relacyjne Bazy Danych (Oracle)”
Prezentacja jest współfinansowana przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego w projekcie pt.
„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do
zatrudniania osób niepełnosprawnych” Prezentacja dystrybuowana jest bezpłatnie
Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl
62