62
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łnosprawnychPrezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 www.kapitalludzki.p.lodz.pl 1

„Relacyjne Bazy Danych (Oracle) ”

Embed Size (px)

DESCRIPTION

„Relacyjne Bazy Danych (Oracle) ” Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. - PowerPoint PPT Presentation

Citation preview

Page 1: „Relacyjne Bazy Danych (Oracle) ”

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) ”

SELECT

SelectionProjection

Table 1 Table 2

Table 1Table 1

Join

2

Page 3: „Relacyjne Bazy Danych (Oracle) ”

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) ”

Kwerendy

Kwerenda SELECT

4

Page 5: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

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) ”

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) ”

Wyrażenia arytmetyczne

SELECT last_name, salary, salary + 300 FROM employees;

9

Page 10: „Relacyjne Bazy Danych (Oracle) ”

Wyrażenia arytmetyczne

SELECT last_name, 12*salary*commission_pctFROM employees;

10

Page 11: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Ograniczanie wierszy

Inne operatory BETWEEN – analogicznie do „>” AND „<” SELECT * FROM emp WHERE sal BETWEEN

1500 AND 2000

13

Page 14: „Relacyjne Bazy Danych (Oracle) ”

Ograniczanie wierszy

Operator IN SELECT * FROM emp WHERE sal IN

(1500,1600,3000,950);

14

Page 15: „Relacyjne Bazy Danych (Oracle) ”

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) ”

Ograniczanie wierszy

Operator LIKE – przykłady ename like '%ER' ename LIKE '%E%' ename LIKE '%E_'

16

Page 17: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

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) ”

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) ”

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) ”

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) ”

SELECT DISTINCT

Klauzula DISTINCT zastosowana do wielu kolumn

SELECT DISTINCT job,sal FROM emp;

23

Page 24: „Relacyjne Bazy Danych (Oracle) ”

Użycie operatora IS NULL

SELECT last_name, manager_id

FROM employees

WHERE manager_id IS NULL;

24

Page 25: „Relacyjne Bazy Danych (Oracle) ”

Aliasy

SELECT last_name "Name" , salary*12 AS "Annual Salary”FROM employees;

25

Page 26: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

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) ”

Funkcje

SELECT last_name ||' is a '|| job_id AS "Employee Details”FROM employees;

29

Page 30: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Funkcje

Wykorzystanie funkcji przy klauzuli WHERE SELECT * FROM emp WHERE

MOD(sal,200)=0;

32

Page 33: „Relacyjne Bazy Danych (Oracle) ”

Sortowanie wyników

Klauzula ORDER BY Klauzulę umieszczamy po klauzuli WHERE

33

Page 34: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Agregacje

36

Page 37: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Grupowanie danych

39

Page 40: „Relacyjne Bazy Danych (Oracle) ”

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) ”

Grupowanie danych

SELECT department_id, AVG(salary)

FROM employees

GROUP BY department_id ;

41

Page 42: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Grupowanie danych

SELECT department_id, MAX(salary)

FROM employees

GROUP BY department_id

HAVING MAX(salary)>10000 ;

44

Page 45: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

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) ”

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) ”

Łączenie tabel

49

Page 50: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

Iloczyny kartezjańskie

52

Page 53: „Relacyjne Bazy Danych (Oracle) ”

Łą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) ”

Łączenie tabel

SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column1 = table2.column2;

54

Page 55: „Relacyjne Bazy Danych (Oracle) ”

Łączenie tabel

SELECT *

FROM employees, departments

WHERE employees.department_id = departments.department_id;

55

Page 56: „Relacyjne Bazy Danych (Oracle) ”

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) ”

Łą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) ”

Łączenia Naturalne

SELECT department_id, department_name,

location_id, city

FROM departments NATURAL JOIN locations ;

58

Page 59: „Relacyjne Bazy Danych (Oracle) ”

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) ”

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) ”

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) ”

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