Algjebra Relacionale dhe SQL-i Kapitulli 2 1

Download Report

Transcript Algjebra Relacionale dhe SQL-i Kapitulli 2 1

Algjebra Relacionale dhe
SQL-i
Kapitulli 2
1
Algjebra 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)
2. 2
Shembull
R
r1
r2
r3
1
4
3
2
x
x
y
z
3
3
4
7
S1
S2
2. 3
s1
s2
3
4
4
p
q
p
s1
s2
4
q
2
m
Prodhimi kartezian
R x S2
2. 4
r1
r2
r3
s1
s2
1
4
3
2
1
4
3
2
x
x
y
z
x
x
y
z
3
3
4
7
3
3
4
7
4
4
4
4
2
2
2
2
q
q
q
q
m
m
m
m
Projeksioni - Join
Projection
q-join
2. 5
R [ r2 , r3 ]
r2
x
y
z
r3
3
4
7
R [ r3 > s1 ] S1
r1
r2
r3
s1
s2
3
2
2
2
y
z
z
z
4
7
7
7
3
3
4
4
p
p
q
p
Left Outer Join
R[r3 =ls1]S1
2. 6
r1
r2
r3
s1
s2
1
4
3
3
2
x
x
y
y
z
3
3
4
4
7
3
3
4
4
p
p
q
p
Division - Pjestimi
Divide by
DEND
S#
P#
s1
s1
s1
s1
s1
s1
s2
s2
s3
s4
s4
s4
p1
p2
p3
p4
p5
p6
p1
p2
p2
p2
p4
p5
2. 7
÷
Result
DEND/DOR
DOR 1
P#
p1
S#
s1
s2
DOR 2
P#
p2
p4
S#
s1
s4
DOR 3
P#
p1
p2
p3
p4
p5
p6
S#
s1
Structured 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.
2. 8
SQL 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.
2. 9
SQL 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
2. 10
Cape 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ë.
2. 11
Struktura e shitjes e Cape Codd
Retail
2. 12
Nxjerrja 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
2. 13
Formati i
të
dhënave
të nxjerra
nga shitja
2. 14
Tabelat për nxjerrjen e të
dhënave [në MS SQL Server]
2. 15
Komanda/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 (;).
2. 16
Disa kolona nga një Tabelë
SELECT
Department, Buyer
FROM SKU_DATA;
2. 17
Specifikimi i rënditjes së kolonave
SELECT
Buyer, Department
FROM SKU_DATA;
2. 18
Komanda DISTINCT
SELECT
FROM
2. 19
DISTINCT Buyer, Department
SKU_DATA;
Selektimi i të gjitha kolonave:
Komanda yllëz (*)
SELECT
*
FROM SKU_DATA;
2. 20
Disa rreshta nga një Tabelë
SELECT
FROM
WHERE
2. 21
*
SKU_DATA
Department = 'Water Sports';
Kolona dhe rreshta specifike nga
një Tabelë
SELECT
SKU_Description, Buyer
FROM
SKU_DATA
WHERE Department = 'Climbing';
2. 22
Using MS Access
2. 23
Using MS Access (Continued)
2. 24
Using MS Access (Continued)
2. 25
Using MS Access - Results
2. 26
Using MS SQL Server
[SQL Query Analyzer]
2. 27
Using Oracle
[SQL*Plus]
2. 28
Using Oracle
[Quest Software’s TOAD]
2. 29
Using MySQL
[MySQL Command Line Client]
2. 30
Using MySQL
[MySQL Query Browser]
2. 31
Sortimi i rezultateve: ORDER BY
SELECT
*
FROM
ORDER_ITEM
ORDER BY OrderNumber, Price;
2. 32
Dy lloje sortimesh:
Rritës edhe Rënës
SELECT
FROM
ORDER BY
*
ORDER_ITEM
Price DESC, OrderNumber ASC;
Shënim: Nëse nuk specifikohet ndonjëra nga komandat ASC ose
DESC, sortimi do të bëhet sipas ASC.
2. 33
Opcionet e komandës WHERE
: AND
SELECT
*
FROM
SKU_DATA
WHERE Department = 'Water Sports'
AND Buyer = 'Nancy Meyers';
2. 34
Opcionet e komandës WHERE
: OR
SELECT
*
FROM
SKU_DATA
WHERE Department = 'Camping'
OR Department = 'Climbing';
2. 35
Opcionet e komandës WHERE
:- IN
SELECT
*
FROM
SKU_DATA
WHEREBuyer IN ('Nancy Meyers',
'Cindy Lo', 'Jerry Martin');
2. 36
Opcionet e komandës WHERE:
NOT IN
SELECT
*
FROM
SKU_DATA
WHERE Buyer NOT IN ('Nancy Meyers',
'Cindy Lo', 'Jerry Martin');
2. 37
Opcionet e komandës WHERE:
Intervale me BETWEEN
SELECT
*
FROM
ORDER_ITEM
WHERE ExtendedPrice
BETWEEN 100 AND 200;
2. 38
Opcionet e komandës WHERE:
Intervale me simbole
matematikore
SELECT
*
FROM
ORDER_ITEM
WHERE ExtendedPrice >= 100
AND
ExtendedPrice <= 200;
2. 39
Opcionet e komandës WHERE:
LIKE 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)
–?
–*
2. 40
= Saktësisht një karakter
= Bashkësi me një apo më shumë karaktere
Opcionet e komandës WHERE:
LIKE edhe Wildcards
SELECT
*
FROM SKU_DATA
WHERE
Buyer LIKE 'Pete%';
2. 41
Opcionet e komandës WHERE:
LIKE edhe Wildcards
SELECT
FROM
WHERE
2. 42
*
SKU_DATA
SKU_Description LIKE '%Tent%';
Opcionet e komandës WHERE:
LIKE edhe Wildcards
SELECT
*
FROM SKU_DATA
WHERE
SKU LIKE '%2__';
2. 43
Funksionet e integruara të SQL
Ezistojnë pesë funksione të integruara
të SQL:
–
–
–
–
–
2. 44
COUNT
SUM
AVG
MIN
MAX
Funksionet e integruara të SQL
SELECT
SUM (ExtendedPrice)
AS Order3000Sum
FROM ORDER_ITEM
WHERE
OrderNumber = 3000;
2. 45
Funksionet e integruara të SQL
SELECT SUM (ExtendedPrice) AS OrderItemSum,
AVG (ExtendedPrice) AS OrderItemAvg,
MIN (ExtendedPrice) AS OrderItemMin,
MAX (ExtendedPrice) AS OrderItemMax
FROM
ORDER_ITEM;
2. 46
Funksionet e integruara të SQL
SELECT
COUNT(*) AS NumRows
FROM ORDER_ITEM;
2. 47
Funksionet e integruara të SQL
SELECT
COUNT
(DISTINCT Department)
AS DeptCount
FROM SKU_DATA;
2. 48
Aritmetika në lomandën SELECT
SELECT
Quantity * Price AS EP,
ExtendedPrice
FROM ORDER_ITEM;
2. 49
String Funksione në SELECT
komandën
SELECT
DISTINCT RTRIM (Buyer)
+ ' in ' + RTRIM (Department)
AS Sponsor
FROM
SKU_DATA;
2. 50
Komanda GROUP BY
SELECT
Department, Buyer,
COUNT(*) AS
Dept_Buyer_SKU_Count
FROM
SKU_DATA
GROUP BY
Department, Buyer;
2. 51
Komanda 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.
2. 52
Komanda GROUP BY (Vazhdim)
SELECT
FROM
WHERE
GROUP BY
ORDER BY
2. 53
Department, COUNT(*) AS
Dept_SKU_Count
SKU_DATA
SKU <> 302000
Department
Dept_SKU_Count;
Komanda GROUP BY (Vazhdim)
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
2. 54
Department, COUNT(*) AS
Dept_SKU_Count
SKU_DATA
SKU <> 302000
Department
COUNT (*) > 1
Dept_SKU_Count;
Nxjerrja 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.
2. 55
Nxjerrja e të dhënave nga më
shumë tabela: Nënpyetësorët
SELECT Buyer
FROM
SKU_DATA
WHERE
SKU IN
(SELECT SKU
FROM
WHERE
2. 56
ORDER_ITEM
OrderNumber IN
(SELECT OrderNumber
FROM
RETAIL_ORDER
WHERE
OrderMonth = 'January'
AND
OrderYear = 2004));
Nxjerrja e të dhënave nga më
shumë tabela: Joins
SELECT
FROM
WHERE
2. 57
Buyer, ExtendedPrice
SKU_DATA, ORDER_ITEM
SKU_DATA.SKU = ORDER_ITEM.SKU;
Nxjerrja e të dhënave nga më
shumë tabela: Joins
SELECT
FROM
WHERE
GROUP BY
ORDER BY
2. 58
Buyer, SUM(ExtendedPrice)
AS BuyerRevenue
SKU_DATA, ORDER_ITEM
SKU_DATA.SKU = ORDER_ITEM.SKU
Buyer
BuyerRevenue DESC;
Nxjerrja e të dhënave nga më
shumë tabela: Joins
SELECT
FROM
WHERE
AND
2. 59
Buyer, ExtendedPrice, OrderMonth
SKU_DATA, ORDER_ITEM, RETAIL_ORDER
SKU_DATA.SKU = ORDER_ITEM.SKU
ORDER_ITEM.OrderNumber =
RETAIL_ORDER.OrderNumber;
Në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.
2. 60