Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

Valon Hoti

IT Software Developer
Prishtine 2001,2002
Verzioni : 1.0

Structured
Query
Language

DRAFT 1.1 ne shqyrtim 15.Janar.2002

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 Hapat Themelore


SQL Hyrje
Pershkrimi se cka eshte SQL dhe si mund te perdoret
SQL SELECT
si te perdoret komanda SELECT per selektimin e te dhenave nga tabelat ne SQL.
SQL WHERE
Si te perdoret klauzula WHERE per percaktimin e kriteriumeve ne tabele
SQL INSERT INTO
Si te perdoret komanda INSERT INTO qe te vendosen rreshtat e reja ne tabel
SQL UPDATE
Si te perdoret komanda UPDATE per te ndrruar shenimet ose rreshtin ne tabel.
SQL DELETE
How to use the DELETE statement to delete rows in a table.

SQL Hapat e avancuara


SQL ORDER BY
Si te perdoret komanda ORDER BY te cilat e bejne renditjen sipas nje definicionit te caktuar
SQL AND & OR
Si te perdoren AND dhe OR ti therrasin dy a me shume kriteriume ne komanden WHERE .
SQL BETWEEN...AND
Si te perdoret BETWEEN....AND per te gjetur shenimet e caktuar ne nje rang.
SQL Aliases
Si te perdoren aliaset per kolona dhe tabela
SQL JOIN
Si te selektohen shenimet nga me shume se nje tabel.
SQL CREATE
Si te krijohen bazat e te dhenave ,tabelat si dhe si te fshihen ato.
SQL ALTER TABLE
Si te perdoret komanda ALTER TABLE per te shtuar ose larguar kolonat ne nje table ku ato ekzistojn
SQL Functions
Si te perdoren funksionet e ndertuara ne SQL.
SQL GROUP BY
Si te perdoret funksioni GROUP BY ne SQL.
SQL SELECT INTO
Si te perdoret komanda SELECT INTO qe te krijohen kopjet reserve te tabelave

SQL eshte nje gjuhe standarde programuese e kompjutereve per qasje dhe manipulim me bazat
e te dhenave

Cka eshte SQL?

SQL
SQL
SQL
SQL
SQL
SQL
SQL
SQL
SQL

rrjedh Structured Query Language


lejon qe te ju qaseni bazes se te dhenave
eshte nje standard I gjuheve te kompjutereve - ANSI
mund te I ekzukutoj pyetesoret e bazave te shenimeve
mund te I lexoj shenimet nga bazat e te dhenave
mund te vendos rekorde te reja ne bazen e te dhenave
mund te I fshij te rekordet nga baza e te dhenave
mund te ri-ndryshoj te dhenat qe jan ne bazat e te dhenave
eshte shume e lehte per tu mesuar

SQL eshte nje Standard - POR....


SQL eshte nje ANSI (American National Standards Institute) standard I gjuheve kopmjuterike per qasjen
dhe manipulimin me sistemet e bazave te dhenave. Komandat e SQL perdoren per leximin dhe
ndryshimin e shenimeve ne bazat e te dhenave. SQL punon me bazat e te dhenave sikurs te perogrameve
siq jan MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase, e tjera.
Fatkeqesisht, jane disa verzionet te ndryshme te gjuhes SQL, por per te qen kompatibil me standardin
ANSI, ata duhet te perkrahin fjalet njejta te rezervuara per SQL siq jan SELECT, UPDATE, DELETE,
INSERT, WHERE, edhe te tjera.
Verejtje: Shume programe te baza te dhenave SQL gjithashtu kan ekstenzionet e tyre prioritare si
shtojca ne standardin e SQL.

SQL Tabelat e bazave te dhenave


Nje baze e te dhenave shpesh permban 1 ose me shume tabela. Secila table identifikohet me emrin e
tij(p.sh.. "Personet" or "Porosit"). Tabelat permbajne rekorde(reshta) me shenime.
Ketu eshte nje shembull tabela qe quhet "Personet"
Emri

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:

SELECT Mbiemri FROM Personet


Na kthen rezultatin si kjo qe vijon:
Mbiemri
Hoti
Ademi
Fejza
Verejtje: Disa sisteme te bazave te dhenave kerkojne qe ne fund te komandave te ju vendoset presja
ose pikepresja.Ne kete tutorial nuk kemi vendosur presje ose pikepresje.

SQL - Data Manipulation Language (DML)-Gjuha per manipulimin me te dhenave


SQL (Structured Query Language) eshte nje sintakse per ekzukutimin e pyetesoreve. Por SQL gjuhet
permbajne sintaksen per ndrrim, vendosje, dhe fshirje te recordeve.
Keto komanda se bashku e formojne Data Manipulation Language (DML) pjese e SQL

SELECT ekstrakton te dhenat nga tabela e bazave te dhenave


UPDATE ndryshon te dhenat ne tabelat e bazave te dhenave
DELETE fshin te dhenat nga tabelat ne baza te dhenave
INSERT INTO vendos te dhena te reja ne tabela te bazave te dhenave

SQL Data Definition Language (DDL) Gjuha per definimin e shenimeve


Data Definition Language (DDL) eshte pjese e SQL e cila lejon tabelat e bazes se te dhenave te jene te
krijuara apo te fshira. Ne gjithashtu munde te definojme indekset(qeleset), te cilat veqojn lidhjen ne mes
te tabelave si dhe imponojne permbajtjen ne mes tabelave
Komandat kryesore qe me shumti nevojiten ne DDL jane keto SQL komanda:

CREATE TABLE krijon nje tabele te re ne bazen e te dhenave


ALTER TABLE - nderprerjet (per ndryshime) tabelave ne bazen e te dhenave
DROP TABLE fshin tabelen nga baza e te dhenave
CREATE INDEX krijon nje indeks (qelesin kerkues)
DROP INDEX fshin indeksin

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

Selektimi i disa kolonave


Per te I selektuar kolonat me emra "Mbiemri" dhe "Emri", perdoret komanda SELECT sikurse qe
eshte kjo si vijon:

SELECT Mbiemri,Emri FROM Personet


Tabela "Personet"
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Ademi

Gzim

Shipol shpija e dyte

Mitrovice

Hasani

Mimoza

2 Korriku no.37

Prishtine

Resulton ne tabelen e re siq eshte kjo me poshte


Mbiemri

Emri

Hoti

Valon

Ademi

Gzim

Hasani

Mimoza

Selektimi I tere kolonave


Per te selektuar tere kolonat nga tabela "Personet" perdorim simbolin * ne vend te emrave te
kolonave siq vijon me poshte :

SELECT * FROM Personet


Resultati eshte siq vijon
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Ademi

Gzim

Shipol shpija e dyte

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.

Pikepresja ne komandat e SQL ?


Pikepresja eshte menyra standarde per te ndare secilin komande te SQL ne sistemet e bazave te
dhenave duke lejuar ne ate menyre te ekzekutohen me shume se nje komande e SQL ne nje
renditje te nje pas njeshme ne server.
Disa mesime perfundojme me pikepresje te nje pas njeshme te komandave te SQL.
A eshte e nevojshme a jo? Nese perdorim bazat te dhenave sikurse MS Access apo Ms Sql Server
nuk ka nevoj per secilen pikepresje ne secilen komand te SQL , por disa baza te dhenave e shtytin
me force qe te perdoret ajo gjithesesi.

Komanda SELECT DISTINCT


Fjala e rezervuar DISTINCT perdoret per te kthyer vetem vlerat qe ndryshojne.
Me komanden SELECT I kthen informacionet qe I ka tabela . Por nese deshirojm te selektojme
vetem tabelat kur prej tyre presim rezultat te filtruar me vetem nga nje vlere te ndryshme ?
Rezultati eshte vetem vlerat e pa perseritura
Me SQL, krejt cka nevojitet eshte te shtojme fjalen e rezervuar DISTINCT pas komandes SELECT :

Sintaksa:
SELECT DISTINCT emri_kolones-ave
FROM emri_tabeles

Perdorimi I fjales se rezervuar DISTINCT


Per te selektuar te gjitha vlerat nga tabela qe quhet Kompanite ne do te perdorim komanden
SELECT ne kete menyre:

SELECT Kompanite FROM Porosite


Tabela Porosite

Kompanite

NumriPorosise

IT Department

3412

BRK

2312

IT Department

4678

Shtepia Mallrave Lux

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 :

SELECT DISTINCT Kompanite FROM Porosite


Rezultati do te jete:
Kompanite
IT Department
BRK
Shtepia Mallrave Lux
Tash e shohim se "IT Department" eshte listuar vetem njehere

Klauzula WHERE per te caktuar kriterin gjate selektimit

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

>=

Me e madhe ose e barabart

<=

Me e vogel ose e barabart

BETWEEN

Ne mes te rangut

LIKE

Sipas nje kushti te per afert

Verejte: Ne disa verzione te SQL operatori <> mund te shkruhet si !=

Perdorimi I klauzules WHERE


Per te selektuar personet te cilet jetojn ne qytetin "Mitrovica", ne ja shtojme klauzulen WHERE gjate
perdorimit te komandes SELECT :

SELECT * FROM Personet


WHERE Qyteti='Mitrovice'
Tabela Personet"
Mbiemri

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

Xhamia Haxhi Veselit no.1

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':

SELECT * FROM Personet


WHERE Emri LIKE 'O%'

Perdorimi i kesaj komandet kthen si rezulat emrat qe mbarojne me 'a':

SELECT * FROM Personet


WHERE Emri LIKE '%a'

Perdorimi i kesaj komandet kthen si rezulat emrat qe permbajne 'la':

SELECT * FROM Personet


WHERE Emri LIKE '%la%'

Komanda INSERT INTO


Komanda INSERT INTO perdoret per te shtuar rreshta te reja net abele.

Sintaksa
INSERT INTO emri_tabeles
VALUES (vlera1, vlera2,....)
Ju gjithesesi mund te tregoni se ku deshironi te vendosni vlerat:

INSERT INTO emri_tabeles(kolona1, kolona2,...)


VALUES (vlera1, vlera2,....)

Vendosja e nje rreshti te ri


Ne tabelen "Personet" :
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Dhe nese e shenojme komanden si me poshte

INSERT INTO Personet


VALUES ('Jonuzi', 'Ilir', 'Zhabari no.4', 'Mitrovice')
Do te kemi si rezultat:
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Jonuzi

Ilir

Zhabari no.4

Mitrovice

Vendosja e shenimit ne kolone te caktuar


Tabela "Personet" :
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Jonuzi

Ilir

Zhabari no.4

Mitrovice

Dhe nese e shenojm komanden siq vijon :

INSERT INTO Personet (Mbiemri, Adresa)


VALUES ('Arifi', 'Soliteri tjegullorja')
Do te kemi rezultat
Mbiemri

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

Modifikimi i shenimit ne kolone


Ne deshirojme te vendosim emrin e aty ku gjinedet mbiemri "Arifi":

UPDATE Personet SET Emri = 'Aferdita'


WHERE Mbiemri = 'Arifi'
Rezultaton tabelen:
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Arifi

Aferdita

Soliteri tjegullorja

Modifikimi i disa kolonoave pernjehere


Nese deshirojme te shtojme emrin e qytetit dhe te ndrrojme emrin e adreses:

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:

DELETE FROM Personet WHERE Mbiemri = 'Milaimi'


Rezultati do te jete :
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Fshirja e te gjitha rreshtave ne tabele


Eshte e mundeshme te fshihen te gjitha rreshtat pa e fshire tabelen fare. Kjo do te thot qe atributet
,indekset,struktura do te jete e pa prekur:

DELETE FROM emri_tabeles


ose
DELETE * FROM emri_tabeles

Renditja perms fjale se rezervuar ORDER BY

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:

SELECT Kompanite, NumriPorosise FROM Porosite


ORDER BY Kompanite
Rezulton tabelen:
Kompanite

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:

SELECT Kompanite, NumriPorosise FROM Porosite


ORDER BY Kompanite, NumriPorosise
Resulton tabelen qe vijon:
Kompanite

NumriPorosise

Ardi

5678

BRK

3412

IT Department

2312

IT Department

6798

Shembull 3
Te paraqitet renditja reverze e renditjes alfabetike

SELECT Kompanite, NumriPorosise FROM Porosite


ORDER BY Kompanite DESC
Rezulton tabelen:
Kompanite

NumriPorosise

IT Department

6798

IT Department

2312

BRK

3412

Ardi

5678

Shembull 4
Te paraqitet renditja reverze e renditjes alfabetike dhe numerike ne rregull:

SELECT Kompanite, NumriPorosises FROM Porosite


ORDER BY Kompanite DESC, NumriPorosise ASC
Rezulton tabelen:
Kompanite

NumriPorosise

IT Department

2312

IT Department

6798

BRK

3412

Ardi

5678

Operatore AND dhe OR


AND dhe OR bashkojn dy apo me shume kushte ne klauzulen WHERE .
Operatori AND paraqet rreshta vetem nese te gjitha kushte e listimit jane te plotesuar. Ndersa
operatori OR paraqet rreshtat vetem nese ndonje prej kushteve te listimit jan te plotesuar.

Tabela Origjinale (Qe perdoret si shembull)


Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Ademi

Gzim

Shipol no.4

Mitrovice

Arifi

Aferdita

Soliteri Tjegullorja 8/2

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":

SELECT * FROM Personet


WHERE Emri='Adnan'
AND Mbiemri='Doroci'
Do te na paraqitet tabela :
Mbiemri

Emri

Adresa

Qyteti

Doroci

Adnan

Shupkofc no.1

Mitrovice

Shembull 2
Perdorimi i operatorit OR secilin person qe ka emrin "Tove", ose mbiemrin "Hoti":

SELECT * FROM Personet


WHERE Emri='Adnan'
OR Mbiemri='Hoti'
Rezultati:
Mbiemri

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):

SELECT * FROM Personet WHERE


(Emri='Adnan' OR Emri='Valon')
AND LastName='Hoti'
Rezulton:
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Operatoret BETWEEN ... AND


Operatoret BETWEEN ... AND selektojn nje range te shenimeve ne mes te dy vlerave te caktuara.
Keto vlera mund te jene numra,tekst ,data.

SELECT emri_kolones FROM emri_tabeles


WHERE emri_kolones
BETWEEN vlera1 AND vlera2

Tabela origjinale qe perdoret ne shembull eshte :


Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Hasani

Mimoza

Xhamia Haxhi Veselit no.5

Mitrovice

Siqeva

Florentina

Kodra Minatoreve no.4

Mitrovice

Hoxha

Mit Hat

Tregu Gjelbert no.5

Mitrovice

Morina

Nexhat

Tregu Mbyllur no.4

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 :

SELECT * FROM Personet WHERE Mbiemri


BETWEEN 'Hoti' AND 'Hoxha'
Rezulton:
Mbiemri

Emri

Adresa

Qyteti

Hoti

Valon

7 Shtatori no.12

Mitrovice

Hasani

Mimoza

Xhamia Haxhi Veselit no.5

Mitrovice

Siqeva

Florentina

Kodra Monatoreve no.4

Mitrovice

Hoxha

Mit Hat

Tregu Gjelbert no.5

Mitrovice

Me Rendesi! Operatoret BETWEEN...AND perdoren ne menyra te ndryshme ne bazat e te dhenave


te ndryshme. Ne disa baza te dhenave personi me mbiemrin "Hoti" ose "Hoxha" nuk do te listohen
(ne mes dhe vetem te selektuarat mund te paraqiten). Ne disa baza te dhenave personi me
mbiemer "Hoti" ose "Hoxha" do te listohen (ne mess i dhe fushat e selektuara jane te perfshira).
Ndersa ne baza e te dhenave tjera personi me mbiemer "Hoti" do te listohet, po jo edhe personi me
mbiemrin "Hoxha" (ne mes dhe vetem te selektuarat duke perfshi larguar te fundit nga lista)
Keshtu paraprakisht :Bazen e te dhenave tuaj se si I perdor keto BETWEEN....AND operatoret!

Shembull 2
Per te e paraqitur listen jasht rangut ne mes te Hoti dhe Hoxha

SELECT * FROM Personet WHERE Mbiemri


NOT BETWEEN 'Hoti' AND 'Hoxha'
Rezulton:
Mbiemri

Emri

Adresa

Qyteti

Morina

Nexhat

Tregu Mbyllur no.4

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 Kolones Pseudonimi


Sintaksa:

SELECT emri_kolones AS pseudonimi FROM emri_tabeles

Emri tabeles Pseudonimi


Sintaksa:

SELECT emri_kolones FROM emri_tabeles AS pseudonim

Shembull perdorimi i kolones si alias


Tabela (Personet):
Mbiemri

Emri

Adresa

Qyteti

Doroci

Adnan

Shupkofc no.2

Mitrovice

Ademi

Gzim

Shipol no.4

Mitrovice

Arifi

Aferdita

Tjegullorja 8/2

Mitrovice

Si dhe keto komanda do te na japin kete rezultat

SELECT Mbiemri AS EmriFamiljar, Emri AS EmriPersonal


FROM Personet
Na kthehet si rezultat tabela si me poshte:
EmriFamiljar

EmriPersonal

Doroci

Adnan

Ademi

Gzim

Arifi

Aferdita

Shembull perdorim i tabelave si alias


Tabela (Personet):
Mbiemri

Emri

Adresa

Qyteti

Doroci

Adnan

Shupkofc no.1

Mitrovice

Ademi

Gzim

Shipol no.4

Mitrovice

Arifi

Aferdita

Tjegullorja 8/2

Mitrovice

Si dhe keto komanda te SQL

SELECT Mbiemri, Emri


FROM Personet AS Puntoret
Rezultati do te jete tabela :
Tabela Puntoret:
Mbiemri

Emri

Doroci

Adnan

Ademi

Gzim

Arifi

Aferdita

Lidhjet dhe qelesat


Ndonjehere na nevojitet te selektojme shenimet prej dy a me shume tabela per te fituar rezultate te
duhura qe na nevojitetn. Atehere ne e bejme lidhjen ne mes dy a me shume tabelave
Tabelat ne baza te dhenave mundet te kene secila relacionet e veta perms qelesit identifikues. Qelsi
primar eshte nje identifikator unik net abele dhe ka per qellim te I kontrolloj dhe punoj me
shenimet neper tabel pa patur nevoje per perseritjen e te gjitha shenimeve neper secilin tabele.
Ne tabelen me poshte "Puntoret" kolona "Punteori_ID" eshte qelsi, qe nenkupton qe asnje rreshte
ne at tabele nuk mund te kete shenim te njejt . Puntori_ID dallon dy personet nese kane emrin e
njejte.
Shikoni shembullin ne vijim dhe vereni kete:

Kolona "Puntori_ID" eshte qelsi primar ne tabelen "Puntoret"


Kolona "Prodh_ID" eshte qelsi primar ne tabelen "Porosite"
Kolona "Puntori_ID" ne tabelen "Porosite" e perdor per tu referuar te personi ne tabelen
"Puntoret" pa i perdorur emrat e tyre

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?

SELECT Puntoret.Emri, Porosite.Produktet


FROM Puntoret, Porosite
WHERE Puntoret.Puntori_ID=Porosite.Puntori_ID
Rezultati do te jete
Emri

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

Perdorimi i fjales se rezervuar JOIN


Ose ne mund te selektojm shenimet ne dy e me shume tabela duke perdorur fjalen e rezervuar
JOIN ne kete menyre:

Shembull INNER JOIN


Sintaksa

SELECT fusha1, fusha2, fusha3


FROM tabela_pare
INNER JOIN tabela_dyte
ON tabela_pare.fusha_kotrolluese = tabela_dyte.fusha_referuar
Kush ka porositur dhe cka kan porositur ata?

SELECT Puntoret.Emri, Porosite.Produket


FROM Puntoret
INNER JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID
Fjala rezervuar INNER JOIN ka per detyre te kthej rezultatin nga tere reshtat nga te dy tabelat ku
ata jane te njejta. Nese ka rreshta ne tabelen Puntoret te cilat nuk perputhen me tabeln Porosite
tere ato rreshta nuk do te listohen.
Rezultati
Emri

Produktet

Hoti,Valon

Printeri

Arifi,Luljeta

Tabela

Arifi,Luljeta

Karrige

Shembull LEFT JOIN


Sintaksa

SELECT Puntoret.Emri, Porosite.Produket


FROM Puntoret
LEFT JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID
Liston te gjithe puntoret dhe porosite e tyre nese ndonjeri.
Fjala rezervuar LEFT JOIN te gjitha rreshtat prej tabeles (Puntoret), nese ato nuk perputhen me
rreshta e tabeles (Porosite). Nese ekziston ndonje rreshte ne tabelen Puntoret e cila nuk
perputhet me at ne tabelen Porosite ato do te listohen
Rezultati si vijon
Emri

Produktet

Hoti,Valon

Printeri

Ademi,Gzim
Arifi,Luljeta

Tabele

Arifi,Luljeta

Karrige

Jonuzi,Ilir

Shembull RIGHT JOIN


Sintaksa

SELECT Puntoret.Emri, Porosite.Produket


FROM Puntoret
RIGHT JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID
Liston te gjithe porosite dhe ata qe kan marre nese ka ndonje.

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 bazes se dhenave


Per te krijuar bazat e te dhenave perdorim si me poshte:

CREATE DATABASE emri_bazes_se_te_dhenave

Krijimi i tabeles
Per te krijuar tabele perdorim si me poshte:

CREATE TABLE emri_tabeles


(
kolona1 tipi_i_te_dhenave,
Kolona2 tipi_i_te_dhenave,
.......
)
Shembull
Ky shembull demonstron se si krijohet tabela me emrin "Personet", e cila ka kater kolona. Emrat e
kolonave do te jene "Mbiemri", "Emri", "Adresa", dhe "Mosha":

CREATE TABLE Personet


(
Mbiemri varchar,
Emri varchar,
Adresa varchar,
Mosha int
)
Ndersa ky shembull tregon se mund te caktoni gjatesin maksimale per secilen fushe:

CREATE TABLE Personet


(
Mbiemri varchar(30),
Emri varchar,
Adresa varchar,
Mosha int(3)
)

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)

Permban tipet e te dhenave integjer dhe numri ne kllapa tregon sa


shifror.

decimal(madhesia,d)
numeric(madhesia,d)

Tregon numrat me pike dhjetor. Sa shifror definohet ne madhesin e


saj. Sa shifra pas pikes dhjetore shenohet ne "d".

char(madhesia)

Tregon gjatesin fikse te stringut (mund te permbaj shkronja,numra si


dhe karaktere speciale). Madhesia fikse definohet ne kllapa.

varchar(madhesia)

Permban variablen e tipit string (mund te permbaj shkronja,numra si


dhe karaktere speciale). Madhesia fikse definohet ne kllapa.

date(yyyymmdd)

Shenon daten yyyy viti,mm muaji , dd dita

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.

CREATE UNIQUE INDEX emri_indeksit


ON emri_tabeles (emri_kolones)
"emri_kolones" tregon se cilen kolone deshironi ta indeksoni.

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.

CREATE INDEX emri_indeksit


ON emri_tabeles (emri_kolones)
"emri_kolones" tregon se cila kolon indeksohet.

Shembull
Krijimi i indeksit te thjesht, emertuar "PersonIndex", ne fushen Mbiemri ne tabelen Personet:

CREATE INDEX PersonIndex


ON Personet (Mbiemri)
Nese deshirojm qe vlerat e indekseve te paraqiten ne forme renese nga fundi deri ne fillim atehere
ju duhet qe te shtoni fjalen e rezervuar DESC pas emrit te kolones:

CREATE INDEX PersonIndex


ON Personet (Mbiemri DESC)
Ndese dershironi te indeksioni me shume kolona atehere I ndajme kolonat me presje:

CREATE INDEX PersonIndex


ON Personet (Mbiemri, Emri)

Fshirja indeksit
Ju mund te fshini indekset permes komandes DROP.

DROP INDEX emri_tabeles.emri_indeksit

Fshirja e bazes te dhenave ose tabeles


Te fshihet baza e te dhenave perdorim si me poshte:

DROP DATABASE emri_bazes_te_dhenave


Te fshihet tabela (struktura,atributete dhe indekset gjithashtu do te fshihen):

DROP TABLE emri_tabeles

Ndryshimi i tabeles
Komanda ALTER TABLE perdoret per shtimin apo largimin e kolonave nga tabela.

Shtimi i nje kolone:


ALTER TABLE emri_tabeles
ADD emri_kolones tipi_i_te_dhenave
Largimi i nje kolone:
ALTER TABLE emri_tabeles
DROP COLUMN emri_kolones
Verejtej: Disa sisteme te baza te dhenave nuk lejojn fshirjen e kolonave ne tabelat e bazave te
dhenave(DROP COLUMN emri_kolones).

Personet:
Mbiemri

Emri

Adresa

Hoti

Valon

7 Shtatori no.12

Shembull
Te shtohet kolona me emrin "Qyteti" ne tabelen "Personet":

ALTER TABLE Person ADD Qyteti varchar(30)


Rezulton:
Mbiemri

Emri

Adresa

Hoti

Valon

7 Shtatori no.12

Qyteti

Shembull
Te largohet kolona "Adresa" nga tabela "Personet":

ALTER TABLE Personet DROP COLUMN Adresa


Rezulton:
Mbiemri

Emri

Hoti

Valon

Qyteti

SQL ka shume funksione te integruara per llogaritje e kalkulime te ndryshme

Sintaksa e funksioneve
Sintaksa e funksioneve te ndertuara ne SQL eshte:

SELECT function(emri_kolones) FROM emri_tabeles

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

Funksionet agregate ne MS Access jane :


Function

Description

AVG(emri_kolones)

Kthen vleren mesatare qe gjindet ne kolone

COUNT(emri_kolones)

Kthen numri e rreshtave (pa i numruar rreshtat NULL)

COUNT(*)

Kthen numrin e rreshtave gjithesej sa jan ne tabele

FIRST(emri_kolones)

Kthen vleren qe gjindet ne rekordin e pare te asaj kolone

LAST(emri_kolones)

Kthen vleren qe gjindet ne rekordin e fundit te asaj kolone

MAX(emri_kolones)

Kthen vleren me te madhe qe eshte ne at kolone

MIN(emri_kolones)

Kthen vleren me te vogel qe eshte ne at kolone

STDEV(emri_kolones)
STDEVP(emri_kolones)
SUM(emri_kolones)

Kthen Shumen totale qe eshte ne at kolone

VAR(emri_kolones)
VARP(emri_kolones)

Funksionet agregate ne SQL Server jane:


Funksioni

Pershkrimi

AVG(emri_kolones)

Kthen vleren mesatare qe gjindet ne at kolone

BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(emri_kolones)

Kthen numrin e rreshtave (pa i numruar rreshtat NULL)

COUN(*)

Kthen numrin e rreshtave qe ka ne at tabele

COUNT(DISTINC emri_kolones)

Kthen numrin nga Funksioni DISTINC ne kolone

FIRST(emri_kolones)

Kthen vleren e pare te rekordit ne at kolone

LAST(emri_kolones)

Kthen vleren e fundit te rekordit ne at kolone

MAX(emri_kolones)

Kthen vleren maksimale qe gjindet ne at kolone

MIN(emri_kolones)

Kthen vleren minimale qe gjindet ne at kolone

STDEV(emri_kolones)
STDEVP(emri_kolones)
SUM(emri_kolones)
VAR(emri_kolones)
VARP(emri_kolones)

Kthen shumen totale ne ate kolone

Funksionet Skalare
Funksionet skalare jane funksionet qe punojn me nje vlere te caktuar, dhe kthejn rezultat bazuar
nga vlera hyres.

Funksionet skalare qe perdoren ne MS Access


Funksionet

Pershkrimi

UCASE(c)

Fushat I kthen ne shkronja te medha

LCASE(c)

Fushat I kthen ne shkronja te vogla

MID(c,start[,end])

Nxjerr karakterin e caktuar nga TEKSTI

LEN(c)

Kthen gjatesin e tekstit

INSTR(c)

Kthen rezultat numeric te pozites se caktuar te nje karakteri ne


tekst

LEFT(c,number_of_char)

Kthen pjesen e majte te ndonje teksti te kerkuar

RIGHT(c,number_of_char)

Kthen pjesen e djath te ndonje teksti te kerkuar

ROUND(c,decimals)

Rumbullakon numrin me pike dhjetore ne nje numer te plote

MOD(x,y)

Kthen mbetjen nga rezultati i pjestimit te dy numrave

NOW()

Kthen rezultat daten aktuale

FORMAT(c,format)

Ndrron menyren e paraqitjes

DATEDIFF(d,date1,date2)

Perdoret per kalkulimet ne diference te datave

Funksionet agregate (sikurse SUM) shpesh ka nevoj te ju shtohet GROUP BY


funksionaliteti .

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:

SELECT emri_kolones,SUM(emri_kolones) FROM emri_tabeles GROUP BY


emri_kolones

Shembull GROUP BY
Tabela "Shitjet":
Kompanite

Sasia

IT Department

5500

Ardi

4500

IT Department

7100

Dhe komandat ne SQL si me poshte:

SELECT Kompanite, SUM(Sasia) FROM Shitjet


Kthen rezultat:
Kompanit

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:

SELECT Kompanit,SUM(Sasia) FROM Shitjet


GROUP BY Kompanit
Dhe si rezultat fitojm:
Kompanit

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:

SELECT emri_kolones,SUM(emri_kolones) FROM emri_tabeles


GROUP BY emri_kolones
HAVING SUM(emri_kolones) vlera e kushtit
Tabela "Shitjet":
Kompanit

Sasia

IT Department

5500

Ardi

4500

IT Department

7100

Nese perdorim keto SQL komanda:

SELECT Kompanit,SUM(Sasia) FROM Shitjet


GROUP BY Kompanit
HAVING SUM(Sasia)>10000
Na kthehet ky rezultat
Komanit

SUM(Sasia)

IT Department

12600

Komanda SELECT INTO


Komanda SELECT INTO shpesh perdoret per te krijuar kopje rezerver te arkivuara te tabelave per
arkivimin e rekordeve.

Sintaksa
SELECT emri_kolone(ave) INTO tabela_e_re [IN bazen_e_te_dhenave_tjeter]
FROM burimit

Krijimi i kopjeve rezerve


Krijimi i kopjeve reserve ne tabelen "Persone":

SELECT * INTO Personet_kopjerezerve


FROM Personet
Klauzula IN munde te perdoret nese e kopjojm tabelen nje baze te dhenave tjeter:

SELECT Personet.* INTO Personet IN 'Backup.mdb'


FROM Personet
Nese doni te i kopjoni vetem sa fusha ate munde te e beni duke I listuar ato, me ndihmen e
komandes SELECT :

SELECT Mbiemri,Emri INTO Personet_kopjarezerver


FROM Personet
Ju gjithashtu mund te perdorni klauzulen WHERE. Shikoni kete shembull p.sh. tabela
"Personet_kopjarezerve" me dy kolona (Emri dhe Mbiemri) duke I nxjerr vetem personet qe jetojn
ne "Mitrovice" nga tabela "Personet":

SELECT Mbiemri,Emri INTO Personet_mitrovice


FROM Personet
WHERE Qyteti='Mitrovice'
Selektimi i shenimeve nga me shume tabela gjithashtu eshte e mundeshme. Shembulli I ardheshem
krijon kopjen ne nje tabele te re "Porosite_e_puntoreve_kopja" e cila permban shenimet prej dy
tabelave Puntoret dhe Porosite:

SELECT Puntoret.Emri,Porosite.Produkti
INTO Porosite_e_puntoreve_kopja
FROM Puntoret
INNER JOIN Porosite
ON Puntoret.Puntori_ID=Porosite.Puntori_ID

You might also like