Top Banner
1 Algjebra Relacionale & SQL Ligjerata 2
40

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

Jan 02, 2016

Download

Documents

Lilian Cannon
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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