1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per...

40
1 Algjebra Relacionale & SQL Ligjerata 2

Transcript of 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per...

Page 1: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

1

Algjebra Relacionale & SQL

Ligjerata 2

Page 2: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

2

Algjebra Relacionale

• Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund te operojne dhe dhe manipulojne me te dhena.

• Ajo perdor bazat e SQL me bazen e te dhenave relacionale, dhe ilustron operacionet bazike duke perdore DML.

• Kjo algjeber i paraqet operacionet themelore (duke involvuar tabelat) dhe operatcionet binare (duke perdore disa tabela).

Page 3: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

3

SQL

• Structured Query Language (SQL)– Eshte e Standardizuar nga ANSI– Perkrahet nga RDBMS-te moderne

• Kommandat jane te perfshira ne tri grupe– Data Definition Language (DLL)

• Krijojne tabelat , etj

– Data Manipulation Language (DML)• Modifikoojne te dhenat

– Data Control Language• Kontrollojne se qka duan te perdorin – pranimet dhe

nderprerjen e privilegjet

Page 4: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

4

Operacionet

SelekcionimiProjektimi

Page 5: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

5

Selection

• Seleksionimi ose operacioni selekton rreshtat prej tabeles qe paraqitet me kushtin:

  < kusht > < emri i tabeles>

• Shembull: course = ‘CM’ Students

Studentsstud# name course100 Faton PH stud# name

course200 Agim CM 200 Agim CM300 Bujar CM 300 Bujar CM

Page 6: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

6

Projeksioni• Projekcioni ose eshte operacion i cili selekton

listen e kolonave nga tabela. < lista e kolones > < emriitabeles >

• shembulli: stud#, name Students

Studentsstud# name course stud# name100 Faton PH 100 Faton 200 Agim CM 200 Agim300 Bujar CM 300 Bujar

Page 7: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

7

Selekcionimi / Projektimi

• Selekcionimi dhe projektimi zakonisht kombinohen:

stud#, name ( course = ‘CM’ Students)

Studentsstud# name course100 Faton PH stud# name200 Agim CM 200 Agim300 Bujar CM 300 Bujar

Page 8: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

8

Operacionet Binare

Cartesian ProductTheta JoinInner Join

Natural JoinOuter JoinsSemi Joins

Page 9: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

9

Produkti Cartesian

• Çdo rresht në relacionin e parë (R) me çdo rresht në lidhje të dytë (S):

R X S

Page 10: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

10

Produkti Cartesian - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 300 Bujar CM

Students X Courses =stud# Students.name course course# Courses.name100 Faton PH PH Pharmacy100 Faton PH CM Computing200 Agim CM PH Pharmacy200 Agim CM CM Computing300 Bujar CM PH Pharmacy300 Bujar CM CM Computing

Page 11: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

11

Theta Join

• Produkti Kartezian me kusht aplikohet:

R ⋈ <kushti> S

Page 12: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

12

Theta Join - Shembull

Students Courses

stud# name course course# name

100 Faton PH PH Pharmacy

200 Agim CM CM Computing

300 Bujar CM

Students ⋈ stud# = 200 Courses

stud# Students.name course course# Courses.name

200 Agim CM PH Pharmacy

200 Agim CM CM Computing

Page 13: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

13

Inner Join (Equijoin) brendshem

• Theta join ku <kushti> eshte (=) per qelesin primar dhe qelesin e jashtem

R ⋈ <R.primary_key = S.foreign_key> S

Page 14: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

14

Inner Join - Shembull

Students Courses

stud# name course course# name

100 Faton PH PH Pharmacy

200 Agim CM CM Computing

300 Bujar CM

Students ⋈ course = course# Courses

stud# Students.name course course# Courses.name

100 Faton PH PH Pharmacy

200 Agim CM CM Computing

300 Bujar CM CM Computing

Page 15: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

15

Natural Join

• Inner join jep te dhena te teperta (ne shembullin e meparshem: course and course#). Për të hequr këtë dyfishim:

< stud#, Students.name, course, Courses.name >

(Students ⋈ <course = course#> Courses)OseR1= Students ⋈ <course = course#> Courses

R2= < stud#, Students.name, course, Courses.name > R1

Rezultati quhet natural join i Students dhe Courses

Page 16: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

16

Natural Join - Shembull

Students Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 300 Bujar CM

R1= Students ⋈ <course = course#> CoursesR2= < stud#, Students.name, course, Courses.name > R1stud# Students.name course Courses.name

100 Faton PH Pharmacy200 Agim CM Computing300 Bujar CM Computing

Page 17: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

17

Outer Joins

• Inner join + rreshat e tabeles qe nuk e plotesojne <kushtin>

• Left Outer Join: R <R.primary_key = S.foreign_key> S Të gjitha rreshtave nga R ruhen dhe rreshtat tjere e S janëte mbushur me NULL

• Right Outer Join: R <R.primary_key = S.foreign_key> S

Të gjitha rreshtave nga S ruhen dhe rreshtave qe nuk e plotesojne kushtin në R janë te mbushura me NULL

Page 18: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

18

Left Outer Join - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 400 Petrit EN CH Chemistry

Students <course = course#> Courses

stud# Students.name course course# Courses.name

100 Faton PH PH Pharmacy200 Agim CM CM Computing400 Petrit EN NULL NULL

Page 19: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

19

Right Outer Join - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 400 Petrit EN CH Chemistry

Students <course = course#> Courses

stud# Students.name course course# Courses.name

100 Faton PH PH Pharmacy200 Agim CM CM ComputingNULL NULL NULL CH Chemistry

Page 20: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

20

Kombinimi i operacioneve dhe JOIN

Students Coursesstud# name address course course# name100 Faton Aberdeen PH PH Pharmacy200 Agim Dundee CM CM Computing 300 Bujar Aberdeen CM

Si te paraqiten emrat e studenteve (nga Aberdeen) dhe emrat e kursev ete Si te paraqiten emrat e studenteve (nga Aberdeen) dhe emrat e kursev ete tyretyre

R1= Students ⋈ <course=course#> CoursesR2= <address=“Aberdeen”> R1R3= <Students.name, Course.name> R2

Students.name Courses.nameFaton PharmacyBujar Computing

Page 21: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

21

Disa Operacione te tjera

Unioni

Intersekcioni

Diferenca

Page 22: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

22

Unioni

• Takes the set of rows in each table and combines them, eliminating duplicates

• Participating relations must be compatible, ie have the same number of columns, and the same column names, domains, and data types

R S R SA Ba1 b1a2 b2

A Ba2 b2a3 b3

A Ba1 b1a2 b2a3 b3

Page 23: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

23

Intersection

• Takes the set of rows that are common to each relation

• Participating relations must be compatible

R S R SA Ba1 b1a2 b2

A Ba2 b2a3 b3

A Ba2 b2

Page 24: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

24

Difference

• Takes the set of rows in the first relation but not the second

• Participating relations must be compatible

R S R - SA Ba1 b1a2 b2

A Ba2 b2a3 b3

A Ba1 b1

Page 25: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

25

Ushtrimi -

Employee WorkLoad Projectempid name empid* projid* duration projid name

E100 Faton E100 P001 17 P001 DB

E200 Agim E200 P001 12 P002Access

E300 Bujar E300 P002 15 P003 SQL

E400 Petrit

Përcaktoni rezultatin e operacioneve për:

• Natural join ndermjet Employee dhe WorkLoad

• Left outer join ndermjet Employee dhe WorkLoad

• Right outer join ndermjet WorkLoad dhe Project

Page 26: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

26

Algjebra Relacionale Te shkruarit e oeracioneve

ne SQL

Page 27: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

27

Unary Operations

Selection

course = ‘Computing’ Students

In SQL:

Select *

From Students

Where course = ‘Computing’;

Projection

stud#, name Students

In SQL:

Select stud#, name

From Students;

Selection & Projection

stud#, name ( course = ‘Computing’ Students)

In SQL:

Select stud#, name

From students

Where course = ‘Computing’;

Page 28: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

28

Binary Operations/Joins

Cartesian Product: Students X Courses

In SQL:

Select *

From Students, Courses;

Theta Join: Students ⋈ <stud# =200> Courses

In SQL:

Select *

From Students, Courses

Where stud# = 200;

Page 29: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

29

Binary Operations/Joins

Inner Join (Equijoin): Students ⋈ <course=course#> Courses

In SQL:

Select *

From Students, Courses

Where course=course#;

Natural Join:

R1= Students ⋈ <course = course#> Courses

R2= < stud#, Students.name, course, Courses.name > R1

In SQL:

Select stud#, Students.name, course, Courses.name

From Students, Courses

Where course=course#;

Page 30: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

30

Outer Joins

Left Outer JoinStudents <course = course#> CoursesIn SQL:Select * From Students, CoursesWhere course = course#(+)

Right Outer JoinStudents <course = course#> CoursesIn SQL:Select * From Students, CoursesWhere course(+) = course#

Page 31: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

31

Combination of Unary and Join Operations

R1= Students ⋈ <course=course#> Courses

R2= <address=“Aberdeen”> R1

R3= <Students.name, Course.name> R2

In SQL:

Select Students.name, Courses.name

From Students, Courses

Where course=course#

AND address=“Aberdeen”;

Page 32: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

32

Set Operations

Union: R S

In SQL:

Select * From R

Union

Select * From S;

Intersection: R S

In SQL:

Select * From R

Intersect

Select * From S;

Difference: R - S

In SQL:

Select * From R

Minus

Select * From S;

Page 33: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

33

SQL Operators

Between, In, Like, Not

Page 34: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

34

SQL Operators

SELECT *FROM BookWHERE catno BETWEEN 200 AND 400;

SELECT *FROM ProductWHERE prod_desc BETWEEN ‘C’ AND ‘S’;

SELECT *FROM BookWHERE catno NOT BETWEEN 200 AND 400;

Page 35: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

35

SQL Operators

SELECT Catno

FROM Loan

WHERE Date-Returned IS NULL;

SELECT Catno

FROM Loan

WHERE Date-Returned IS NOT NULL;

Page 36: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

36

SQL Operators

SELECT Name

FROM Member

WHERE memno IN (100, 200, 300, 400);

SELECT Name

FROM Member

WHERE memno NOT IN (100, 200, 300, 400);

Page 37: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

37

SQL OperatorsSELECT Name

FROM Member

WHERE address NOT LIKE ‘%Aberdeen%’;

SELECT Name

FROM Member

WHERE Name LIKE ‘_ES%’;

Note: In MS Access, use * and # instead of % and _

Page 38: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

38

Selecting Distinct Values

Studentstud# name address100 Faton Aberdeen200 Agim Dundee300 Bujar Aberdeen

SELECT Distinct address

FROM Student;

address

Aberdeen

Dundee

Page 39: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

39

Exercise

Employee(empid, name)

Project(projid, name)

WorkLoad(empid*, projid*, duration)

List the names of employees working on project

name ‘Databases’.

Page 40: 1 Algjebra Relacionale & SQL Ligjerata 2. 2 Algjebra Relacionale Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund.

40