gjuhasql - olti.fgjm.edu.alolti.fgjm.edu.al/sql.pdf · sql aktualeeshtezhvillimii...

41
Gjuha SQL Oltion Fociro Departamenti i GjeoInformatikes Baze Te Dhenash Departamenti i GjeoInformatikes Universiteti Politeknik i Tiranes 1

Upload: others

Post on 03-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Gjuha SQLOltion Fociro

Departamenti i GjeoInformatikes

Baze Te Dhenash

Departamenti i GjeoInformatikes

Universiteti Politeknik i Tiranes

1

Page 2: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SQL (Structured Query Language) = DDL + DML

Gjuha SQL ekzekuton pyetjen, perkufizimin dhe perditesimin e

te dhenave.

SQL si gjuhe per pyetjen e nje DB eshte me deklarativ se

Baze Te Dhenash

HYRJE

SQL si gjuhe per pyetjen e nje DB eshte me deklarativ se

algjebra relazionale.

SQL eshte flesibel dhe espresiv(perdorimi i join dhe dhe

operatori in)

2

Page 3: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Dy elemente te rendesishem e ndajne SQL nga Algjebra

Relacionale:

(1)resultatet e projektimeve jane multi-bashkesi ne vend te

bashkesive (si default duplicatet nuk fshihen)

Baze Te Dhenash

SQL vs. Algjebra Relacionale

(2)vlerat vs. relacioneve (resultati i aplikimit i nje funksioni te

agreguar mund te meret ne raste te vecanta si vlere dhe jo si

relacion)

3

Page 4: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SQL aktuale eshte zhvillimi i nje gjuhe pyetjesh per DBMS, i

propozuar ne fillim prane laboratoreve te kerkimit te IBM ne

gjysmen e dyte te viteve ’70.

Duke filluar nga vitet 80, u be objekt i nje aktiviteti intensiv per

Baze Te Dhenash

Situata e pergjithshme

Duke filluar nga vitet 80, u be objekt i nje aktiviteti intensiv per

standartizimin, zhvilluar ne pergjithesi prane ANSI(American

National Standards Institute) dhe ISO(International Organization

for Standardization).

Processi i standartizimit eshte gjithmone en zhvillim(SQL base,

SQL-2, SQL-3)

4

Page 5: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Nje pyetje SQL mund te permbaje deri ne 6 klausola nga te cilat

vetem dy te parat jane te detyrueshme:

SELECT <lista e atributeve> (target list)

FROM <lista e tabelave>

WHERE <kushti>

Baze Te Dhenash

Gjuha e Pyetjeve SQL

WHERE <kushti>

GROUP BY <lista e atributeve(sipas grupimit)>

HAVING <kushti (i grupit)>

ORDER BY <lista e atributeve>

Tre rreshtat e pare formojne bllokun kryesor (i quajtur

mapping).

5

Page 6: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SELECT specifikon atributet dhe/ose funksionet (ne pergjithsi

espresionet) vlerat e te cilave jane resultati i vleresimit te

pyetjes . Mund te specializohet ne shume menyra (p.sh.

Perdorimi i fjales celes DISTINCT).

FROM specifikon te gjitha tabelat ku duhet te hyhet per te

Baze Te Dhenash

Blluku Kryesor

FROM specifikon te gjitha tabelat ku duhet te hyhet per te

rekuperuar informacione qe kerkohen nga pyetja.

WHERE specifikon kushtet (vleresime Booleane) per

seleksionimin e rreshtave te tabelave te kerkuara tek klauzola

FROM (kushte seleksionimi dhe kushte Join; ne SQL-2 kushtet e

Join vendosen dhe tek klauzola FROM).

6

Page 7: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Blloku kryesor: SELECT-FROM-WHERE

Sintaksa:

SELECT AtrEspr [[AS]ALIAS]

Baze Te Dhenash

Pyetjet Baze

SELECT AtrEspr [[AS]ALIAS]

FROM Tabela [[AS]ALIAS]

WHERE Kushti

7

Page 8: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

(Tabela 1 - Punonjes): emer, mbiemer, ID, adresa, seksi, rroga,

supervizor, dep

(Tabela 2 - Departamenti): d_numer, d_emer, manaxher

(Tabela 3 – Projekti): p_numer, p_emer, d_numer

(Tabela 4 – Punon_Ne): pun, projekti, ore_javore

Baze Te Dhenash

Tabelat e Shembujve

(Tabela 4 – Punon_Ne): pun, projekti, ore_javore

(Tabela 5 – Personat_Ngarkim): pun, emri, seksi, datelindja,

lidhja

8

Page 9: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 1: Te gjendet rroga e punonjesve qe e kane mbiemrin

Shehu.

SELECT Rroga AS RrogaShehu

FROM Punonjesi

WHERE Mbiemri = ‘Shehu‘

Baze Te Dhenash

Perdorimi i Alias dhe perdorimi i yllit

WHERE Mbiemri = ‘Shehu‘

Shembulli 2: Te gjendet te gjitha inforamzionet e punonjesve qe

e kane mbiemrin Shehu.

SELECT *

FROM Punonjesi

WHERE Mbiemri = ‘Shehu'

9

Page 10: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 3: Te gjendet rroga mujore e punonjesve qe e kane

mbiemrin Shehu.

SELECT Rroga/12 AS RrogaShehu

FROM Punonjesi

WHERE Mbiemri = ‘Shehu‘

Baze Te Dhenash

Perdorimi i espresioneve dhe JOIN

WHERE Mbiemri = ‘Shehu‘

Shembulli 4: Per cdo punonjes te gjendet emri i departamentit

ku punon.

SELECT ID, d_emer

FROM Punonjesi, Departamenti

WHERE dep= d_numer

10

Page 11: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 5: Te gjendet rroga e cdo punonjesi.

SELECT ID, Rroga

FROM Punonjesi

Shembulli 6: Te gjenden nivelet e pagave te punonjesve te

Baze Te Dhenash

Nen Blloku SELECT-FROM dhe DISTINCT

Shembulli 6: Te gjenden nivelet e pagave te punonjesve te

nderrmarjes

SELECT DISTINCT Rroga

FROM Punonjesi

11

Page 12: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 7: Per cdo punonjes te gjenden numrat e projekteve

mbi te cilat punon

SELECT Punonjesi.ID, P.projekti

FROM Punonjesi, Punon_Ne AS P

WHERE ID = pun

Baze Te Dhenash

Shenimet me pike

WHERE ID = pun

Shembulli 8: Te gjenden emrat dhe datelindjet e personave ne

ngarkim te cdo punonjesi

SELECT ID, P.emri, P.datelindja

FROM Punonjesi, Persona_Ngarkim AS P

WHERE ID = pun

12

Page 13: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 9: Te gjenden emer dhe mbiemer i supervizoreve te

punonjesve qe punojne ne departamentin 10

SELECT S.emer, S.mbiemer

FROM Punonjesi AS I S

WHERE I.dep = 10 AND I.supervizor = S.ID

Baze Te Dhenash

Alias dhe operazionet e riemerimit

Shembulli 10: Te gjenden projektet qe kane te pakten nje

departament te perbashket

SELECT P1.p_numer, P2.p_numer

FROM Projekti AS P1 P2

WHERE P1.d_numer = P2.d_numer AND

P1.p_numer < P2.p_numer13

Page 14: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Pyetjet e mbivendosura: ne klausolen WHERE, SQL lejon

krahasimin me ane te operatoreve standart nje vlere me

rezultatin e ekzekutimit te nje pyetje SQL te mbivendosur.

Ne rastin me te thjeshte kjo vlere eshte vlera e nje atributi te

dhene.

Baze Te Dhenash

Pyetjet e mbivendosura

dhene.

Si mund te kryhet krahasimi i nje vlere me nje bashkesi

vlerash(te mara nga ekzekutimi i pyetje SQL)? Perdorimi i fjaleve

celes ANY(SOME) dhe ALL.

14

Page 15: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Si vleresohen pyetjet e mbivendosura? Nje vleresim per cdo

rresht ose kombinim rreshtash te pyetjes te ciles i perkasin.

Fjala celes ANY: rreshti kenaq kushtin nqs krahasimi (me

operatorin e dhene) midis vleres qe atributi merr dhe njerit nga

rreshtat e pyetjes se mbivendosur eshte i vertete.

Baze Te Dhenash

Perdorimi I ANY dhe ALL

rreshtat e pyetjes se mbivendosur eshte i vertete.

Fjala celes ALL: rreshti kenaq kushtin nqs krahasimi (me

operatorin e dhene) midis vleres qe atributi merr dhe secilit nga

rreshtat e pyetjes se mbivendosur eshte i vertete.

15

Page 16: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 11: Te gjendet ID e punonjesve qe kane te njejtin

mbiemer me nje punonjes qe punon ne departamentin 10

SELECT ID

FROM Punonjes

WHERE mbiemri = ANY ( SELECT mbiemri

Baze Te Dhenash

Shembuj te perdorimit te ANY dhe ALL

WHERE mbiemri = ANY ( SELECT mbiemri

FROM Punonjes

WHERE dep = 10)

16

Page 17: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 12: Te gjenden te gjithe departamentet ne te cilet

nuk punon asnje punonjes qe ka rroge me te madhe se 80.000

leke

SELECT d_numer

FROM Departamenti

Baze Te Dhenash

Shembuj te perdorimit te ANY dhe ALL - 2

FROM Departamenti

WHERE d_numer <> ALL ( SELECT dep

FROM Punonjes

WHERE rroga > 80.000)

17

Page 18: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Per te kontrolluar perkatesine e nje vlere ne nje bashkesi

vlerash qe jane rezultat e nje pyetje te nidifikuar mund te

perdoret operatori IN (ekuivalent ANY) dhe NOT IN (ekuivalent

<> ALL).

Shembulli 13: Te seleksionohen punonjesit qe bejne psese tek

departamenti me manaxher Iliri.

Baze Te Dhenash

Operatori IN

departamenti me manaxher Iliri.

SELECT *

FROM Punonjes

WHERE dep IN ( SELECT d_numer

FROM Departamenti

WHERE manaxher = Ilir)

18

Page 19: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SQL perdor nje funksion Boolean (funksioni EXISTS) qe lejon

verifikimin nese resultati i nje pyetje te nidifikuar eshte bosh

apo jo.

Shembulli 14: Te seleksionohen punonjesit qe nuk kane persona

ne ngarkim

Baze Te Dhenash

Funksioni Boolean EXISTS

SELECT id

FROM Punonjes

WHERE NOT EXISTS ( SELECT *

FROM Personat_Ngarkim

WHERE id = pun)

19

Page 20: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 15: Te seleksionohen emri dhe mbiemri i

manaxhereve qe kane te pakten nje person ne ngarkim

SELECT emer, mbiemer

FROM Punonjes

WHERE EXISTS ( SELECT *

Baze Te Dhenash

Funksioni Boolean EXISTS - 2

WHERE EXISTS ( SELECT *

FROM Departamenti

WHERE id = manaxher)

AND

( SELECT *

FROM Personat_Ngarkim

WHERE id = pun)

20

Page 21: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SQL perdor disa funksione te agreguara si COUNT, SUM, AVG,

MAX dhe MIN.

Shembulli 16: Te gjendet shuma totale e pagave te dhena nga

nderrmarja per punonjesit e saj, paga mesatare, paga

maksimale dhe paga minimale.

Baze Te Dhenash

Funksioni te agreguara ne SQL

SELECT SUM(rroga), AVG(rroga), MAX(rroga), MIN(rroga)

FROM Punonjes

21

Page 22: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Operatori COUNT lejon numerimin e rreshtave te nje tabele

(opcioni *), numrin e vlerave te ndryshme qe ka nje atribut (fjala

celes DISTINCT).

Shembulli 17: Te gjendet numri i punonjesve te departamentit 3.

SELECT COUNT (*)

Baze Te Dhenash

Funksioni te agreguara ne SQL - 2

SELECT COUNT (*)

FROM Punonjes

WHERE dep = 3

Shembulli 18: Te gjendet numri i niveleve te pagave

SELECT COUNT (DISTINCT rroga)

FROM Punonjes

22

Page 23: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembulli 19: Te gjendet emri dhe mbiemri i punonjesve qe

kane me shume se 3 persona ne ngarkim.

SELECT emer, mbiemer

FROM Punonjes

WHERE ( SELECT COUNT (*)

Baze Te Dhenash

Relacionet si Vlera

WHERE ( SELECT COUNT (*)

FROM Personat_Ngarkim

WHERE id = pun) >= 3

23

Page 24: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Elementet themelore:

-perkufizimi i dominit

-perkufizimi i skemes dhe i tabelave

-perkufizimi i kufizimimeve

-specifikimi i vlerave default

Baze Te Dhenash

Perkufizimi i te dhenave ne SQL

-specifikimi i vlerave default

-kufizime intrarelacionale

-kufizime interrelacionale

-modifikimi i skemave

24

Page 25: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Domini percakton bashkesite e vlerave qe atributet mund te

marin.

Dy tipe:

-domine elemntare, te vena ne dispozicion nga SQL

-domine te perkufizuara nga perdoruesi (me ane te komandave)

Baze Te Dhenash

Perkufizimi i dominit

-domine te perkufizuara nga perdoruesi (me ane te komandave)

Dominet elementare:

-germat

-tipet numerike egzakte dhe te rrumbullakosur

-intervale dhe caste kohore

25

Page 26: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

SQL perkufizon nje skeme si nje koleksion objektesh(dominet,

tabelat,…)

Sintaksa: create schema [EmriSkemes]

[ [ authorization ] Autorizimi ]

{ perkufizimi i elementeve te skemes }

Baze Te Dhenash

Perkufizimi i skemes

ku autorizimi eshte emri i pronarit te skemes( nqs nuk vendoset

atehere pronari eshte ai qe ka egzekutuar komanden)

Nqs emri i skemes nuk vendoset atehere skema mer emrin e pronarit.

Shembull: CREATE SCHEMA nderrmarja AUTHORIZATION Kasemi

26

Page 27: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Nje tabele SQL eshte e perbere nga nje bashkesi atributesh, me

dominet relative, dhe nga nje bashkesi kufizimesh.

Krijimi i nje tabele:

CREATE TABLE DEPARTIMENTI (

d_numer INTEGER PRIMARY KEY,

d_emer VARCHAR(20),

Baze Te Dhenash

Perkufizimi i tabelave

d_emer VARCHAR(20),

manaxheri CHAR(16),

UNIQUE(d_emer),

FOREIGN KEY (manaxheri ) REFERENCES Punonjes(ID),

ON DELETE SET NULL,

ON UPDATE CASCADE

)

27

Page 28: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Sintaksa (per perkufizimin e tabelave):

CREATE TABLE EmriTabeles

(

EmriAtributit Domini [VleraDefault] [Kufizimet]

KufizimeTeTjera

Baze Te Dhenash

Perkufizimi i tabelave - 2

KufizimeTeTjera

)

Tabela eshte fillimisht boshe. Krijuesi ka te gjitha privilegjet mbi

kete tabele (privilegjet per te hyre dhe per te modifikuar

tabelen).

28

Page 29: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Ne perkufizimin e tabelave mund te referohen dominet

elementare ose dominet e perkufizuara nga perdoruesit.

Sintaksa:

CREATE DOMAIN EmriDominit AS TipiTeDhenave

Baze Te Dhenash

Perkufizimi i domineve

CREATE DOMAIN EmriDominit AS TipiTeDhenave

[VleraDefault]

[kufizimet]

Shembull:

CREATE DOMAIN IDENTIFIKUES AS CHAR(16)

29

Page 30: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Termi Vlera DEFAULT mund te perdoret ne krijimin e tabelave dhe

domineve i cili specifikon vleren qe nje atribut merr ne momentin qe

shtohet nje rresht i tabeles pa vlere te percaktuar per kete atribut.

Sintaksa:

DEFAULT < VlerePergjithshme | user | NULL >

Baze Te Dhenash

Specifikimi i vlerave DEFAULT

VlerePergjithshme eshte nje vlere qe respekton dominin(e atributit).

User vendos si vlere default emrin e perdoruesit qe ka perditsuar

tabelen.

Shembull: dep SMALLINT DEFAULT 1

30

Page 31: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Kufizime intrarelacionale dhe interrelacionale.

Kufizimet intrarelacionale jane kufizime qe i perkasin vetem nje

tabele te vetme (kufizimet NOT NULL, UNIQUE dhe PRIMARY

KEY).

Baze Te Dhenash

Specifikimi i kufizimeve

Kufizimet interrelacionale jane kufizime qe i perkasin me shume

se nje tabele (kufizimi FOREIGN KEY).

31

Page 32: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Kufizimi NOT NULL: vlera NULL nuk mund te perdoret si vlere e

atributit.

Shembull: mbiemri varchar(20) NOT NULL

Kufizimi UNIQUE:applicohet nje ose shume atributeve dhe

Baze Te Dhenash

Kufizimet intrarelacionale

Kufizimi UNIQUE:applicohet nje ose shume atributeve dhe

imponon qe rreshta te ndryshem te se njejtes tabele te kene

vlera te ndryshme te ketij atributi.

Shembull: d_emer varchar(20) UNIQUE

32

Page 33: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Kufizime mbi nje atribut vs. nje bashkesi atributesh

emer VARCHAR(20) NOT NULL UNIQUE,

mbiemer VARCHAR(20) NOT NULL UNIQUE

vs.

emer VARCHAR(20) NOT NULL,

mbiemer VARCHAR(20) NOT NULL,

Baze Te Dhenash

Kufizimet intrarelacionale - 2

mbiemer VARCHAR(20) NOT NULL,

UNIQUE(emer,mbiemer)

Kufizimi PRIMARY KEY: munt te perkufizohet vetem nje here per cdo

tabele.

emer VARCHAR(20),

mbiemer VARCHAR(20),

PRIMARY KEY (emer,mbiemer)

33

Page 34: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Mund te perkufizohet ne dy menyra (menyra e dyte eshte e

detyrueshme nqs celesi primar eshte i perbere nga me shume

se nje atribut)

dep SMALLINT REFERENCES DEPARTIMENTI(d_numer)

Baze Te Dhenash

Kufizimet interrelacionale – Celesat e Jashtem

vs.

...

manaxher CHAR(16),

...

FOREIGN KEY (manaxher) REFERENCES PUNONJESI(ID),

ON DELETE SET NULL,

ON UPDATE CASCADE

34

Page 35: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Reaksione e mundeshme per operacionet e modifikimit/fshirjes:

-CASCADE:vlera e re vendoset tek te gjitha rreshta e tabeles

-SET NULL: atributit i vendoset vlera NULL

Baze Te Dhenash

Kufizimet interrelacionale - Celesat e Jashtem - 2

-SET DEFAULT: atributit i vendoset vlera DEFAULT

-NO ACTION: nuk modifikohet asgje.

Sintaksa: on < DELETE | UPDATE >

< CASCADE | SET NULL | SET DEFAULT | NO ACTION >

35

Page 36: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Operacione qe lejojne modifikimin e permbajtjes se nje DB jane:vendosja,

fshirja dhe modifikimi i te dhenave.

Komanda per vendosjen e nje rreshti te nje tabele(dy menyra alternative):

INSERT INTO emriTabeles [(ListaAtributeve)]

< VALUES (ListaVlerave) | SelectSQL >

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: vendosja

Shembull:vendosje e nej rreshti

INSERT INTO DEPARTAMENTI(d_numer, d_emer)

VALUES (5, ‘Inxhinieria')

Shembull:vendosje e nje bashkesie rreshtashINSERT INTO PUNONJESIT5

( SELECT ID, emer, mbiemer, rroga

FROM Punonjes

WHERE dep = 5)

36

Page 37: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Menyra e pare perdoret ne brendesi te programeve (‘embedded SQL’)

per te mbushur nje tabele me te dhena qe zakonisht jepen direkt nga

perdoruesi me ane te nje formi ose maske.

Menyra e dyte lejon vendosjen e te dhenave qe ekzistojne ne brendesi

te DB.

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: vendosja - 2

te DB.

Atributeve qe nuk u jepet nje vlere u vendoset vlera default dhe ne

rast se nuk ka nje vlere default vendoset vlera NULL. Ne rast se shkel

nje perkufizim NOT NULL atehere vendosja nuk kryhet nga DBMS.

Korrespondenza midis atributeve dhe vlerave qe duhen vendosur

jepet sipas radhes qe atributet kane ne tabele.

37

Page 38: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Komanda per fshirjen e rreshtave te nje tabele:

DELETE FROM emriTabeles [WHERE kushti]

Kjo komande fshin ato rreshta te tabeles ku plotesohet kushti; ne rast

se nuk vendoset klauzola WHERE atehere komanda fshin te gjitha

rreshtat e tabeles.

Ne qoftese ekziston nje perkufizim interrelacional me politeke

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: fshirja

Ne qoftese ekziston nje perkufizim interrelacional me politeke

CASCADE atehere fshirja do te perhapet dhe ne tabela te tjera sipas

celesave te jashtem qe jane vendosur.

Shembull:fshirja e nje rreshti

DELETE FROM DEPARTAMENTI WHERE d_emer = ' Inxhinieria'

38

Page 39: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Ne klausolen WHERE mund te vendosen edhe pyetje SQL te nidifikuara

qe mund te referohen ne tabela te tjera.

Shembull:fshirja e nje bashkesie rreshtash te nje tabele(te fshihen

departamentet qe nuk kane punonjes)

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: fshirja - 2

DELETE FROM DEPARTAMENTI

WHERE d_numer NOT IN ( SELECT dep

FROM Punonjes)

39

Page 40: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Komanda per modifikimin e rreshtave te nje tabele:

UPDATE emriTabeles

SET Atributi = < vlera | SelectSQL | NULL | DEFAULT >

[ WHERE Kushti ]

UPDATE lejon modifikimin e nje ose me shume atributeve qe plotesojne

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: modifikimi

UPDATE lejon modifikimin e nje ose me shume atributeve qe plotesojne

kushtin ne klausolen WHERE. Ne rast se mungon klausola WHERE atehere

modificohen te gjitha rreshtat e tabeles.

Vlera e re mund te jete:

-resultati i vleresimit te nje espresioni mbi atributet e tabeles

-resultati i nje pyetje SQL

-vlera NULL

-vlera DEFAULT per dominin

40

Page 41: GjuhaSQL - olti.fgjm.edu.alolti.fgjm.edu.al/SQL.pdf · SQL aktualeeshtezhvillimii njegjuhepyetjeshper DBMS, i propozuarne fillimpranelaboratorevete kerkimitte IBM ne gjysmene dytete

Shembull: modifikimi i nje rreshti te vetem(te rritet rroga me 5000 leke

per punonjesin KJDSH45735)

UPDATE Punonjesi

SET rroga = rroga + 5000

WHERE ID = KJDSH45735

Baze Te Dhenash

Perditesimi i te dhenave ne SQL: modifikimi - 2

Shembull: modifikimi i nje bashkesie rreshtash(te rritet me 10% rroga

e te gjithe punonjesve te departamentit Inxhinieria)

UPDATE Punonjesi

SET rroga = rroga * 1.1

WHERE dep = ‘Inxhinieria’

41