Title: Algjebra Relacionale dhe SQL-i
1Algjebra Relacionale dhe SQL-i
2Algjebra Relacionale
- Algjebra relacionale paraqet një tërësi të plotë
me operacione ndaj relacioneve që mundësojnë
selektimin e të dhënave nga databaza relacionale. - Prodhimi kartezian
- Unioni , Prerja , Zbritja
- Projeksioni
- q-join
- Division (Pjestimi)
3Shembull
- R r1 r2 r3 S1 s1 s2
- 1 x 3 3 p
- 4 x 3 4 q
- 3 y 4 4 p
- 2 z 7
- S2 s1 s2
- 4 q
- 2 m
4Prodhimi kartezian
R x S2
r1 r2 r3 s1 s2 1 x 3 4 q 4 x 3 4 q 3 y 4 4 q 2 z
7 4 q 1 x 3 2 m 4 x 3 2 m 3 y 4 2 m 2 z 7 2 m
5Projeksioni - Join
Projection R r2 , r3
r2 r3 x 3 y 4 z 7
q-join R r3 gt s1 S1
r1 r2 r3 s1 s2 3 y 4 3 p 2 z 7 3 p 2 z 7 4 q 2 z
7 4 p
6Left Outer Join
Rr3 ls1S1
r1 r2 r3 s1 s2 1 x 3 3 p 4 x 3 3 p
3 y 4 4 q 3 y 4 4 p 2 z 7
7Division - Pjestimi
Divide by Result DEND/DOR
DEND
P p1
S s1 s2
DOR 1
S P s1 p1 s1 p2 s1 p3 s1 p4 s1 p5 s1 p6 s2 p1 s
2 p2 s3 p2 s4 p2 s4 p4 s4 p5
P p2 p4
S s1 s4
DOR 2
P p1 p2 p3 p4 p5 p6
DOR 3
S s1
8Structured Query Language - SQL
- Structured Query Language (SQL) u zhvillua nga
IBM në fund të viteve 1970. - SQL është bërë standard nacionnal në SHBA nga
American National Standards Institute (ANSI) në
1992 SQL-92. - Verzioni më i ri SQL3 ekziston dhe inkorporon
disa koncepte të orientuara në objekte, por nuk
përdoret gjërësisht nga DBMS produktet komerciale.
9SQL si Nëngjuhë e të dhënave
- SQL nuk është gjuhë e plotë programore si C, C,
edhe Java. - SQL ëshë nëngjuhë për të dhëna për krijimin dhe
procesimin e të dhënave dhe meta të dhënave
(metadata) të databazës. - SQL është i gjithëpranishëm në DBMS produktet
komerciale të klasave - enterprise.
10SQL DDL dhe DML
- SQL formulimet/pyetësorët mund të ndahen në dy
kategori - Data definition language (DDL) formulime
- Për krijimin e tabelave, relacioneve, dhe
strukturave tjera. - Do ti shohim në kapitullin e shtatë.
- Data manipulation language (DML) formulimet.
- Për pyetësor dhe modifikim të të dhënave
- Do ti shohim në këtë kapitull
11Cape Codd Outdoor Sports
- Cape Codd Outdoor Sports është një kompani
fiktive që bën shitjen e prohimeve të nryshme. - Cape Codd Outdoor Sports
- Ka 15 dyqane shitëse.
- Ka një magazinë on-line në Internet.
- Ka departament për postimin e porosive.
- Të gjitha shitjet shënohen në Oracle databazë.
12Struktura e shitjes e Cape Codd Retail
13Nxjerrja e të dhënave që shiten në Cape Codd
Retail
- Përdoren tre tabela RETAIL_ORDER, ORDER_ITEM,
edhe SKU_DATA (SKU Stock Keeping Unit). - Të dhënat e nxjerra shndërrohen në
- DBMS të ndryshëm? MS SQL Server
- Në kolona të ndryshme ? OrderDate bëhet
OrderMonth dhe OrderYear
14Formati i të dhënave të nxjerra nga shitja
15Tabelat për nxjerrjen e të dhënave në MS SQL
Server
16Komanda/formulimi SELECT
- Korniza themelore e formulimeve të SQL është SQL
SELECT formulimi - SELECT Emri_i_Kolonës(s)
- FROM Emri_i_Tabelës(s)
- WHERE Kushtet
- Të gjitha SQL formulimet përfundojnë me
pikë-presje ().
17Disa kolona nga një Tabelë
- SELECT Department, Buyer
- FROM SKU_DATA
18Specifikimi i rënditjes së kolonave
- SELECT Buyer, Department
- FROM SKU_DATA
19Komanda DISTINCT
- SELECT DISTINCT Buyer, Department
- FROM SKU_DATA
20Selektimi i të gjitha kolonave Komanda yllëz ()
21Disa rreshta nga një Tabelë
- SELECT
- FROM SKU_DATA
- WHERE Department 'Water Sports'
22Kolona dhe rreshta specifike nga një Tabelë
- SELECT SKU_Description, Buyer
- FROM SKU_DATA
- WHERE Department 'Climbing'
23Using MS Access
24Using MS Access (Continued)
25Using MS Access (Continued)
26Using MS Access - Results
27Using MS SQL ServerSQL Query Analyzer
28Using OracleSQLPlus
29Using OracleQuest Softwares TOAD
30Using MySQLMySQL Command Line Client
31Using MySQLMySQL Query Browser
32Sortimi i rezultateve ORDER BY
- SELECT
- FROM ORDER_ITEM
- ORDER BY OrderNumber, Price
33Dy lloje sortimeshRritës edhe Rënës
- SELECT
- FROM ORDER_ITEM
- ORDER BY Price DESC, OrderNumber ASC
- Shënim Nëse nuk specifikohet ndonjëra nga
komandat ASC ose DESC, sortimi do të bëhet sipas
ASC.
34Opcionet e komandës WHERE AND
- SELECT
- FROM SKU_DATA
- WHERE Department 'Water Sports'
- AND Buyer 'Nancy Meyers'
35Opcionet e komandës WHERE OR
- SELECT
- FROM SKU_DATA
- WHERE Department 'Camping'
- OR Department 'Climbing'
36Opcionet e komandës WHERE - IN
- SELECT
- FROM SKU_DATA
- WHERE Buyer IN ('Nancy Meyers',
- 'Cindy Lo', 'Jerry Martin')
37Opcionet e komandës WHERE NOT IN
- SELECT
- FROM SKU_DATA
- WHERE Buyer NOT IN ('Nancy Meyers',
- 'Cindy Lo', 'Jerry Martin')
38Opcionet e komandës WHERE Intervale me BETWEEN
- SELECT
- FROM ORDER_ITEM
- WHERE ExtendedPrice
- BETWEEN 100 AND 200
39Opcionet e komandës WHEREIntervale me simbole
matematikore
- SELECT
- FROM ORDER_ITEM
- WHERE ExtendedPrice gt 100
- AND ExtendedPrice lt 200
40Opcionet e komandës WHERELIKE edhe Wildcards
- SQL komanda LIKE mund të kombinohet me simbolet
wildcard - SQL 92 Standard (SQL Server, Oracle, etc.)
- _ Saktësisht një karakter
- Bashkësi me një apo më shumë karaktere
- MS Access (bazuar në MS DOS)
- ? Saktësisht një karakter
- Bashkësi me një apo më shumë karaktere
41Opcionet e komandës WHERELIKE edhe Wildcards
- SELECT
- FROM SKU_DATA
- WHERE Buyer LIKE 'Pete'
42Opcionet e komandës WHERELIKE edhe Wildcards
- SELECT
- FROM SKU_DATA
- WHERE SKU_Description LIKE 'Tent'
43Opcionet e komandës WHERELIKE edhe Wildcards
- SELECT
- FROM SKU_DATA
- WHERE SKU LIKE '2__'
44Funksionet e integruara të SQL
- Ezistojnë pesë funksione të integruara të SQL
- COUNT
- SUM
- AVG
- MIN
- MAX
45Funksionet e integruara të SQL
- SELECT SUM (ExtendedPrice)
- AS Order3000Sum
- FROM ORDER_ITEM
- WHERE OrderNumber 3000
46Funksionet e integruara të SQL
- SELECT SUM (ExtendedPrice) AS OrderItemSum,
- AVG (ExtendedPrice) AS OrderItemAvg,
- MIN (ExtendedPrice) AS OrderItemMin,
- MAX (ExtendedPrice) AS OrderItemMax
- FROM ORDER_ITEM
47Funksionet e integruara të SQL
- SELECT COUNT() AS NumRows
- FROM ORDER_ITEM
48Funksionet e integruara të SQL
- SELECT COUNT
- (DISTINCT Department)
- AS DeptCount
- FROM SKU_DATA
49Aritmetika në lomandën SELECT
- SELECT Quantity Price AS EP,
- ExtendedPrice
- FROM ORDER_ITEM
50String Funksione në SELECT komandën
- SELECT DISTINCT RTRIM (Buyer)
- ' in ' RTRIM (Department) AS Sponsor
- FROM SKU_DATA
51Komanda GROUP BY
- SELECT Department, Buyer,
- COUNT() AS
- Dept_Buyer_SKU_Count
- FROM SKU_DATA
- GROUP BY Department, Buyer
52Komanda GROUP BY
- Në përgjithësi, WHERE vendoset përpara GROUP BY.
Disa DBMS produkte nuk e marrin parasysh këtë,
por për ma sigurt gjithmonë vendosni WHERE
përpara GROUP BY. - Operatori HAVING i kufizon grupet që paraqiten në
rezultat. - Ndonjëherë paraqitet paqartësi në formulimet që
kanë edhe WHERE edhe HAVING. Rezultati mund të
ndryshojë, pra për të eliminuar paqartësitë të
SQL gjithmonë vendosni WHERE përpara HAVING.
53Komanda GROUP BY (Vazhdim)
- SELECT Department, COUNT() AS
- Dept_SKU_Count
- FROM SKU_DATA
- WHERE SKU ltgt 302000
- GROUP BY Department
- ORDER BY Dept_SKU_Count
54Komanda GROUP BY (Vazhdim)
- SELECT Department, COUNT() AS
- Dept_SKU_Count
- FROM SKU_DATA
- WHERE SKU ltgt 302000
- GROUP BY Department
- HAVING COUNT () gt 1
- ORDER BY Dept_SKU_Count
55Nxjerrja e të dhënave nga më shumë tabela
Nënpyetësorët
- SELECT SUM (ExtendedPrice) AS Revenue
- FROM ORDER_ITEM
- WHERE SKU IN
- (SELECT SKU
- FROM SKU_DATA
- WHERE Department 'Water Sports')
- Note SELECT i dytë është nënpyetësor - subquery.
56Nxjerrja e të dhënave nga më shumë tabela
Nënpyetësorët
- SELECT Buyer
- FROM SKU_DATA
- WHERE SKU IN
- (SELECT SKU
- FROM ORDER_ITEM
- WHERE OrderNumber IN
- (SELECT OrderNumber
- FROM RETAIL_ORDER
- WHERE OrderMonth 'January'
- AND OrderYear 2004))
57Nxjerrja e të dhënave nga më shumë tabela Joins
- SELECT Buyer, ExtendedPrice
- FROM SKU_DATA, ORDER_ITEM
- WHERE SKU_DATA.SKU ORDER_ITEM.SKU
58Nxjerrja e të dhënave nga më shumë tabela Joins
- SELECT Buyer, SUM(ExtendedPrice)
- AS BuyerRevenue
- FROM SKU_DATA, ORDER_ITEM
- WHERE SKU_DATA.SKU ORDER_ITEM.SKU
- GROUP BY Buyer
- ORDER BY BuyerRevenue DESC
59Nxjerrja e të dhënave nga më shumë tabela Joins
- SELECT Buyer, ExtendedPrice, OrderMonth
- FROM SKU_DATA, ORDER_ITEM, RETAIL_ORDER
- WHERE SKU_DATA.SKU ORDER_ITEM.SKU
- AND ORDER_ITEM.OrderNumber
- RETAIL_ORDER.OrderNumber
60Nënpyetësorët vs. Joins
- Edhe nënpyetësorët dhe joins procesojnë tabela të
shumëfishta. - Nënpyetësori mund të përdoret për nxjerrjen e të
dhënave nga fillimi/maja (top) e tabelës. - Join mund të përdoret për marrjen e të dhënave
nga numër i ndryshëm tabelash, përfshirë edhe
top table të nënpyetësorëve. - Në kapitullin 7, do të studiojmë nënpyetësorët e
koreluara. Ky lloj i nënpyetësorëve mund të
realizojë punë që nuk mund të realizohen me anë
të joins.