Professional Documents
Culture Documents
SQL Urdheresat PDF
SQL Urdheresat PDF
IT Software Developer
Prishtine 2001,2002
Verzioni : 1.0
Structured
Query
Language
Index
DRAFT 1.1
00 - Permbajtja
01 - Hyrja
02 - SELECT
03 - WHERE
04 - INSERT INTO
05 - UPDATE
06 - ORDERED BY
07 - AND & OR
08 - BETWEEN .. AND
09 - Aliases
10 - JOIN
11 - CREATE
12 - ALTER
13 - Agregate Functions
14 - GROUP BY
15 - SELECT INTO
Valon Hoti
SQL eshte nje gjuhe standarde programuese e kompjutereve per qasje dhe manipulim me bazat
e te dhenave
SQL
SQL
SQL
SQL
SQL
SQL
SQL
SQL
SQL
Mbiemri
Adresa
Qyteti
Valon
Hoti
7 Shtatori
Mitrovice
Gzim
Ademi
Shipol
Mitrovice
Bajram
Fejza
Arsim Jashari
Prishtine
Tabela siq shihet permban tre rekorde (nje per secilin person) dhe kater kolona (Mbiemri, Emri, Adresa,
dhe Qyteti).
SQL Pytesoret
Me SQL pytesoret,ne mund a te arrijme deri te rezultatet e deshiruar te cilat na nevojiten.
Pytesori si kjo:
Komanda - SELECT
Komanda SELECT perdoret per te I selektuar shenimet ne tabele. Rezultati tabular eshte I ruajtur
ne tabelat rezultuese (quhet pjesa-rezultat).
Sintaksa:
SELECT emrin_e_kolenes-ave
FROM emri_tabeles
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Ademi
Gzim
Mitrovice
Hasani
Mimoza
2 Korriku no.37
Prishtine
Emri
Hoti
Valon
Ademi
Gzim
Hasani
Mimoza
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Ademi
Gzim
Mitrovice
Hasani
Mimoza
2 Korriku no.37
Prishtine
Rezultati rang
Rezultati prej SQL pyetesoreve eshte I ruajtur ne rang-rezultat. Shumica e sistemeve softuerike te
bazave te dhenave lejon navigimin neper rang-rezultate me funksionet te programuara si p.sh.:
Move-To-First-Record(shko ne fillim te rekordit te pare), Get-Record-Content(lexo permbajtjen e
rekordit), Move-To-Next-Record(shko te tjetri record me radhe), etj.
Per te mesuar rreth ketyre funksioneve se si thirren nga gjuhet programuese e kemi ne tutoriale te
programimit.
Sintaksa:
SELECT DISTINCT emri_kolones-ave
FROM emri_tabeles
Kompanite
NumriPorosise
IT Department
3412
BRK
2312
IT Department
4678
6798
Rezultati eshte :
Kompanite
IT Department
BRK
IT Department
Shtepia Mallrave Lux
Vereni kete se "IT Department" eshte listuar dy here :
Keshtu qe te selektohen vetem vlera e ndryshme prej kolones "Kompanite" ne do te perdorim
komanden SELECT DISTINCT siq eshte kjo qe vijon :
Klauzula WHERE
Per te selektuar shenimet nga baza e te dhenave nga nje tabele ne baze te nje kushti te caktuar
,atehere e shtojm klauzulen WHERE gjate perdorimit te komandes SELECT .
Sintaksa
SELECT emri_kolones FROM emri_tabeles
WHERE emri_kolones operatori vlera
Me klauzulen WHERE ,mund te perdoren keto operator
Operatori
Pershkrimi
Barbarte
<>
Jo Barabarte
>
Me e madhe se
<
Me e vogel se
>=
<=
BETWEEN
Ne mes te rangut
LIKE
Emri
Adresa
Qyteti
Viti
Hoti
Valon
7 Shtatori no.12
Mitrovice
1951
Ademi
Gzim
Shipol no.2
Mitrovice
1978
Doroci
Adnan
Shupkofc no.1
Prishtine
1980
Krasniqi
Ismajl
Prishtine
1960
Rezultati do te jete
Mbiemri
Emri
Adresa
Qyteti
Viti
Hoti
Valon
7 Shtatori no.12
Mitrovice
1951
Ademi
Gzim
Shipol no.2
Mitrovice
1978
Perdorimi I thojzave
Vereni se ne kemi perdorur thojza te thjeshta te nje fishte .
SQL per vlerat text perdore thojza te thjeshta (shume sisteme te bazave te dhenave mund te
perdorin edhe thojza te dyfishta ). Ndersa vlerat numerike nuk kan nevoje te futen ne thojza.
Per vlerat text:
Mire :
SELECT * FROM Personet WHERE Emri='Valon'
Keq:
SELECT * FROM Personet WHERE Emri=Valon
Per vlera numerike:
Mire:
SELECT * FROM Personet WHERE Viti>1965
Keq:
SELECT * FROM Personet WHERE Viti>'1965'
kushti LIKE
Kushti LIKE perdoret per te kerkuar dicka te perafert .
Sintaksa
SELECT emri_kolones FROM emri_tabeles
WHERE emri_kolones LIKE perafersishte
Shenja "%" mund te perdoret si gjoker (per shenjat qe mungojn perpara apo pas shenimit te
perafert)
perdorimi LIKE
Perdorimi i kesaj komandet kthen si rezulat emrat qe fillojn me 'O':
Sintaksa
INSERT INTO emri_tabeles
VALUES (vlera1, vlera2,....)
Ju gjithesesi mund te tregoni se ku deshironi te vendosni vlerat:
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Jonuzi
Ilir
Zhabari no.4
Mitrovice
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Jonuzi
Ilir
Zhabari no.4
Mitrovice
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Jonuzi
Ilir
Zhabari no.4
Mitrovice
Arifi
Soliteri tjegullorja
Komanda UPDATE
Komanda UPDATE perdoret per te modifikuar shenimet
Sintaksa
UPDATE emri_tabels
SET emri_kolones = vlera_re
WHERE emri_kolones = vlera_caktuar
Tabela Personet:
Mbiemri
Emri
Adresa
Qyeti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Arifi
Soliteri tjegullorja
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Arifi
Aferdita
Soliteri tjegullorja
UPDATE Personet
SET Adresa = 'Soliteri kalter ', Qyteti = 'Prishtine'
WHERE Mbiemri = 'Arifi'
Rezultaton tabelen si vijon:
Mbiemri
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Arifi
Aferdita
Soliteri kalter
Prishtine
Komanda DELETE
Komanda Delete perdoret per te fshire rreshtin
Sintaksa
DELETE FROM emri_tabeles
WHERE emri_kolones = vlera_caktuar
Tabela Personet:
Mbiemri
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Milaimi
Milot
2 Korriku
Mitrovice
Fshirja e rreshtit
Deshirojm te fshijme rreshtin ne te cilen eshte Milot Milaimi:
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Renditja e rreshtave
Klauzula ORDER BY perdoret per rrenditjen ose sortimin e tabeles apo me saktesisht te kolones
Porosite:
Kompanite
NumriPorosise
BRK
3412
Ardi
5678
IT Department
2312
IT Department
6798
Shembull
Nese deshirojme te i paraqesim kompani te renditura sipa alfabetit:
NumriPorosise
Ardi
5678
BRK
3412
IT Department
6798
IT Department
2312
Shembull 2:
Te paraqiten Kompanite sipas renditje me alphabet dhe numrit te porosive ne renditje numerike:
NumriPorosise
Ardi
5678
BRK
3412
IT Department
2312
IT Department
6798
Shembull 3
Te paraqitet renditja reverze e renditjes alfabetike
NumriPorosise
IT Department
6798
IT Department
2312
BRK
3412
Ardi
5678
Shembull 4
Te paraqitet renditja reverze e renditjes alfabetike dhe numerike ne rregull:
NumriPorosise
IT Department
2312
IT Department
6798
BRK
3412
Ardi
5678
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Ademi
Gzim
Shipol no.4
Mitrovice
Arifi
Aferdita
Mitrovice
Jonuzi
Ilir
Zhabar no.4
Mitrovice
Doroci
Adnan
Shupkofc no.1
Mitrovice
Shembull
Perdorimi i operatorit AND per te paraqitur te gjithe personat qe e kan emrin "Adnan",si dhe qe e
kan mbiemrin "Doroci":
Emri
Adresa
Qyteti
Doroci
Adnan
Shupkofc no.1
Mitrovice
Shembull 2
Perdorimi i operatorit OR secilin person qe ka emrin "Tove", ose mbiemrin "Hoti":
Emri
Adresa
Qyteti
Doroci
Adnan
Shupkofc no.1
Mitrovice
Hoti
Valon
7 Shtatori no.12
Mitrovice
Shembull
Ju gjithashtu munde ti kombinoni operatoret AND dhe OR (duke i perdorur kllapat per format
komplekse te operacioneve):
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Hasani
Mimoza
Mitrovice
Siqeva
Florentina
Mitrovice
Hoxha
Mit Hat
Mitrovice
Morina
Nexhat
Mitrovice
Arifi
Luljeta
Tjegullorja 8/2
Mitrovice
Shembull 1
Per te I paraqitur ne menyre alfabetike personet prej(duke I perfshi edhe ata) "Hoti" dhe
eksluzivisht "Hoxha", perdoren komandat e SQL siq vijojn me poshte :
Emri
Adresa
Qyteti
Hoti
Valon
7 Shtatori no.12
Mitrovice
Hasani
Mimoza
Mitrovice
Siqeva
Florentina
Mitrovice
Hoxha
Mit Hat
Mitrovice
Shembull 2
Per te e paraqitur listen jasht rangut ne mes te Hoti dhe Hoxha
Emri
Adresa
Qyteti
Morina
Nexhat
Mitrovice
Arifi
Luljeta
Tjegullorja 8/2
Mitrovice
Ne SQL mund te perdorem aliaset pseudonimet e tabelave {te cilave mund te ju japim
cfaredo emra per nga emrat e tyre origjinale}
Emri
Adresa
Qyteti
Doroci
Adnan
Shupkofc no.2
Mitrovice
Ademi
Gzim
Shipol no.4
Mitrovice
Arifi
Aferdita
Tjegullorja 8/2
Mitrovice
EmriPersonal
Doroci
Adnan
Ademi
Gzim
Arifi
Aferdita
Emri
Adresa
Qyteti
Doroci
Adnan
Shupkofc no.1
Mitrovice
Ademi
Gzim
Shipol no.4
Mitrovice
Arifi
Aferdita
Tjegullorja 8/2
Mitrovice
Emri
Doroci
Adnan
Ademi
Gzim
Arifi
Aferdita
Puntoret:
Puntori_ID
Emri
01
Hoti, Valon
02
Ademi,Gzim
03
Arifi,Luljeta
04
Jonuzi,Ilir
Porosite:
Prodh_ID
Produket
Puntori_ID
234
Printeri
01
657
Tabela
03
865
Karrige
03
Referimi te dy tabelat
Ne munde te i lexojme shenimet prej dy tabelave duke u referuar ne te dy tabelat , keshtu:
Shembull
Kush ,cka ka marre?
Produktet
Hoti,Valon
Printeri
Arifi,Luljeta
Tabela
Arifi,Luljeta
Karrige
Shembull
Kush ka marre printerin?
SELECT Puntoret.Emri
FROM Puntoret, Porosite
WHERE Puntoret.Puntori_ID=Porosite.Puntori_ID
AND Porosite.Produktet='Printeri'
Rezulton
Emri
Hoti,Valon
Produktet
Hoti,Valon
Printeri
Arifi,Luljeta
Tabela
Arifi,Luljeta
Karrige
Produktet
Hoti,Valon
Printeri
Ademi,Gzim
Arifi,Luljeta
Tabele
Arifi,Luljeta
Karrige
Jonuzi,Ilir
Fjala rezervuar RIGHT JOIN te gjitha rreshtat nga tabela e dyte(Porosite), vetem nese ato nuk
perputhen me rreshtat e tabeles (Puntoret). Nese ka ndonje rreshte ne tabelen Porosite dhe nuk
perputhet me ate ne tabelen Puntoret, ato rreshta gjithashtu do te listohen.
Rezulton tabelen
Emri
Produkti
Hoti,Valon
Printeri
Arifi,Luljeta
Tabele
Arifi,Luljeta
Karrige
Shembull
Kush e ka marr printerin?
SELECT Puntoret.Emri
FROM Puntoret
INNER JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID
WHERE Porosite.Produkti = 'Printer'
Rezulton
Emri
Hoti,Valon
Krijimi i tabeles
Per te krijuar tabele perdorim si me poshte:
Tipi I te dhenave tregon se cfare shenimesh do te mbaj kolona. Tabela si vijon tregon se cfare
tipesh me se shumti perdoren ne SQL:
Tipi I te dhenave
Pershkrimi
integer(madhesia)
int(madhesia)
smallint(madhesia)
tinyint(madhesia)
decimal(madhesia,d)
numeric(madhesia,d)
char(madhesia)
varchar(madhesia)
date(yyyymmdd)
Krijimi i indekseve
Indekset krijohen ne tabele per arsye qe ti gjej rreshta ne tabele shume me shpejt. Eshte e
mundeshme qe te krijohen indekset ne nje a me shume kolonat te tabeles, dhe secili indeks mund
te kete emerin e vet. Ata qe I perdorin nuk munde te I shohin indekset por mund te I perdorin per
ta shpejtuar punen gjate punimit me pyetesoret
Verejte: Ndryshimi freskimi shenimve ne tabelen me indeksa merr kohe me shume se sa tabela
pa indeksa, kjo eshte per arsye se ndrrimi behet ne te gjitha indekset. Keshtu , te krijohet indekset
veten ne ato kolona ne te cilen do te behet kerkesat per kriteriume.
Indeksi unik
Krijimi i indekseve unike. Indeksi unik nenkupton qe dy rreshta nuk munde te kene vler te njejte.
Indeksi thjeshte
Krijimi I nje indeksi te thjeshte. Kur perdorimi I fjales se rezervuar UNIQUE nuk eshte bere,
indeksat me vlerat te perseritura jan te lejuara.
Shembull
Krijimi i indeksit te thjesht, emertuar "PersonIndex", ne fushen Mbiemri ne tabelen Personet:
Fshirja indeksit
Ju mund te fshini indekset permes komandes DROP.
Ndryshimi i tabeles
Komanda ALTER TABLE perdoret per shtimin apo largimin e kolonave nga tabela.
Personet:
Mbiemri
Emri
Adresa
Hoti
Valon
7 Shtatori no.12
Shembull
Te shtohet kolona me emrin "Qyteti" ne tabelen "Personet":
Emri
Adresa
Hoti
Valon
7 Shtatori no.12
Qyteti
Shembull
Te largohet kolona "Adresa" nga tabela "Personet":
Emri
Hoti
Valon
Qyteti
Sintaksa e funksioneve
Sintaksa e funksioneve te ndertuara ne SQL eshte:
Tipet e funksioneve
Ka disa tipe themelore te funksioneve ne SQL. Tipet themelore jane siq vijon:
Funksionet Agregate
Funksionet Skalare
Funksionet Agregate
Funksionet Agregate punojne me vlera te kolektuara , por si rezultat e kthejne vetem nje vlere.
Verejtej: Nese perdoret me shume artikuj tjere net abele permes komandes SELECT, atehere
SELECT duhe te kete klauzulen GROUP BY!!
Tabela "Personet"
Emri
Mosha
Hoti,Valon
34
Beqiri,Agim
45
Dauti,Bekim
19
Description
AVG(emri_kolones)
COUNT(emri_kolones)
COUNT(*)
FIRST(emri_kolones)
LAST(emri_kolones)
MAX(emri_kolones)
MIN(emri_kolones)
STDEV(emri_kolones)
STDEVP(emri_kolones)
SUM(emri_kolones)
VAR(emri_kolones)
VARP(emri_kolones)
Pershkrimi
AVG(emri_kolones)
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(emri_kolones)
COUN(*)
COUNT(DISTINC emri_kolones)
FIRST(emri_kolones)
LAST(emri_kolones)
MAX(emri_kolones)
MIN(emri_kolones)
STDEV(emri_kolones)
STDEVP(emri_kolones)
SUM(emri_kolones)
VAR(emri_kolones)
VARP(emri_kolones)
Funksionet Skalare
Funksionet skalare jane funksionet qe punojn me nje vlere te caktuar, dhe kthejn rezultat bazuar
nga vlera hyres.
Pershkrimi
UCASE(c)
LCASE(c)
MID(c,start[,end])
LEN(c)
INSTR(c)
LEFT(c,number_of_char)
RIGHT(c,number_of_char)
ROUND(c,decimals)
MOD(x,y)
NOW()
FORMAT(c,format)
DATEDIFF(d,date1,date2)
GROUP BY...
GROUP BY... eshte shtuar ne SQL sepse funksionet agregate (sikurse SUM) kthen vlera aggregate
nga kolona sa here te thirret , si dhe pa funksionin GROUP BY eshte e pa mundur te gjendet
shuma per secilin grup individual per vlerat e kolones.
Sintaksa e funksionit GROUP BY eshte:
Shembull GROUP BY
Tabela "Shitjet":
Kompanite
Sasia
IT Department
5500
Ardi
4500
IT Department
7100
SUM(Sasia)
IT Department
17100
Ardi
17100
IT Department
17100
Rezultati permbi eshte I pakuptueshem dhe nuk eshte me pjese e funksioneve agregate.Prandaj
duhet te perdoret klauzula GROUP BY per te zgjedhur kete problem:
SUM(Sasia)
IT Department
12600
Ardi
4500
HAVING...
HAVING... i eshte shtuar SQL sepse fjala e rezervuar WHERE nuk perdoret gjate thirrjeve te
funksionve agregate (sikurse SUM), si dhe pa fjalen e rezervuar HAVING... eshte e pamundur qe te
thirren kushtet per rezultat.
Sintaksa per funksionin HAVING eshte:
Sasia
IT Department
5500
Ardi
4500
IT Department
7100
SUM(Sasia)
IT Department
12600
Sintaksa
SELECT emri_kolone(ave) INTO tabela_e_re [IN bazen_e_te_dhenave_tjeter]
FROM burimit
SELECT Puntoret.Emri,Porosite.Produkti
INTO Porosite_e_puntoreve_kopja
FROM Puntoret
INNER JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID