You are on page 1of 177

BAZAT E T DHNAVE

BAZAT E T DHNAVE (HYRJE)

BAZAT E T DHNAVE

ACCESS

BAZAT E T DHNAVE

1.ka sht baza e t dhnave


Baz e t dhnave sht fardo grumbulli informatash t organizuara n grup.Informatat duhet t jen t organizuara ashtu q leht mund t ju qasemi .P.SH. notesi i numrave t telefonit sht nj baz e t dhnave jo e kompjuterizuar.sht e organizuar me renditje alfabetike dhe prmban informacion pr emrin,adresn dhe numrin e telefonit.Pra ne i qasemi nj numri t telefonit n baz t emrit.N bazat e mdha elektronike t cilat mirmbahen n kompjuter na mundsohet q t manipulojm m leht dhe m shpejt me t dhnat.

Programet q ngrthejn n vete baza t t dhnave si jan Microsoft Access ose Microsoft FoxPro, t shumtn e rasteve jan t tipit server pr datoteka sepse m s shumti iu dedikohen bazave q manipulohen vetm nga nj shfrytzues, prderisa programet si Microsoft SQL Server, Oracle ose Informix jan t tipit klient/server sepse natyra e puns s tyre, m s shumti ndrtohet mbi parimin e puns me shum shfrytzues. S pari ushtrimet do ti fillojm me ACCESS dhe pastaj do t kalojm n MYSQL. ACCESS sht nj program i Microsoftit pr baza t t dhnave, pra sht pjes e Microsoft Office.

2. Krijimi i nj baze t t dhnave


Me krijimin e nj baze t t dhnave n ACCESS ne krijojm nj vend pr tabelat,format,pyetsort,raportet si edhe pr objektet tjera t bazs.Nse krijojm nj baz t re ather duhet q ti krijojm tabelat,pyetsort dhe objektet tjera vet.N t njjtn koh mund t shfrytzojm Database Wizard pr krijimin e bazs. Me startimin e ACCESS-it klikojm n New n toolbar pastaj klikojm n Blank Database i vm emrin asaj baze t t dhnave dhe e ruajm, pastaj hapet dritarja:

BAZAT E T DHNAVE
Kjo dritare prmban objektet e bazs t t dhnave (n ann e majt t dritares) : a) Tabelat (Tables) b) Pyetsort (Queries) c) Format (Forms) d) Raportet (Reports) e) Faqet (Pages) f) Makrot (Macros) g) Modulet (Modules) Ndrsa n ann e djatht sht lista pr krijimin e atyre objekteve. Tipi i objektit Prshkrimi Ky objekt definon strukturn e nj baze n Access.Tabelat prmbajn numr t madh t dhnash n rreshta dhe n kolona.Kto t dhna mund t futen, ndryshohen, ruhen dhe t kthehen. sht mnyr pr krkimin e informacioneve n tabel.Kur ekzekutojm nj pyetsor, t dhnat paraqiten n t quajturin Recordset.Pastaj kto t dhna mund t ndryshohen ose t shtypen (printohen). Lejon futjen e t dhnave, shikimin si dhe ndryshimin e tyre.Forma mund t shfrytzohet si alternativ pr paraqitjen e t dhnave n rreshta dhe n kolona. sht dizajn pr t dhnat q do t shtypen(printohen).Raportet prfshijn raportet nga baza e t dhnave.N raporte poashtu mund t kryhen llogaritje matematikore. sht nj web faqe q mund ti qasemi dhe t punojm me bazn e t dhnave n Access prmes internetit dhe intranetit. sht nj varg i urdhrave t cilat ekzekutohen si nj. Ky objekt prmban aplikacione t Visual Basic me t cilat mund t ndryshojm funksionet n baz t t dhnave.

Tabela

Pyetsori

Forma

Raporti

Faqja

Makro

Moduli

Ushtrime
Krijoni nj baz t t dhnave me emrin BANKA.mdb.

BAZAT E T DHNAVE

Tabelat
N Access jan pes hapa pr dizajnimin e tabelave.Hapi i par prfshin kuptimin e sistemit duke prfshir t dhnat q do t futen, raportet q do t nxirren, emrat si dhe ka do t gjenerohet nga t dhnat si dalje.Hapi i dyt prfshin prcaktimin e numrit t tabelave q duhen dhe informacioni q do t ruhet n ato tabela.Pra vendimi se sa tabela do ti ket baza e t dhnave sht shum i rndsishm.Hapi i tret sht pr dizajnimin e tabelave duke vendosur se cilat fusha do ti prmabj, far tipi i t dhnave do t futen n seciln fush dhe madhsia e fushave.Hapi i katrt prfshin emrin e tabels dhe n fund n hapin e pest testimi i strukturs s tabels.Ky hap sht shum i rndsishm pr faktin se na ndihmon t prcaktojm se cilat fusha nuk jan t prfshira si dhe ndonj gabim n madhsin e tyre.Pastaj tabela mund t modifikohet.

Krijimi i tabels n Design View


Tabela sht temel i bazs t t dhnave.T gjith pyetsort, raportet dhe format i shfrytzojn fushat dhe t dhnat nga tabela si baz pr dalje.Duhet q s paku t krijojm nj tabel para se t krijojm objektet tjera n baz t t dhnave.Kur t krijojm nj tabel t re duke shtypur New hapet nj dialog ku mund t zgjedhim mnyrn e krijimit t tabels: Datasheet View, Design View, Table Wizard, Import Table pr importimin e t dhnave nga ndonj burim dhe Link Table pr lidhjen e t dhnave nga ndonj burim. Krijimi i tabels n Design View na jep kontroll m shum mbi dizajnimin e tabels. Pra zgjedhim Design View dhe shtypim OK dhe hapet kjo dritare.

Dritarja n Design View sht e ndar n dy pjes.Pjesa e lart prmban vendin ku e shfrytzojm pr futjen e emrit t fushs, tipit t t dhnav n at fush si dhe prshkrimin e saj.Pjesa e poshtme e dritares prmban karakteristikn e fushs s zgjedhur.

BAZAT E T DHNAVE

Emri i fushs
N pjesn e siprme t Design View te Field Name mund t fusim emrin e fushs. Emri i fushs identifikon t dhnat n at fush si: ID, Emri, Mbiemri etj.Emrat e fushave mund t jen t gjat 64 karakter dhe t prmbajn shkronja, numra dhe hapsira (por jo t fillojn me hapsir).Emri i fushs nuk mund t ket pik( . ),pikuditse( ! ), kuot ( ` ), kllapat e mesme ( [ ] ).Emrat e fushave duhet t jen unik.

Caktimi i tipit t t dhnave


Secila fush ka nj tip t t dhnave.Tipi i t dhnave i tregon Access-it se far vlera doni t ruani n at fush dhe sa hapsir t rezervoj pr at fush.N fushn Data Type zgjedhim tipin e t dhnave. Tabela e mposhtme prshkruan tipet e t dhnave n dispozicion nga Access-i.

Tipi i t dhnave Text

Prshkrimi Text sht nj tip i t dhnave q prmban do kombinim t shkronjave, numrave, shenjave t piksimit dhe hapsirs.Ku si mundsi e parazgjedhur sht 50 karakter ndrsa maksimumi sht 255 karakter. Memo sht e ngjashme me Text vetm se Memo mund t prmbaj deri 65.535 karakter.Memo mund t shfrytzohet pr shnime dhe pr prshkrime t gjata n baz t t dhnave. Fusha Number mund t prmbaj vetm karakter numerik, presjen (pr mijshe), pikn (pr pik decimale) dhe minus (vij, pr shenj t numrave negativ).Number shfrytzohet vetm kur kemi t bjm me kalkulime me vlerat e fushave.P.SH. edhe pse zip kodi dhe numri i telefonit prmbajn numra ato nuk do ti prdorim pr kalkulime.Pr at ato nuk duhen t jen t tipit Number. Date/Time prmban datn dhe/ose kohn.Access-i automatikisht vlerson futjen e dats duke u siguruar se sht valide.P.SH. Nse dojm t fusim datn 31/02/1999 Access-i nuk do ta lejoj sepse muaji Shkurt nuk i ka 31 dit.Fusha Date/Time sht e prdorshme pr kalkulimin e dats dhe kohs. 6

Memo

Number

Date/Time

BAZAT E T DHNAVE

Currency

Currency sht e ngjashme me fushn Number dhe mund t prdoret pr kalkulime.Numrat n kt fush paraqiten automatikisht me shenjn e dollarit.

Tipi i t dhnave AutoNumber automatikisht cakton numrin unik(prej 1) secils t dhn.Nuk mundemi t fusim vler n nj fush ku m par AutoNumber Access-i ka caktuar vlern.Kt tip t t dhnave e prdorim kur dojm q t kemi identifikim unik pr seciln t dhn. Fusha Yes/No shnon dy kondita PO dh JO.Ky tip i t dhnave prdoret kur ekzistojn vetm dy mundsi (P.SH. e sakt dhe jo e sakt) pr vlern e fushs. Fusha OLE Object lidh at fush me nj aplikacion t Windows-it.Tipi i t dhnave OLE Object prdoret pr grafik ose audio datoteka. Fusha Hyperlink shfrytzohet pr lidhjen me ndonj faqe n internet, document t Word-it n intranet ose edhe form n baz t t dhnave.Hyperlink mund t prmbaj prshkrim, adres dhe nn adres.Secila pjes sht e ndar me shenjn # dhe mund t prmbaj 2.048 karakter. Me zgjedhjen e tipit t t dhnave Lookup Wizard na udhheq n krijimin e fushs Lookup.Fusha Looup mund t prmbaj list t vlerave nga ndonj tabel ose list t vlerave q i japim ne.

Yes/No

OLE Object

Hyperlink

Lookup Wizard

Prshkrimi i fushave
N fushn Description shkruajm prshkrimin pr seciln fush (Field Name).

Vnia e elsit primar (Primary Key)


Access-i punon n mnyr m efikase nse vejm elsin primar n tabel.elsi primar sht nj fush ose nj grup i cili n mnyr unike identifikon do t dhn.Pr at vlera n fushn ku sht elsi primar duhet t jet unike n at tabel.Jan shum prparsi me vnien e elsit primar.S pari elsi automatikisht indeksohet gj q e bn gjetjen e informacionit m shpejt.S dyti kur e hapim tabeln t dhnat sortohen sipas elsit primar.Dhe n fund elsi primar ndalon futjen e vlerave t dyfishta n fushn me els 7

BAZAT E T DHNAVE primar.M s lehti sht q si els primar t vehet fusha me tipin e t dhnave AutoNumber.elsi primar nuk mund t vihet n fushat ku tipi i t dhnave sht Memo, OLE ose Hyperlink.Pr t krijuar els primar n m shum se nj fush mbajm pulln CTRL t shtypur dhe zgjedhim fushat q dshirojm pastaj klikojm n pulln Primary Key.

Karakteristikat(tiparet) e fushs (FIELD PROPERTIES)


Secila fush ka nj varg tiparesh q kontrollojn mnyrn se si ruhet n tabel. Vendosja e tipareve t fushs ndihmon n ndrtimin e nj baze t qndrueshme sepse ato do t prdoren pr forma dhe raporte dhe pr at n hapat e mtutjeshm t dizajnimit t bazs do t kemi m pak pun.Normalisht vnia e tipareve t fushs bhet kur t krijojm tabeln me Design View.Tiparet e fushs jan n panelin Field Properties n Design View.Disa prej atyre tipareve jan t listuara n tabeln e mposhtme. Tipari i fushs Field Size Format Decimal Places Input Mask Caption Default Value Validation Rule Validation Text Required Allow Zero Length Indexed Prshkrimi Limiton numrin e karakterve n fushn Text ndrsa te Number cakton intervalin n t cilin mund t jen numrat Kontrollon t dhnat se si do t paraqiten n Datasheet View Numri i decimaleve pas piks dhjetore Prcakton modelin se si do t futen t dhnat, si p.sh. shenja te numrat e telefonit Saktson emrin tjetr t fushs i cili do t paraqitet n tabel, form dhe raport sht vler e parazgjedhur nse shfrytzuesi nuk jep ndonj vler pr at fush Kufizon q t dhnat e futura ti plotsojn kushtet e caktuara. P.SH. caktojm q n fushn mimi vlera mos ta kaloj vlern 25 sht teksti q do t paraqitet nse thyhet rregulla Validation Rule Prcakton se fusha nuk duhet t lihet boshe ( e pa plotsuar) kur t fusim t dhna Prcakton nse mund ti fusim t dhnat si thonjzat ( ) Shpejton kthimin e t dhnave n fush.T gjith elsat primar automatikisht indeksohen

Formatet pr tipin e t dhnave Field Size


Kur t caktojm madhsin e fushs (Field Size) mund t fusim t dhna aq sa na lejojn parametrat e vn.Pasi t shtypim numrin maksimal t numrave nuk na lejohet m t fusim t dhna n at fush.Madhsin e fushs mund ta vm pr Text, Number si dhe AutoNumber.Pr Text thjesht shkruajm numrin e dshiruar t karakterve q do t lejon 8

BAZAT E T DHNAVE t futen n nj fush (numri maksimal 255 karakter).Pr Number kemi disa opcione tjera t listuara n tabeln e mposhtme. Madhsia e fushs Byte Integer Long Integer Single Double ReplicationID Intervali Prej 0 deri 255 Prej -32768 deri 32767 -2,147,483,648 deri 2,147,483,647 -3.4 x 1038 deri 3.4 x 1038 -1.797x10308deri1.797x10308 Identifikues unik global Numrat pas piks dhjetore Asnj, t dhnat rrumbullaksohen Asnj, t dhnat rrumbullaksohen Asnj, t dhnat rrumbullaksohen Deri n 7 Deri n 15 Jo n dispozicion

Formatet pr tipet e t dhnave Text dhe Memo


Access-i prdor katr simbole pr Format n Text dhe Memo: @ & < > tekst karakter ( karakter ose hapsir) nuk krkohet tekst karakter t gjith karaktert n at fush i konverton n shkronja t vogla t gjith karaktert n at fush i konverton n shkronja t mdha

Q emrat t paraqiten me shkronja t mdha pra n Format shkruajm >, ndrsa pr tu paraqit emrat me shkronja t vogla prdorim <. Pr numrat e telefonit shruajm @@@/@@@-@@@ Pra nse shkruajm 044123456 numri n fush do t paraqitet 044/123-456. Mund t krijom edhe forma t tipit dypjessh.Kto dy pjes ndahen me ;(pikpresje).Ku n pjesn e par e shkruajm formn se si do t jet numri nse fusim ndonj t dhn ndrsa n pjesn e dyt nse nuk fusim ndonj t dhn. P.SH. @@@/@@@-@@@;I panjohur[RED] Pra numri i shkruar 044123456 do t paraqitet 044/123-456 ndrsa nse nuk shkruajm asgj ather n at fush do t shkruhet I panjohur me ngjyr t kuqe. Formati: >&&&-Q@@@ Shkruhet: abc400 Paraqitet: ABC-Q400 9

BAZAT E T DHNAVE

Formatet pr tipet e t dhnave Number dhe Currency


Mund t zgjedhim nga gjasht formatet t paradefinuara t listuara n tabeln e mposhtme:

Tipi General Currency Fixed Standard Percent Scientific Euro

Numri i futur 987654.321 987654.321 987654.321 987654.321 .987 987654.321 987654.321

Paraqitja e numrit 987654.3 $987,654.32 987654.32 987,654.32 98.7% 9.88E+05 987,654.32

Formati # # # # # # #. # $# # #,# #0.00 # # # # # #.# # # # #,# # #.# # # # #.# #% # # #E+00 # # #,# # #. # #

Shenja . dhe , 0 # %

Prshkrimi Pdorimi i shenjs pr ndarjen e shifrave dhjetore si dhe shenjs ndarse pr vlerat mijshe. Zvendsuese pr shifrat ose pr 0 Zvendsuese pr shifrat ose pr asnj shenj Prezanton vlern n prqindje

Por mund t krijojm edhe formatet sipas dshirs, pr pjesn numerike formati sht n katr pjes ku pjesa e par(1) sht pr numr pozitiv,pjesa e dyt(2) pr numr negative, pjesa e tret(3) pr vlern zero dhe pjesa e katrt pr vlern boshe. P.SH. # #,# #0.00[GREEN];( #,# #0.00)[RED];ZERO;BOSHE Ky format do ti paraqes numrat pozitiv me ngjyr t gjelbr, numrat negative me ngjyr t kuqe, ku ka vler 0 do t shkruhet ZERO dhe ku nuk shkruhet asgj do t jet BOSHE. 10

BAZAT E T DHNAVE Shembuj N nj tabel kemi dy kolona njra pr emrin e mallit e tipit Text dhe tjetra pr sasin e atij malli e tipit Number.ka duhet br q t dhnat n kolonn pr sasin e mallit t paraqiten n formn : Malli Domate Dardha Moll Pesha 30 kg 45 kg 50 kg

Duhet q n Design View pr fushn Pesha te Format t shkruajm # kg.

Formatet pr tipin e t dhnave Date/Time


Format General Date Long Date Medium Date Short Date Long Time Medium Time Short Time : / c d, dd ddd dddd ddddd dddddd w ww m, mm mmm mmmm q y Prshkrimi Nse vlera sht vetm data ather ora nuk paraqitet.Nse vlera sht vetm ora ather data nuk paraqitet Dita dhe muaji shkruhen sikur Tuesday, July 6, 2005 sht e tipit 06-Jul-2005 7/6/2005 Ora paraqitet me or, minuta dhe sekonda t ndara me dy pika dhe e pasuar me AM ose PM sikur 6:30:15 PM sht e njjt si Long Time vetm se sekondat nuk paraqiten Ora paraqitet n formatin 24-orsh pa sekonda sikur 18:30 Ndars i kohs si p.sh. 12:34:23 Ndars i dats si p.sh. 12/06/2004 Njsoj si General Date Dita e muajit-nj ose dy shifra numerike (1-31) Tri shkronjat e para t ditve (Sun-Sat) Emri i plot i ditve Njsoj si Short Date Njsoj si Long Date Dita e javs (1-7) Vikendi i vitit (1-53) Muaji i vitit (1-12) Tri shkronjate para t muajit (Jan-Dec) Emri i plot i muajit (January-December) Data e shfaqur si qerek i vitit (1-4) Dita e vitit (1-366) 11

BAZAT E T DHNAVE yy yyyy h, hh n, nn s, ss ttttt AM/PM ose A/P am/pm ose a/p AMPM Dy shifart e fundit t vitit Viti i plot (0100-9999) Ora- nj ose dy shifra numerike (0-23) Minutat-nj ose dy shifra numerike (0-59) Sekondat-nj ose dy shifra numerike (0-59) Njsoj si Long Time Ora (1-12) me shkronja t mdha Ora (1-12) me shkronja t vogla Ora e definuar me Windows Regional Settings

Shembuj
T paraqitet data n formn : 1. dita/muaji/viti 2. tri shkronjat e para t ditve 3. si qerek 4. emri i plot i muajit

Fomatet pr Yes/No
N tipin e t dhnave Yes/No mund t definojm formatet edhe sipas dshirs. Formati n tipin e t dhnave ndahet n tri pjes.Ku pjesa e par nuk ndonj efekt por duhet q gjithnj t jet shenja ; (pikpresje), pjesa e dyt prdoret pr vlern On ose True, pjesa e tret prdoret pr vlern Off ose False.P.SH. nse dojm q t shkruajm se nj student sh i pranishm dhe jo i pranishm, kjo shkruhet kshtu ;i pranishm;Jo i pranishm.Nse dshirojm q ti paraqesim vlerat me ngjyra ather shkruajm: ;I pranishm[RED];Jo i pranishm[GREEN].

Formatet pr tipin e t dhnave Hyperlink


Formati pr kt tip t t dhnave ndahet n tri pjes: Teksti q shfaqet n fush Adresa, shtegu deri te datoteka (UNC) ose web faqe (URL) n internet Nnadresa, lokacion specific n datotek ose faqe. Pjest ndarse ndahen mes veti me simbolin #. P.SH. Web faqja e Microsoft Net#http://www.msn.com

12

BAZAT E T DHNAVE

Input Mask
Pr tu siguruar se t dhnat do t futen n mnyr t duhur krijojm Input Mask. Input Mask na lejon t definojm me an t kriterit se si do t futen t dhnat n fush. Numr ( 0-9; hyrja e detyrueshme;[+] dhe [-] nuk lejohen) Numr ose hapsir (hyrja jo e detyrueshme; [+] dhe [-] nuk lejohen) Numr ose hapsir ( hyrja e jo e detyrueshme, [+] dhe [-] lejohen) Shkronj (A-Z, hyrja e detyrueshme) Shkronj (A-Z, hyrja opcionale) Shkronj ose numr (hyrja e detyrueshme) Shkronj ose numr (hyrja opcionale) fardo karakteri ose hapsir (hyrja e detyrueshme) fardo karakteri ose hapsir (hyrja e opcionale) Konverton t gjith karaktert pas saj n shkronja t vogla Konverton t gjith karaktert pas saj n shkronja t mdha Detyron input mask t plotsohet nga e majta n t djatht. Paraqet karakterin pas saj p.sh. \A paraqet A Pika dhjetore,pr mijshe,ndarsit e dats dhe kohs

0 9 # L ? A a & C < > ! \ .,:;-/

Megjithat m leht pr t vn Input Mask sht me Input Mask Wizard. Ku aty na jepen mundsi t shumta dhe t gatshme. Shembuj Input Mask >LL000 000 000 00 90/90/0000 Shkrimi af345 50540130 01121997 Paraqitja AF345 505 401 30 01/12/1997

13

BAZAT E T DHNAVE

Decimal Places
Tipari i fushs Decimal Places sht valid pr t dhnat numerike dhe Currency. Numri i decimaleve mund t jet prej 0 deri n 15 varsisht nga madhsia e fushs numerike ose Currency. Nse fusha sht Byte, Integer ose Long Integer do t kemi 0 vende decimale. Nse fusha sht Single ather kemi prej 0 deri n 7 vende decimale,nse fusha sht Double ather kemi prej 0 deri n 15 vende decimale.Nse definojm fushn si Currency ather Access-i e vn numrin e decimaleve n 2.

Validation Rule dhe Validation Text


Tipet Date/Time, Number dhe Yes/N/ t fushave q n instalimin standard t programit kan t integruara funksionet e shqyrtimit t vlefshmris s t dhnave.Kshtu pr shembull`n qoft se do t shkruani vlern 31.02.05 n fushn e dats apo nj shifr n nj fush numerike, do t pasoj fj njoftim pr shkrim t ga`uaz d t dhnave.Opsionet Validation Rule dhe Validation Text t fushave ofrojn mundsi t tjera pr t kufizuar hedhien e gabuar t t dhnave n bazn e t dhnave. R2egull vlefshmrie mund t specifikoni pr do fush t nj tabele.Me kt prcaktim kufizohet ndieshm hedhja e gabuar e t dhnave.N opsionet Validation Rule mund t formuloni njoftimin e gabimit. Pr t informuar prdoruesin e bazs s t dhnave n rast t shkeljes t rregullit t vrtetsis mund t prpiloni njoftime prkatse pr do fush.Njoftimet e vrtetsis realizohen n opsionet Validation Text t fushave prkatse.

Operator krahasimi, vler krahasimi


Si operator krahasues mund t prdorni shenjat krahasuese ( = < > ) si dhe operatorin krahasues LIKE Vlera e krahasimit pr kufizimin e vlerave t t dhnave n rastin e prdorimit t operatorit LIKE mund t prmbaj edhe shenj zvendsuese. N rast se pr nj fush ju duhet t prcaktoni m shum se nj rregull, mund t prdorni operatorin lidhs AND/OR dhe NOT/BETWEEN. Si vlera krahasimi mund t prdoret edhe rezultati i nj funksioni, si pr shembull rezultati i funksionit t dates aktuale DATE(). Number Date/Time Text Yes/No >=5 <#12.01.2005# >A <>Yes

Shembuj

14

BAZAT E T DHNAVE Shkrimi mund t filloj me nj shifr dhe m pas mund t vijoj me nj numr fardo shenjash t ndryshme Lejohet t shkruhen vetm numra pesshifror E dhna q shkruhet duhet t prmbaj nj X ose nj Y Lejohet t shkruhen vetm shkronjat e mdha t alfabetit >=Date() LIKE [1-9] AND LIKE [!6] >#1.1.1850# AND <Date()

LIKE #* LIKE ##### LIKE [XY] LIKE [A-Z] Vetur or Shtpi Between 3 AND 100 NOT Between 3 AND 100

Ruajtja e tabels
Pas dizajnimit t tabels duhet q at ta ruajm duke i dhn emr.Emri mund t prmbaj deri 64 karakter duke prfshir edhe hapsirn.Kta karakter mund t jen shkronja, numra dhe hapsira.Emri nuk duhet t prmbaj pik ( . ), pik uditse ( ! ), kuota ( ` ), kllapa t mesm ( [ ] ) .Me ruajtjen e tabels nuk krijohet nj datotek e re por i shtojm nj objekt datoteks s bazs t t dhnave.

Krijimi i tabels me Table Wizard


Nj ndr mnyrat e krijimit e tabelave sht edhe Table Wizard (magjistari i tabels). Me an t Table Wizard i tr krijimi i tabels bhet me an t modeleve dhe shablloneve t tipit biznes ose personal.

Ushtrime
N bazn e t dhnave BANKA krijoni tabeln KLIENTT me kto fusha: Numri i llogaris Emri Mbiemri Qyteti Adresa Tel Si dhe definoni tipin e t dhnave pr kto fusha.Shkruani prshkrimin pr seciln fush dhe si els primar t jet fusha Numri i llogaris.

15

BAZAT E T DHNAVE N bazn e t dhnave BANKA krijoni tabeln KREDIT me kto fusha: ID Numri I llogaris Tipi i kredis Shuma Prqindja Kohzgjatja e kredis Aprovimi Fillimi ID Nnpunsit Si dhe definoni tipin e t dhnave pr kto fusha.Shkruani prshkrimin pr seciln fush dhe si els primar t jet fusha ID. N bazn e t dhnave BANKA krijoni tabeln NNPUNSIT m kto fusha: ID Nnpunsit Emri Mbiemri Filiala Si dhe definoni tipin e t dhnave pr kto fusha.Shkruani prshkrimin pr seciln fush dhe si els primar t jet fusha ID Nnpunsit. Tabela hapet n Datasheet View.Datasheet View sht e prshtatshme pr futjen, prmisim ose fshirje t t dhnave n tabel. T dhnat jan t radhitura n rreshta dhe shtylla.Kalimi nga nj e dhn te tjetra bhet me

Datasheet View

n fund t tabels.

Shtimi i t dhnave bhet n Datasheet View. Ushtrime


I shtoni kto t dhna n tabeln KLIENTT: Numri i llogaris 140201 140202 140203 140204 140205 Emri Bujar Amir Valbona Gani Lavdim Mbiemri Shulemaja Simnica Krasniqi Thai Kastrati Qyteti Prishtin Fush Kosov Dardan Besian Prishtin Adresa Bregu i Diellit rr. Agim Ramadani rr. Adem Jashari rr. Zahir Pajaziti Tophane Tel 044/123-456 044/321-654 044/213-546 044/312-645 044/132-465 16

BAZAT E T DHNAVE I shtoni kto t dhna n tabeln KREDIT: ID 1 2 3 4 5 6 7 8 9 10 Numri i llogaris 140203 140205 140201 140203 140202 140204 140205 140201 140205 140202 Tipi i kredis Vetur Mobile Vetur Shtpi Kompjuter Kuzhin Lavatrie Mobile Vetur Tavolin Shuma 4500 1300 7000 45000 630 1000 420 1730 5250 420 Prqindja 6 7.5 5.5 4.7 7 4 3 5.8 7.3 8.3 Kohzgjatja Aprovimi Fillimi e kredis 10/04/ 12 po 2006 23/08/ 6 po 2006 15/02/ 36 po 2005 20/05/ 120 jo 2005 12/07/ 12 po 2006 04/09/ 12 po 2005 05/06/ 6 po 2006 02/10/ 12 po 2006 12/04/ 18 po 2005 12/08/ 12 jo 2005 ID Nn 3 1 1 3 4 2 1 1 1 4

I shtoni kto t dhna n tabeln NNPUNSIT: ID Nnpunsit 1 2 3 4 Emri Astrit Valon Faton Albana Mbiemri Kabashi Ramadani Gashi Gashi Filiala Prishtin Besian Dardan Fush Kosov

17

BAZAT E T DHNAVE

Ndryshimi i gjrsis dhe gjatsis s kolonave gjegjsisht rreshtave


Gjrsia standarde e kolons sht 15.6667.Kt gjrsi mund ta ndryshoni duke shkuar te menyja kryesore te Format dhe te Column Width. Lartsia standarde e rreshtave sht 12.75.Kt lartsi mund ta ndryshoni duke shkuar te menyja kryesore te Format dhe te Row Height.

Ndryshimi i llojit t shkronjave, qelis.Lvizja e kolons, fshehja e kolons dhe ngrirja e kolons
Lloji i shkronjave ndrrohet duke shkuar n Format dhe Font, aty mund t zgjedhim llojin e shkronjave, stilin dhe madhsin. Lvizja e kolons mund ta bjm n Datasheet View, Design View.Selektojm kolonn dhe e trheqim deri te vendi ku dshirojm. Fshehja dhe ngrirja e kolons bhet n menyn kryesore te Format dhe te Hide Columns (Unhide Columns) prkatsisht Freeze Columns (Unfreeze All Columns).

Filter by selection
Mnyra m e thjesht dhe e shpejt e filtrimit t t dhnave sht me an t Filter By Selection ku mund t zgjedhim fushn e cila ka t dhn me an t cils dojm ti filtrojm t dhnat.Me shfrytzimin e Filter By Selection zgjedhen t dhnat t cilat plotsojn kriterin e dhn me filter.

Filter excluding selection


Filter Excluding Selection sht e njjt sikur Filter By Selection vetm se ktu paraqiten t dhnat q nuk plotsojn kriterin e dhn nga filteri.

Filter for
Me klikimin me t djatht fushn n kolonn e cila prmban t dhnn me t ciln dojm t filtrojm, te Filter For shkruajm kriterin dhe shtypim Enter.

Filter by form
Me zgjedhjen e Filter By Form n dritare paraqitet nj list.Lista prmban t dhnat ekzistuese n at fush, ashtu q leht mund t zgjedhim se me ciln t dhn dojm t filtrojm t dhnat.Ky opcion sht i prdorshm shkaku q nuk kemi nevoj t mbajm mend t dhnat npr fusha.

18

BAZAT E T DHNAVE

LIDHJET E TABELAVE (RELATIONSHIP)


Tabelat mund t lidhen mes vete n mnyr q t kemi qasje m t shpejt t informacionit, evitimit t futjes t t dhnave t dyfishta, krijimit t pyetsorve, formave dhe raporteve.Pastaj lidhja na mundson krijimin e tabelave m t vogla q jan m efikase kur duhet t nxjerrim t dhna nga to.Kur t bhet lidhja e dy tabelave duhet q fusha n tabeln e par t jet els primar t cilin e trheqim deri te fusha e tabels s dyt.Pra n tabeln e par fusha duhet t jet els primar ashtu q t evitohet mundsia e futjes s t dhnave t dyfishta.Fushat q lidhen n t dy tabelat duhet t jen t t njjtit tip ose t ngjashm, nse tipi i t dhnave sht Number ato duhet t ken t njjtn madhsi t fushs. P.SH. Mund t krijojm nj tabel q prmban emrat e klientve, adresat dhe numrat e telefonave.Poashtu mund t vejm els primar pr secilin klient.Pastaj mund t krijojm nj tabel tjetr ku do t jen porosit e bra nga klientt.Kjo tabel poashtu mund t ket nj fush si unike pr do klient por jo emrin e klientit, adresn ose numrin e telefonit.Me lidhjen e ktyre dy tabelave nuk sht e nevojshme q pas do porosie t futet emri, adresa, telefoni i klientit. Access-i prfshin dy lidhje bazike: nj me nj dhe nj me shum.Lidhja nj me nj sht kur nj e dhn nga tabela e par prkon me nj t dhn n tabeln e dyt.Lidhja nj me shum sht kur nj e dhn n tabeln e par prkon me shum t dhna n tabeln e dyt.Access-i prcakton vet tipin e lidhjes.

KRIJIMI I LIDHJES
Krijimi i lidhjeve bhet n dritaren e lidhjeve(figura e mposhtme).Hapim bazn e t dhnave, klikojm n pulln Relationships pastaj n pulln Show Table

.Zgjedhim tabeln e par dhe shtypim Add poashtu veprojm edhe me tabeln e dyt.Pastaj i lidhim fushat nga tabela e par n t dytn duke trhequr fushn nga tabela e par e cila prkon me fushn n tabeln e dyt.N fund zgjedhim Create dhe e mbyllim dritaren me Close.

19

BAZAT E T DHNAVE

Vnia e integritetit referencial (Referential Integrity)


Me krijimin e lidhjes n mes t dy tabelave mund t vejm integritetitn referencial.Integriteti referencial sht nj bashksi e rregullave t cilin Access-i e prdor pr vrtetimin e vlefshmris s lidhjes.Integriteti referencial poashtu ndalon fshirjen ose ndryshimin aksidental t t dhnave.Pr t shfrytzuar Integritetin referencial duhet t plotsohen kushtet vijuese:fusha e lidhur nga tabela e par duhet t jet els primar, fushat n t dy tabelat duhet t jen t t njjtit tip t t dhnave si dhe ti takojn t s njjts baz.Me vnien e Integritetit referencial nuk mund t fusim t dhna n tabeln e dyt nse nuk prkon me fushn n tabeln e par.Nuk mund t fshihen t dhnat prej tabels s par nse ndonj e dhn n tabeln e dyt prkon me at dhe s fundi nuk mund t ndryshoni vlern elsit primar n tabeln e par nse ekzistojn t dhna t lidhura. Megjithat nse dojm t ndryshojm t dhnat dhe srish t kemi integritetin referencial ather duhet q t zgjedhim opcionet edhe Cascade Update Related Fields dhe Cascade Delete Related Records.Kur t zgjedhen kto dy opcione ather Access-i automatikisht mirmban integritetin referencial.

USHTRIME
Krijoni lidhjen e tabels KLIENTT me tabeln KREDIT.

20

BAZAT E T DHNAVE

PYETSORT
Fjala QUERY (PYETSOR) rrjedh prej fjals latine qu rere, q do t thot pyetje ose krkes.Pyetsori n Access sht pyetja q bhet pr informacionin q gjendet n tabel.Pyetsori mund t jet i thjesht, t krkoj t dhna vetm nga nj tabel dhe mund t jet i prbr t krkoj t dhna n shum tabela n dallim nga filtert q u prdorn te tabelat, ku t dhnat mund t nxirren nga vetm nj tabel. Pyetsori nuk prmban t dhna, ai prmban instruksione t cilat Access-i i prdor pr t nxjerr t dhnat q u prgjigjen atyre instruksioneve.Prandaj kur t shtojm ndonj t dhn n tabel nuk kemi nevoj q t bjm ndryshime edhe n pyetsor.T dhnat q paraqiten pas ekzekutimit t pyetsorit quhen bashksi e t dhnave (Recordset).

Mundsit me pyetsor
Zgjedhja e tabels. Mund t nxjerrim informacion prej nj tabele ose shum Zgjedhja e fushs. Mund t caktojm se ciln fush nga tabela dshirojm ta
shohim n bashksin e t dhnave. Sortimi i t dhnave. Me kt na mundsohet q t dhnat ti shohim n nj renditje t caktuar. Kalkulimet. Mund t shfrytzojm pyetsort pr t br kalkulime n t dhna. Krijimin e tabelave. Mund t shfrytzojm pr krijimin e tabelave nga dhnat si rezultat i nj pyetsori. Krijimi i formave dhe rapoteve. Mund t krijojm forma dhe raporte, ku rndsia e ksaj sht se sa her q hapet forma ose printohet raporti, pyetsori do t kthej t dhnat m t freskta nga tabelat. Krijimi i grafeve. Mund t krijojm grafe nga rezultati i pyetsorit, t cilin rezultat mund ta shfrytzojm n forma dhe raporte. Krijimin e nnpyetsorve. Mund t krijojm pyetsor duke shfrytzuar rezultatin nga nj pyetsor tjetr. tabelave.

Tipet e pyetsorve
Select. Ky sht tipi m i zakonshm i pyetsorve.Sikurse tregon edhe vet emri
ky pyetsor selekton t dhnat nga nj ose m shum tabela (bazuar n ndonj kriter), duke krijuar bashksin e t dhnave dhe paraqitjen e saj n Datasheet. Total. Kto jan versione speciale t pyetsorve Select. Pyetsort Total mundsojn pr t mbledhur t dhnat sipas nj kriteri (si p.sh. group by, count etj). Action. Ky tip i pyetsorve na mundson t krijojm tabela te reja (make table query) ose ndryshimin e t dhnave (delete, update dhe append) n tabelat ekzistuese.

21

BAZAT E T DHNAVE

Crosstab. Ky tip i pyetsorve grupon t dhnat me metoda t ndryshme prllogaritjeje. SQL. Pyetsort Structured Query Language krijohen me shkruarjen e komandave specifike SQL. Top(n). Ky pyetsor mund t shfrytzohet vetm s bashku me pes tipet e pyetsorve t mparshm.Na mundson t specifikojm numrin e prqindjes t t dhnave q dshirojm ti shohim.

Krijimi i pyetsorit
Pas krijimit t tabelave dhe vendosjes s t dhnave n to, ather mund t punojm me pyetsor.Pr krijimin e nj pyetsori duhet prcjell kta hapa: 1. Zgjedhim objektin Queries n dritaren e bazs s t dhnave 2. Klikojm n pulln New dhe hapet dritarja, ku mund t zgjedhim pes mnyra t krijimit t pyetsorit.Zgjedhja e par sht Design View

3. Zgjedhim Design View dhe klikojm n pulln OK. 4. Pastaj na paraqitet dritarja Show Table ku jan t gjitha tabelat dhe pyetsort (nse ka) t krijuar m par.

22

BAZAT E T DHNAVE

5. Zgjedhim tabeln dhe klikojm n pulln Add (ose vetm klikojm dy her). Kt mund ta prsrisim edhe me zgjedhjen e tabelave tjera. 6. N fund klikojm n pulln Close dhe hapet dritarja e pyetsorit e cila prbhet prej dy pjesve.Pjesa e par ku jan tabelat dhe lidhja e tyre dhe pjesa e dyt prfshin fushat, tabeln, sortimin, kriterin e pyetsorit q quhet zona e dizajnimit t pyetsorit.

Nse kemi zgjedhur m shum se nj tabel ather ato duhet t jen t lidhura ashtu q t na japin rezultat t sakt dhe domethns.Nse tabelat nuk jan t lidhura ather si rezultat do t paraqiten t gjitha kombinimet e t dhnave n ato dy tabela.P.SH. nse tabela e par ka 20 t dhna ndrsa tabela e dyt ka 5 t dhna ather rezultati do t ket 100 t dhna, q nuk kan ndonj domethnie. Nse tabelat jan t lidhura n mes veti n dritaren e lidhjeve (Relationship window) ather lidhja n mes tyre do t shihet automatikisht edhe n Design View t pyetsorit (si n figurn m lart). 23

BAZAT E T DHNAVE Nse tabelat nuk jan t lidhura n dritaren e lidhjeve (Relationship window) ather duhet q ato tabela ti lidhim n dritaren e pyetsorit.Nga tabela e par zgjedhim fushn dhe e trheqim deri te fusha e tabels s dyt me t ciln do t krijojm lidhjen.Ather do t paraqitet nj vij lidhse n mes t ktyre fushave, nse klikojm dy her n at vij do t hapet nj dritare ku mund t prcaktojm edhe lidhjen n mes t dy tabelave.

Prcaktimi i lidhjes n mes t dy tabelave mund t bhet n tri mnyra: 1. Relacioni prjashtues (ekskluzion) 2. Relacion-majtas prfshirs (inkluzion) 3. Relacion-djathtas prfshirs (inkluzion) Prfshin t gjitha t dhnat te t cilat fushat e lidhura jan t barabarta Prfshin t gjitha t dhnat nga tabela e par edhe n qoft se n tabeln e dyt pr ato t dhna nuk ndonj t dhn. Prfshin t gjitha t dhnat nga tabela e dyt edhe n qoft se n tabeln e par pr ato t dhna nuk ndonj t dhn.

Lidhja q definohet n dritaren e pyetsorit nuk do t paraqitet n dritaren e lidhjeve (Relationship window). Access-i bn lidhjen n mes t dy tabelave automatikisht nse n t dy tabelat ekzistojn fusha me emr t njjt. Pjesa e dyt e dritares s pyetsorit prmban n vete emrat e fushave,emrin e tabels, sortimin si dhe kriteret me an t t cilave do t krkohen t dhnat n tabela ose pyetsor.

24

BAZAT E T DHNAVE

Prfshirja e fushave n pyetsor


Prfshirja e fushave n pyetsor bhet duke klikuar dy her n at fush ose trheqjen e fushs nga tabela deri te zona e dizajnimit t pyetsorit. Nse dshirojm q ti bartim vetm disa fusha n pyetsor at mund ta bjm duke i zgjedhur fushat n tabel duke mbajt t shtypur tastin CTRL dhe duke klikuar n fushat e dshiruara dhe pastaj i trheqim deri te zona e dizajnimit t pyetsorit.Nse dshirojm q t gjitha fushat e tabels t jen n pyetsor ather klikojm dy her n * n tabel ose e trheqim * deri te zona e dizajnimit t pyetsorit. Pas selektimit t fushave mund t bjm ndrrimin e renditjes, fshirjen, riemrimin (vetm n pyetsor), sortimin,fshehjen dhe vnien e kriterit t tyre. Ndrrimi i renditjes n zonn e dizajnimit t pyetsorit bhet duke selektuar fushn dhe trheqjen e saj n pozitn e dshiruar. Fshirja e fushs n zonn e dizajnimit t pyetsorit bhet duke selektuar fushn e dshiruar dhe shtypim tastin Delete. Riemrimi i fushs n zonn e dizajnimit t pyetsorit bhet n rreshtin Field n zonn e dizajnimit t pyetsorit duke shkruar te fusha e dshiruar emrin e ri pastaj : dhe emrin e fushs.P.SH. Dshrojm t ndrrojm emrin e fushs F1 me F2, F2:F1 Kur t shikojm rezultatin e pyetsorit mund t dshirojm q t dhnat t jen t renditura (sortuara) sipas nj rregulle pr analizim sa m t leht t tyre.Sortimi bhet sipas rregullit alfabetik ose numerik (n rritje A deri te Z dhe 0 deri te 9, n zbritje Z deri te A dhe 9 deri te 0).Sortimi mund t bhet edhe me disa fusha, n at rast sortimi do t bhet nga e majta n t djatht. Fshehja e fushave bhet n zonn e dizajnimit t pyetsorit n rreshtin Show duke aktivuar kutizn e kontrollit. Kriteret e nj pyetsori formulohen n zonn e dizajnimit t pyetsorit n rreshtin Criteria. Kriteret thjesht jan rregulla t cilat Access-it i tregojn se cilat t dhna dshirojm ti shohim.

Ruajtja e pyetsorit

Pyetsori ruhet duke klikuar n n toolbar ose File dhe Save, pastaj shkruajm emrin e dshiruar pr pyetsorin n dritare dhe shtypim OK. Ekzekutimi i pyetsorit Ekzekutimi i pyetsorit bhet duke shtypur n toolbar ikonn ose Query dhe Run.

25

BAZAT E T DHNAVE Detyr:

1. Krijoni nj pyetsor me an t tabels KLIENTT ku do t prfshihen t gjitha fushat e asaj tabele.Bni ndrrimin e renditjes s fushave Emri dhe Mbiemri, riemroni fushn Tel me Telefoni, sortoni fushn Emri sipas renditjes alfabetike A deri te Z, sortoni fushn Emri sipas renditjes alfabetike A deri te Z dhe fushn Mbiemri sipas Z deri te A, fshehni fushat Mbiemri dhe Adresa, fshini fushn Adresa.N fund ruani pyetsorin me emrin Test. 2. Krijoni nj pyetsor nga tabelat KLIENTT dhe KREDIT ku do t prfshihen fushat Numri i llogaris, Emri, Mbiemri nga tabela KLIENTT dhe Tipi i kredis, Shuma nga tabela KREDIT.N fund ruani pyetsorin me emrin Kredit e klientve. 3. Krijoni nj pyetsor ku do t prfshihet emri i klientit, mbiemri i klientit si dhe numri i telefonit t atij klienti.N fund e ruani pyetsorin me emrin Tel i klientit. 4. Krijoni nj pyetsor nga tabela KREDIT ku do t prfshihen t gjtha fushat.Pyetsorin e ruani me emrin Test1.

Kriteret me prfshirje t emrit t objektit, dats, ors dhe teksteve Kur duhet t prdorim emrat e fushave apo vlerat e dats ose ors pr formulimin e kushteve duhet t respektojm sintaksn e mnyrs s shkrimit.Pr kt duhet t kemi parasysh kto rregulla: Sintaksa Objektet [Emri] Shpjegimi Emrat e fushave, raporteve apo formularve duhet t shkruhen n kllapa katrore. Data dhe ora duhet t shkruhen brenda shenjs #. Si rregull Access-i sht n gjendje t dalloj formatin e dats dhe, mbas shkrimit t nj date, ai e vendos at automatikisht midis shenjave #. Tekstet duhet ti shkruajm gjithmon midis thonjzave.Edhe n kt rast Access-i ka aftsin ti dalloj tekstet dhe i fut ato automatikisht midis thonjzave. Shembull [mimi]*1.6

Data, Ora

#Data#

#12.04.05#

Teksti

Tekst

Ushtrimet laboratorike

26

BAZAT E T DHNAVE Operatori i krahasimit LIKE Me ndihmn e operatorit LIKE mund t gjejm nse fushat e tipit tekst kan n prmbajtjen e tyre shenja t caktuara.Pr shembull ju krkohet t hartoni listn e t gjith klientve emri i t cilve fillon me shkronjat A deri n D. Kriteri i przgjedhjes formulohet duke prdor shenjat zvendsuese. Shenja Shembull LIKE K* t gjith personat emri i t cilve fillon me shkronjn K. LIKE [A-D]* t gjith klientt emri i t cilve fillon me shkronjn A deri D. I prgjigjet nj numri t LIKE [AZ]* t gjith klientt emri i t fardoshm shenjash cilve fillon me shkronjn A ose Z. LIKE [!A]* t gjith klientt emri i t cilve fillon me t gjitha shkronjat pos shkronjs A. LIKE ???M t gjith emrat q prbhen Zvendson vetm nj shenj nga katr shkronja dhe ku shkronja e katrt t fardoshme sht M. LIKE ??S* shkronja e tret duhet t jet S. LIKE #* prmbajtja e fushs duhet t filloj me nj shifr dhe mund t ket fardo Zvendson nj shifr t gjatsie. fardoshme LIKE #### t gjitha prmbajtjet e fushs q prbhen nga katr shifra. Lidh dy stringje mes veti si [Emri]& &[Mbiemri] nj Efekti

&

Operatort logjik AND OR NOT BETWEEN

Sintaksa Kushti1 AND Kushti2 Kushti1 OR Kushti2 NOT Kushti BETWEEN Vlera1 AND Vlera2

Efekti T dyja kushtet duhet t plotsohen T paktn njri kusht duhet t plotsohet Ky kusht nuk lejohet t plotsohet Vlera e ksaj fushe duhet t jet midis vlers1 dhe vlers2

27

BAZAT E T DHNAVE

Kriteri pr fushn e tipit t t dhnave Yes/No Nj vler Jo mund ta gjejm duke prcaktuar si kusht No, False, Off ose 0.Pr krkimin e nj vlere Po prcaktojm si kusht Yes, True, On ose -1.

Operatort matematik
Operatori * + / ^ Mod Prshkrimi Realizon shumzimin e numrave Realizon mbledhjen e numrave Realizon zbritjen e numrave ose shrben si parashenj e nj numri Realizon pjestimin e numrave Realizon ngritjen n fuqi t nj numri me eksponentin e dhn Mbetja n numr t plot e pjestimit t dy numrave Shembull [mimi]*[Sasia] ose 2*[mimi] [mimi]+[Shpenzime_Transport] ose 11+45 [mimi]-[Tatimi] ose [mimi]-( [mimi]*0.1) [Sasia]/[Pesha] ose [Shuma]/5 [Gjatsia]^2 5 Mod 2 rezultati 1

Operatort relacional
Operatori = <> > >= < <= Prshkrimi Operatori: i barazimit [Tipi i kredis]=Vetur I ndryshm [Tipi i kredis]<>Vetur Operatori: m i madh [Shuma]>20000 Operatori: m i madh ose baraz [Shuma]>=20000 Operatori: m i vogl [Shuma]<20000 Operatori: m i vogl ose baraz [Shuma]<=20000

28

BAZAT E T DHNAVE Operatort me prparsi Kur kemi t bjm me shprehje komplekse q kan shum operator,Access-i duhet t prcaktoj se cili operator ka prparsi.Pr at Access-i e ka t paradefinuar prioritetin e kategorive t operatorve sipas ksaj renditje: 1. Operatort matematik 2. Operatort relacional 3. Operatort logjik Secila kategori ka rendtitjen e prparsis t operatorve. Prioriteti te operatort matematik 1. Fuqia 2. Negacioni 3. Prodhimi dhe/ose Pjestimi (nga e majta n t djatht) 4. Pjestimi i numrave t plot 5. Moduli 6. Mbledhja dhe/ose zbritja (nga e majta n t djatht) 7. Lidhja e Stringjeve Prioriteti te operatort relacional 1. Baras 2. Jo Baras 3. M e vogl 4. M e madhe 5. M e vogl ose baras 6. M e madhe ose baras 7. LIKE Prioriteti te operatort logjik 1. NOT 2. AND 3. OR Shembuj: LIKE M[A]* Kthen vlern e sakt nse shkronja e par sht M e dyta A. LIKE [!e-zE-Z] Kthen vlern e sakt nse shkronjat jan A,B,C,D,a,b,c ose d. LIKE AB#### Kthen vlern e sakt nse fillon me shkronjat AB e shoqruar me katr shifra. LIKE [#]*A Kthen vlern e sakt nse fillon me # dhe prfundon me A. LIKE NOT M[A]* Kthen vlern e pasakt nse shkronja e par sht M dhe e dyta A.

29

BAZAT E T DHNAVE Pyetsor me m shum se nj kriter N Access kemi mundsi t formulojm edhe m shum se nj kriter n fusha dhe rreshta t ndyshm.N kt rast duhet t kemi parasysh kto veori: 1. Lidhjet AND Kushtet e nj rreshti lidhen ndrmjet veti me ndihmn e operatorit AND.N kt rast t dhnat prfshihen n rezultatin e ekzekutimit t pyetsorit vetm kur jan t plotsuara t gjitha kushtet e formuluara. Shembull: T gjith personat me emrin Bujar dhe qyteti Prishtin do t shfaqen n rezultatin e pyetsorit.

2. Lidhjet OR Kur t formulojm kushte n dy rreshta ato lidhen n mes veti me an t operatorit OR. N kt rast t dhnat prfshihen n rezultatin e ekzekutimit t pyetsorit ather kur plotsohet t paktn njri prej kushteve t formuluara. Shembull: T gjith personat me emrin Bujar ose qytetin Prishtin do t shfaqen n rezultatin e pyetsorit.

30

BAZAT E T DHNAVE

Detyr: 1. Modifikoni pyetsorin Test1 ashtu q si rezultat t fitojm listn e tipit t kredive Vetur ose Shtpi dhe q jan t aprovuara. 2. N pyetsorin Test1 nxirrni si rezultat shumn e kredis q kalon 20000. 3. Modifikoni pyetsorin Test ashtu q si rezultat t paraqiten emrat e personave q fillojn me A dhe prfundojn me A ose I . 4. Me modifikimin e pyetsorit Test1 t nxirren nga tabela KREDIT t gjitha kredit q jan dhn n vitin 2005. 5. Me modifikimin e pyetsorit Test nga tabela KLIENTT t nxirren t dhnat pr personat q jetojn n Prishtin. 6. T krijohet nj pyetsor me an t cilit do t fitojm si rezultat emrin dhe mbiemrin e klientve q kan marr n kredi kompjuter si dhe emrin,mbiemrin dh ID e nnpunsit q e ka lejuar at kredi.

Mundsit e pyetsorve me parametra


Shpesh ndodh q nj pyetsor duhet formuluar n nj mnyr t till q vlera baz e krkimit t jet fleksibile, pra q ajo t prcaktohet me fillimin e ekzekutimit t pyetsorit.Gjat ekzekutimit t nj pyetsori me parametr shfaqet n ekran nj dritare dialogimi ku mund t japim vlern ose kriterin e pyetsorit.Access-i pastaj e prdor kt kriter (parametr) dhe ekzekuton pyetsorin.N bashksin e t dhnave (Recordset) do t paraqiten t gjitha t dhnat q plotsojn kriterin e dhn n fillim. Krijimi pyetsorit me nj parametr Pas hapjes s pyetsorit n Design View dhe prfshirjes s fushave n pyetsor, n rreshtin Criteria te ndonj fush e caktuar shkruajm tekstin i cili do t paraqitet n dritaren e dialogimit i futur n kllapa t mesme [teksti]. P.SH. Te pyetsori Test, te rreshti Criteria te fusha Emri shkruajm [Jepni emrin]

31

BAZAT E T DHNAVE Pas ekzekutimit t pyetsorit na paraqitet dritarja e dialogimit, ku do t shkruajm emrin e ndonj klienti q e krkojm.

Krijimi pyetsorit me m shum se nj parametr Nuk jemi t kufizuar n krijimin e pyetsorit me vetm nj parametr.Mund t krijojm pyetsor me m shum se nj parametr.P.SH. dshirojm q nga tabela KLIENTT t marrim si rezultat t gjith klientt me emrin Bujar dhe qytetin Prishtin.Pyetsori me m shum se nj parametr krijohet njsoj si me nj parametr vetm se te rreshti Criteria shkruajm m shum se nj kriter.

Kur t ekzekutohet pyetsori s pari Access-i krkon pr kriteret n kt renditje: 1. Jepni emrin 2. Jepni qytetin Pra Access-i krkon pr parametrat nga e majta n t djatht.Por kt renditje mund ta ndryshojm, n Design View te pyetsori shkojm te Query dhe Parameters dhe hapet nj dritare.N at dritare mund t rregullojm renditjen.

32

BAZAT E T DHNAVE

Krijimi i nj fushe kalkuluese


Fushat n pyetsor nuk jan t kufizuara n fusha vetm nga tabela.Ne poashtu mund t krijojm fusha ku mund t bjm kalkulime.P.SH. dshirojm q nga fusha mimi t kalkulojm n nj fush tjetr tatimin 15%(TVSH).Tatimi:[ mimi]/7.6666 Ose Fusha1 Fusha2 Fusha3 23 45 7 Fusha4:[Fusha1] + [Fusha2] + [Fusha3] Rezulati do t jet 75.

Shtimi dhe ndryshimi i t dhnave me an t pyetsorit


Pyetsori mund t prdoret edhe pr shtimin dhe ndryshimin e t dhnave n tabela.Gjithmon mund t ndryshojm t dhnat n nj tabel dhe te tabelat e lidhura mes veti me lidhjen nj me nj, ndrsa te tabelat e lidhura mes veti me lidhjen nj me shum nuk mundemi gjithnj t shtojm ose t bjm ndryshime.

Si bhet shtimi ose ndryshimi i t dhnave

Hapim pyetsorin n Datasheet View dhe klikojm n pulln q gjendet n fund t pyetsorit.Pastaj shtypim t dhnat q dshirojm ose bjm ndryshimin e ndonj t dhne dhe n fund i ruajm ndryshimet e bra.

Filtrimi i t dhnave n pyetsor


Filtrimi bhet njsoj si te tabelat, pra hapet pyetsori n Datasheet View dhe shkohet njsoj si te tabelat. 33

BAZAT E T DHNAVE

Tipet e pyetsorve
Si u cek m hert tipet e pyetsorve jan:Select, Total, Action, Crosstab, SQL dhe Top(n).Tipi i pyetsorit Select sht tip i zakonshm i pyetsorve.Me krijimin e pyetsorit n Design View si tip i parazgjedhur nga Access-i sht tipi Select.Pra e gjitha ka u tha m lart pr krijimin pyetsorit n Design View sht krijimi i pyetsorit Select. Tip tjetr me radh sht tipi Total.

Tipi Total
Shum her dshirojm q informacionin e nxjerrur nga tabelat t jet i grupuar sipas nj fushe apo fushave t asaj tabele. Krijimi i pyetsorit Total N Design View t pyetsorit n menyn kryesore shkojm te View dhe zgjedhim Totals ose n toolbar shtypim pulln .Do t shohim se n zonn e dizajnimit t pyetsorit do t paraqitet rreshti Total.Nse klikojm n rreshtin Total do t shohim nj list t funksioneve t cilat prdoren pr grupimin e informacioneve dhe prmisimin e tyre.

Ky prmisim i rezultateve t pyetsorit arrihet me ndihmn e funksioneve.Access-i i prdor katr kategori t funksioneve ato jan:

34

BAZAT E T DHNAVE

Kategorit e funksioneve
Kategorit Group by Funksionet (Aggregate) Shprehje (Expression) Kufizimi total i t dhnave n fush Kategoria Group by Ka nj opcion, opcionin Group by.Prdoret pr caktuar grupimin e t dhnave, t nj fushe.P.SH. Nse zgjedhim q t dhnat nga tabela KREDIT t grupohen sipas tipit t kredis.Ky opcion automatikisht sht i parazgjedhur kur t prfshihen fushat n pyetsor. Kategoria Expression (Shprehja) Edhe kjo kategori si kategoria Group by ka nj opcion: Expression.Ky opcion prdoret pr ti treguar Access-it q t krijoj nj fush kalkuluese. Kategoria Kufizimi total i t dhnave n fush (Total field record limit category) Edhe kjo kategori ka vetm nj opcion, opcionin Where.Kur t zgjedhim kt opcion ne i tregojm Access-it se dshirojm t caktojm nj kufizim n at fush. Kategoria Funksionet (Aggregate) Pr dallim nga kategorit tjera kjo kategori ka nnt opcione:Sum, Avg, Min, Max, Count, StDev, Var, First dhe Last. Secili prej funksioneve prdoret pr kalkulime n fusha dhe kthimin e rezultatit n bashksin e t dhnave.P.SH. dshirojm t definojm maksimumin dhe minimumin e shums s kredis n tabeln KREDIT. Pr dallim nga kategorit e prmendura m par t cilat mund t shfrytzohen pr fardo tipi t t dhnave, kategoria Funksionet mund t prdoret vetm n disa tipe t t dhnave t paraqitura n tabeln e mposhtme: Numri i funksioneve 1 9 1 1 Qllimi i funksionit Grupon t dhnat e prbashkta. Funksione matematikore Grupon nj numr t funksioneve dhe i ekzekuton si nj Kufizon t dhnat nga kalkulimet e bra nga operatort tjer

35

BAZAT E T DHNAVE

Kategoria fuksionet
Funksioni Count Sum Avg Max Min StDev Var First Last Gjen Numrin e vlerave joboshe n nj fush Total i vlerave n nj fush Vlera mesatare n nj fush Vlern m t madhe n nj fush Vlera m e vogl n nj fush Devijimi standard i vlerave t nj fushe Variacioni i vlerave t nj fushe Vlern e t dhns s par n tabel ose pyetsor Vlern e fundit nga e dhna e fundit n tabel ose pyetsor Tipi i t dhnave q prkrah AutoNumber,Number,Text,Currency,Date/Time, Yes/No,Memo,OLE AutoNumber,Number,Currency,Date/Time, Yes/No AutoNumber,Number,Currency,Date/Time, Yes/No AutoNumber,Number,Currency,Date/Time, Yes/No,Text AutoNumber,Number,Currency,Date/Time, Yes/No,Text AutoNumber,Number,Currency,Date/Time, Yes/No AutoNumber,Number,Currency,Date/Time, Yes/No AutoNumber, Currency,Date/Time,Yes/No, Text,Memo,OLE AutoNumber, Currency,Date/Time,Yes/No, Text,Memo,OLE

Me pyetsorin Total mund t bjm kalkulime me t gjitha fushat n tabel ose pyetsor.P.SH. dshirojm t gjejm numrin e kredive t aprovuara nga BANKA. Shkojm te Queries dhe zgjedhim Create query in Design View, zgjedhim tabeln KREDIT dhe i bartim fushat Tipi i kredis dhe Aprovimi n zonn e dizajnimit t n toolbar.Te rreshti Total te fusha Tipi i kredis pyetsorit.Shtypim pulln zgjedhim funksionin Count ndrsa te fusha Aprovimi zgjedhim Group by.Kt pyetsor ruajeni me emrin Kredit e aprovuara.Si shihet si rezultat fitojm numrin e kredive t aprovuara dhe t pa aprovuara.Pr t fituar vetm kredit e aprovuara duhet t vihet kriteri n rreshtin Criteria q do t shohim pak m von. Ndonj her duhet q kalkulimet t bhen n t dhnat e nj fushe jo n tr fushn si m par.P.SH. dshirojm t gjejm emrin dhe mbiemrin e t gjith klientve q kan marr kredi n bankn ton.Shkojm te Queries dhe zgjedhim Create query in Design View, zgjedhim tabelat KLIENTT dhe KREDIT dhe i bartim fushat Numri i llogaris nga tabela KREDIT dhe krijojm nj fush me emrin dhe mbiemrin e klientit pra: Emri dhe mbiemri:KLIENTT.Emri& &KLIENTT.Mbiemri Shtypim pulln n toolbar.Te rreshti Total te fusha Numri i llogaris zgjedhim funksionin Count ndrsa te fusha Emri dhe Mbiemri zgjedhim Group by.Kt pyetsor ruajeni me emrin Kredit e klientve. Si po shihni me ekzekutimin e ktij pyetsori do

36

BAZAT E T DHNAVE t na paraqiten emrat dhe mbiemrat e personave q kan marr kredi n bank si dhe numri i kredive t tyre.Pra kemi br grupimin sipas emrave dhe mbiemrave t klientve. Grupimi i t dhnave mund t bhet edhe n m shum se nj fush.P.SH. dshirojm q nga pyetsori Kredit e klientve t bjm grupimin edhe sipas tipit t kredis.Pra bartim fushn Tipi i kredis n kt pyetsor dhe te rreshti Total zgjedhim Group by.E ruajm kt pyetsor me emrin Kredit e klientve-shtes.

Definimi i kriterit pr pyetsorin Total


N mnyr q grupimi i t dhnave pr pyetsorin Total t mund t limitohet prdoret kriteri n rreshtin Criteria.Ky kriter mund t prdoret n t tri fusha: 1. Group by 2. Funksionet (Aggregate) 3. Jo funksionet (Non aggregate)

Definimi i kriterit pr fushn Group by


Pr t kufizuar t dhnat n grupim definojm kriterin n fushn Group by.P.SH. dshirojm q nga pyetsori Kredit e klientve-shtes t marrim si rezultat vetm kredit si Vetur dhe Shtpi.Shkojm te Queries dhe hapim pyetsorin Kredit e klientve-shtes n Design View.Te fusha Tipi i kredis dhe rreshti Criteria shkruajm: In (Vetur,Shtpi) dhe e ruajm pyetsorin.Kur t ekzekutohet pyetsori tani si rezultat do t paraqiten vetm kredit e dhna si Vetur dhe Shtpi.

Definimi i kriterit pr fushn e Funksioneve


Ndonj her sht e nevojshme q pyetsori t kalkulon s pari me Funksionet mbi ndonj fush t caktuar dhe pastaj t paraqes si rezultat vetm ato t dhna q e plotsojn kriterin e dhn.P.SH. dshirojm t shohim kredit ashtu q vlera mesatare e kredis t jet m e madh se 1000.Shkojm te Queries klikojm dy her n Create query in Design View dhe zgjedhim tabeln KREDIT, pastaj bartim fushat Tipi i kredis dhe Shuma n zonn e dizajnimit t pyetsorit.Shtypim pulln n toolbar.Te rreshti Total te fusha Tipi i kredis zgjedhim opcionin Group by ndrsa te fusha Shuma zgjedhim funksionin Avg (funksioni pr vlern mesatare) dhe te rreshti Criteria shkruajm >1000.Si rezultat do t paraqiten t dhnat kredit vlera mesatare e t cilave kalon 1000.Ruajeni kt pyetsor me emrin Vlera mesatare e kredive.

37

BAZAT E T DHNAVE

Definimi i kriterit pr Where (Non aggregate)


M hert pam se si kufizuam t dhnat pasi bm kalkulimet, por ne poashtu mund t kufizojm t dhnat para se t bjm kalkulimet.P.SH. dshirojm t dijm kredit q jan lshuar n nj periudh t caktuar kohore n tabeln KREDIT.Krijojm nj pyetsor nga tabelat KREDIT dhe KLIENTT.Bartim fushat Numri i llogaris, Emri nga tabela KLIENTT dhe fushn Fillimi nga KREDIT.Shtypim pulln n toolbar dhe te rreshti Total te fusha Numri i llogaris zgjedhim funksionin Count, te fusha Emri zgjedhim Group by.Dhe n fund te fusha Fillimi rreshti Total zgjedhim Where ndrsa te rreshti Criteria shkruajm kriterin BETWEEN #12/8/2005# AND #10/4/2006#.Si rezultat do t na paraqiten t gjitha kredit e dhna n kt periudh kohore.Ruajeni pyetsorin m emrin Kredit.

Krijimi i Shprehjes (Expression) n pyetsorin Total


N mnyr q t dhnat t paraqiten sipas nevojs q kemi Access-i lejon krijimin e Shprehjeve (Expression) t bazuara n disa tipe t pyetsorit Total si jan prdorimi i funksioneve Avg, Sum etj.P.SH. Shkruajm nj shprehje Fusha: Sum(KREDIT.Shuma/KREDIT.[Kohzgjatja e kredis]) Te rreshti Total zgjedhet Expression dhe ruhet pyetsori.

Tipi i pyetsorve Action


Ky tip i pyetsorve sht special, quhen pyetsor t aksionit (Action) q na mundsojn t ndryshojm vlerat n t dhnat tona.Vet termi Action (Aksion) definon nj pyetsor q thjesht bn dika m shum se sa selektimin e t dhnave dhe paraqitjen e tyre n bashksin e t dhnave (Recorset).Pyetsori Action mund t konsiderohet si nj pyetsor Select q i sht dhn nj detyr ta kryej mbi nj grup t caktuar t t dhnash. Me krijimin e nj pyetsori ne automatikisht krijojm nj pyetsor Select, ku pastaj ne mund t zgjedhim tipet e pyetsorit n pulln Query type q gjendet m toolbar.

38

BAZAT E T DHNAVE Nga kjo meny mund t zgjedhim disa tipe t pyetsorve Action.Zgjedhjet n meny jan : Make Table, Update, Append dhe Delete.N dallim nga pyetsort Select, pyetsort Action identifikohen me nj pikuditse pr skaj simbolit t pyetsorit.

Jan katr tipe t ndryshme q kan ikona t ndryshme.Me an t pyetsorve Action mund t kryejm: Fshirjen e t dhnave t caktuara nga nj tabel ose grup i tabelave Shtojm t dhnat nga nj tabel te tjetra Ndryshojm t dhnat Krijojm nj tabel t re nga t dhnat e caktuara nga ndonj pyetsor

Pasi q pyetsort Action jan t pakthyeshm (ireversibl) duhet t ndiqen kta katr hapa pr krijimin e tyre: 1. 2. 3. 4. Krijimi i pyetsorit Action duke caktuar fushat dhe kriterin Shikimi i t dhnave (n Datasheet View) t ndikuara nga pyetsori Action Ekzekutimi i pyetsorit Kontrollimi i ndryshimeve t bra (n Datasheet View)

Shikimi i t dhnave para ekzekutimit t pyetsorve DELETE dhe UPDATE Para ekzekutimit t pyetsorve DELETE dhe UPDATE klikojm n pulln Datasheet View pr shikimin e t dhnave q do t ndikohen nga pyetsori.Kjo bhet shkaku se pyetsori ndikon n tabeln me an t s cils sht krijuar dhe ndryshimet e bra jan t pakthyeshme. P.SH. Krijojm nj pyetsor nga tabela KLIENTT.Bartim t gjitha fushat n zonn e dizajnimit dhe n toolbar shtypim pulln Query Type, aty zgjedhim DELETE QUERY. N zonn e dizajnimit shihet rreshti Delete dhe n do fush opcioni Where.Te rreshti Criteria shkruajm kriterin mbi baz t s cilit do t bhet fshirja e t dhnave. Shkruajm te fusha Emri dhe rreshti Criteria kriterin Bujar.Shtypim pulln Datasheet View pr t shikuar t dhnat q do t ndikohen nga ky pyetsor, pastaj bjm ekzekutimin e tij.Do t shikojm se e dhna sht fshir nga tabela KLIENTT.

39

BAZAT E T DHNAVE Shikimi i rezultatit t pyetsorve MAKE-TABLE dhe APPEND N dallim nga pyetsort DELETE dhe UPDATE pyetsort MAKE-TABLE dhe APPEND kopjojn t dhnat nga nj tabel n tabeln tjetr.Pra tabela prej ku krijohet pyetsori MAKE-TABLE ose APPEND nuk ndikohet.Me ekzekutimin e ktyre pyetsorve krijohet nj tabel e re. P.SH. Krijojm nj pyetsor nga tabela KLIENTT, bartim fushat Numri i llogaris, Emri, Mbiemri, Qyteti, Adresa dhe Tel.Te pulla QUERY TYPE zgjedhim MAKETABLE dhe na paraqitet nj dritare

Te Table Name shkruajm KLIENTT-BACKUP dhe shtypim OK.Ekzekutojm kt pyetsor, do t shohim se kemi krijuar nj tabel t re KLIENTT-BACKUP nga t dhnat e tabels KLIENTT.Si shihet pyetsori MAKE-TABLE sht i prshtatshm pr krijimin e BACKUP pr tabelat e bazs.

KRIJIMI I PYETSORVE ACTION


Krijimi i pyetsorit UPDATE pr ndryshimin e t dhnave M hert kemi msuar pr ndryshimi e t dhnave me an t pyetsorit duke shtypur pulln NEW RECORD, por aty duhet q t dhnat t ndryshohen nj nga nj, pra mundsia e gabimit sht e madhe.Q t ndryshohet nj grup i t dhnash krijojm pyetsorin UPDATE.Hapat e krijimit t pyetsorit UPDATE jan: 1. Krijimi i pyetsorit n Design View 2. Zgjedhja e tabels si dhe bartja e fushave n zonn e dizajnimit 3. Shtypim pulln QUERY TYPE dhe zgjedhim UPDATE QUERY Pastaj te rreshti Criteria shkrujam kriterin n baz t t cilit do ti ndryshojm t dhnat, ndrsa te rreshti Update to shkruajm vlern ndryshuese pr ato t dhna. N fund ekzekutjm pyetsorin, ku do t hapet nj dritare q do t informoj pr numrin e t dhnave q do t afektohen nga ky ndryshim.Si dhe pyet se a dshirojm q t bjm ndryshimin e t dhnave sepse nse po ather nuk mund t prdorim Undo komandn (pra pyetsort Action si u cek m hert jan ireversibl) .

40

BAZAT E T DHNAVE P.SH. Dshirojm q n t dhnat e tabels KLIENTT ku mbiemri fillon me shkronjn K t ndryshohet n Gashi. Krijojm nj pyetsor n Design View nga tabela KLIENTT, bartim t gjitha fushat.Zgjedhim UPDATE QUERY nga pulla QUERY TYPE.Te fusha Mbiemri, te rreshti Criteria shkruajm LIKE K*, ndrsa te rreshti Update to shkruajm Gashi. Ekzekutojm pyetsorin dhe shkojm te tabelat hapim tabeln KLIENTT dhe shikojm ndryshimet e bra. Krijimi i nj tabele t re me an t pyetsorit MAKE-TABLE Pr krijimin e nj tabele t re mund t prdorim pyetsort Action prkatsisht MAKETABLE.Me an t ktyre pyetsorve mund t krijojm tabela nga rezultatet e pyetsorit, mund t bjm BACKUP pr tabelat e bazs.Hapat pr krijimin e pyetsorit MAKETABLE jan: 1. 2. 3. 4. Krijimi i pyetsorit n Design View Zgjedhja e tabels si dhe bartja e fushave n zonn e dizajnimit Shtypim pulln QUERY TYPE dhe zgjedhim MAKE-TABLE QUERY Zgjedhim emrin e tabels s re si dhe bazn e t dhnave ku do ta ruajm

Ekzekutojm pyetsorin dhe hapet nj dritare ku tregon se sa t dhna do t barten n tabeln e re.Si dhe pyet se a dshirojm q t krijojm tabel t re me t dhnat sepse nse po ather nuk mund t prdorim Undo komandn (pra pyetsort Action si u cek m hert jan ireversibl) . P.SH. Dshirojm t krijojm nj tabel t re me numrin e llogaris, emrin, mbiemrin, tipin e kredis dhe shumn e kredis nga baza BANKA. Krijojm nj pyetsor n Design View nga tabelat KLIENTT dhe KREDIT. Bartim fushat Numri i llogaris, Emri, Mbiemri nga tabela KLIENTT si dhe fushat Tipi i kredis dhe Shuma nga tabela KREDIT.Te pulla QUERY TYPE zgjedhim MAKETABLE QUERY dhe hapet nj dritare:

41

BAZAT E T DHNAVE ku te Table Name: shkruajm emrin e tabels s re, nse dshirojm q at tabel ta ruajm n bazn ekzistuese e zgjedhim Current Database por nse dshirojm q ta ruajm n nj baz tjetr zgjedhim Another Database dhe shtypim pulln Browse...q t japim shtegun e bazs tjetr.N fund shtypim OK dhe ekzekutojm pyetsorin. Pas ekzekutimit hapet nj dritare ku tregon se sa t dhna do t barten n tabeln e re.Si dhe pyet se a dshirojm q t krijojm tabel t re me t dhnat sepse nse po ather nuk mund t prdorim Undo komandn (pra pyetsort Action si u cek m hert jan ireversibl) .Shtypim YES dhe shikojm tabeln e re t krijuar te objektet Tables. Krijimi i pyetsorit APPEND pr kopjimin e t dhnave Fjala append nnkupton bashkangjit, pra pyetsori APPEND bashkangjet t dhnat te nj tabel e caktuar.Pyetsori APPEND bashkangjet t dhnat nga tabela t ciln e prdorim te ndonj tabel tjetr.Tabela n t ciln dshirojm q kto t dhna ti shtojm duhet q t jet e krijuar m par.T dhnat mund ti shtojm n bazn ku punojm por edhe n ndonj baz tjetr.Me an t pyetsorit APPEND mund t kopjojm t dhnat nga nj tabel ose pyetsor dhe ti shtojm n nj tabel tjetr. Gjat puns me pyetsort APPEND duhet t kemi kujdes n kto rregulla: 1. Nse tabela q po i bashkangjesim t dhna ka fush me els primar, ather nuk mund t shtojm t dhna boshe ose vlera t dyfishta n at fush. 2. Nse shtojm t dhna n nj baz t t dhnash tjetr duhet q t dijm vendin dhe emrin e bazs s t dhnave. 3. Nse shfrytzojm * pr bartjen e fushave n zonn e dizajnimit, nuk mund t prdorim m fushat individualisht n t njjtn tabel.Sepse Access-i do t kuptoj se po provojm q t shtojm t dhnat e asaj fushe dyher. 4. Nuk duhet q t dhnat q i bashkangjesim t ken ndonj fush Autonumber. Me respektimin e ktyre rregullave t thjeshta, pyetsori APPEND duhet q t punoj mir dhe do t jet nj vegl e dobishme. P.SH. Nse dshirojm q nga tabela KLIENTT ti kopjojm t dhnat n tabeln ISH KLIENTT.Te Queries krijojm nj pyetsor n Design View, zgjedhim tabeln KLIENTT dhe i bartim t gjitha fushat n zonn e dizajnimit.Te QUERY TYPE zgjedhim APPEND QUERY dhe hapet nj dritare

42

BAZAT E T DHNAVE te Table Name shkruajm emrin e tabels s cils dshirojm ti bashkangjesim t dhnat, pra ISH KLIENTT dhe shtypim OK.Nse fushat n t dy tabelat kan emra t njjt ather t dhnat shtohen automatikisht.N fushat me emra t ndryshm duhet t caktojm vet cilat t dhna do ti shtojm.Kjo bhet n rreshtin Append to ndrsa ka mundsi q t shfrytzohet edhe Criteria pr t zgjedhur t dhnat q dshirojm ti shtojm, pra vetm t dhnat q plotsojn kriterin do ti shtohen tabels. Krijimi i pyetsorit DELETE pr fshirjen e t dhnave Nga t gjith pyetsort, pyetsort DELETE jan m t pa prshtatshm.Kjo vjen nga shkaku se bjn fshirjen e t dhnave n mnyr t prhershm dhe t pakthyeshme.Sikurse edhe pyetsort tjer edhe pyetsort DELETE veprojn n nj grup t t dhnash n baz t kriterit.Nse paraqitet nevoja pr fshirjen e t dhnave n m shum se nj tabel prnjher ather duhet t shkojm sipas hapave t mposhtm: Definimi i relacionit t tabelave n dritaren e lidhjeve (Relationship window) Kontrollimi i Integritetit Referencial Kontrollimi i Cascade Delete Related Records

Nse lidhja e tabelave sht nj me shum, pa definimin e relacionit t tabelave dhe nse nuk sht zgjedhur Cascade Delete ather do t fshihen vetm t dhnat nga tabela e par.Pyetsori DELETE nuk fshin t dhnat n fusha t caktuara por fshin tr t dhnn. P.SH. Krijojm nj pyetsor me tabeln KLIENTT, n QUERY TYPE zgjedhim DELETE QUERY.Do t shohim se n zonn e dizajnimit shtohet rreshti Delete. Bartim * dhe fushn Emri n zonn e dizajnimit.Te fusha KLIENTT.* dhe rreshti Delete zgjedhim From ndrsa te fusha Emri rreshti Delete zgjedhim Where dhe te rreshti Criteria shkruajm Valbona.E bjm ekzekutimin e pyetsorit, do t shohim se klienti me emrin Valbona sht fshir nga tabela KLIENTT si dhe jan fshir edhe t dhnat mbi kredit e klientit n tabeln KREDIT.Kjo ka ndodh shkaku i relacionit t ktyre dy tabelave nj me shum si dhe Cascade Delete opcionit.Po t largohet opcioni Cascade Delete fshirja e ksaj t dhne mbi kt klient nuk do t bhet.

43

BAZAT E T DHNAVE

KRIJIMI I PYETSORVE CROSSTAB


Access-i lejon krijimin e nj tipi t prshatshm t pyetsorit Total ai sht pyetsori Crosstab.Pyetsori Crosstab paraqet t dhnat n formatin rresht-kolon.Thjesht thn pyetsori Crosstab sht nj prmbledhje e t dhnave t caktuara nga titulli i rreshtit (row heading) dhe titulli i kolons (column heading).N kt pyetsor rreshti Total gjithmon sht aktiv dhe shrben pr prcaktimin e opcionit Group by pr titullin e rreshtit dhe titullin e kolons. Krijimi i pyetsorit Crosstab bhet duke zgjedhur CROSSTAB QUERY n pulln QUERY TYPE n toolbar.Pastaj duhet q s paku tri fusha t jen n zonn e dizajnimit: Fusha e titullit t rreshtit (row heading) Fusha e titullit t kolons (column heading) Fusha Value

P.SH. Krijojm nj pyetsor n Design View nga tabelat KLIENTT dhe KREDIT. Bartim fushat Tipi i kredis, Shuma nga tabela KREDIT si dhe fushn Qyteti nga tabela KLIENTT.Zgjedhim Crosstab Query n pulln Query type n toolbar.N zonn e dizajnimit paraqiten rreshtat Total dhe Crosstab.Te fusha Tipi i kredis, rreshti Total zgjedhim Group by ndrsa te rreshti Crosstab zgjedhim Row Heading.Pastaj te fusha Qyteti, rreshti Total zgjedhim Group by ndrsa te rreshti Crosstab zgjedhim Column Heading.Te fusha Shuma, rreshti Total zgjedhim Sum ndrsa te rreshti Crosstab zgjedhimValue.Ekzekutojm pyetsorin dhe do t shohim nj tabel

Provojeni q n fushn Shuma n vend t funksionit Sum t vhet funksioni Count dhe ekzekutoni pyetsorin. 44

BAZAT E T DHNAVE Pyetsort Crosstab mund t ken m shum se nj titull t rreshtit (Row Heading), por vetm nj titull t kolons (Column Heading). P.SH. N pyetsorin e mparshm barti n zonn e dizajnimit edhe fushn Emri nga tabela KLIENT dhe te rreshti Total zgjedhni Group by ndrsa te rreshti Crosstab zgjedhni Row Heading. Caktimi i kriterit pr pyetsort Crosstab Kriteri pr pyetsort Crosstab mund t caktohet n: 1. Fush t re 2. Fushn e titullit t rreshtit (Row Heading) 3. Fushn e titullit t kolons (Column Heading) Caktimi i kriterit n fushn e re S pari bartim fushn n zonn e dizajnimit, te rreshti Total zgjedhim Group by ndrsa te rreshti Criteria shkruajm kriterin. P.SH. Te pyetsori i mparshm shtojm fushn Mbiemri nga tabela KLIENTT, te rreshti Total zgjedhim Group by ndrsa te rreshti Criteria zgjedhim Krasniqi.Pra po krkojm klientt me mbiemrin Krasniqi. Caktimi i kriterit pr titullin e rreshtit (Row Heading) Caktimi i kriterit bhet n rreshtin Criteria.P.SH. Te fusha Tipi i kredis te rreshti Criteria shkruajm Vetur, dhe si rezultat do t fitojm t dhnat pr kredit Vetur. Caktimi i kriterit pr titullin e kolons (Column Heading) Njsoj sikur te titulli i rreshtit.

Tipi i pyetsorve SQL


Ky tip i pyetsorve krijohet me gjuhn specifike t bazs s t dhnave SQL (Structured Query Language).Me SQL mund t krijojm t gjith pyetsort e prfytyrueshm.M gjrsisht pr kt do t msojm n kuadr t MYSQL-it. P.SH. Krijimi i pyetsorit nga tabela KLIENTT me t gjitha fushat e asaj tabele n SQL bhet: Select * from KLIENTT Ku * paraqet t gjitha fushat e tabels sikurse edhe te Access-i.

45

BAZAT E T DHNAVE

Tipi i pyetsorve TOP(n)


Me an t ktyre pyetsorve Access-i na mundson ti gjejm (n) t dhnat e para (ku n sht numr ose prqindje).Ky pyetsor gjithmon prdoret me tipet e pyetsorve q i msuam m par.Nse krijojm nj pyetsor n Design Vie nga tabela KREDIT dhe bartim t gjitha fushat n zonn e dizajnimit.Pastaj shkojm te pulla Top Values n toolbar

dhe zgjedhim numrin e vlerave q dshirojm t paraqiten n bashksin e t dhnave ose prqindjen.P.SH. zgjedhim numrin 5, ather do t na paraqiten vetm pes t dhnat e para t bashksis s t dhnave.

46

BAZAT E T DHNAVE

FORMA (FORMULARI)
Format (Formulart) paraqesin mnyrn m fleksibile pr shikimin, shtimin, ndryshimin dhe fshirjen e t dhnave. Me an t forms mund t shikojm m shum se nj t dhn me t gjitha fushat n t njjtn koh. Poashtu mund t shfrytzojm format pr krijimin e dritareve komanduese t njohura si switchboards.

Tipet e paraqitjes s formularve


Tipet baz pr paraqitjen e formularve jan: Columnar paraqitja e formularve n nj kolon Tabular paraqitja tabelare e t dhnave Datasheet View paraqitja e t dhnave n fletn e t dhnave Justified paraqitja e t dhnave n bllok Main/subforms paraqitja e formularit kryesor dhe nj formulari t ndrvarur Pivot table sikur n Microsoft Excel Pivot Chart paraqitja e t dhnave me an t grafeve etj. Figura e mposhtme tregon paraqitjen e t dhnave n formn Columnar.N formular shfaqet vetm nj e dhn, fushat mund t rregullohen sipas dshirs.Pastaj sht mundsia e rregullimit t formularit pr nj pamje m t mir me an t vijave, ngjyrave dhe efekteve speciale (hija, pamja 3D).

47

BAZAT E T DHNAVE Paraqitja e disa t dhnave n t njjtn koh n formular sht tipi Tabular q tregohet n figurn e mposhtme.N kt rast t dhnat paraqiten sipas rreshtave.

Paraqitja e t dhnave n formn Datasheet view sht n mnyr t ngjashme me pamjen e flets s t dhnave t tabelave si shihet nga figura e mposhtme.

Paraqitja e t dhnave n bllok (Justified) bhet ashtu q do e dhn paraqitet n nj bllok unik si shihet nga figura e mposhtme.

Paraqitja e formularit n formn main/subforms sht nj formular kryesor dhe nj formular i ndrvarur.Kjo do t ishte nj metod e mir pr t paraqitur klientt n formularin kryesor si dhe tipin e kredis n formularin e ndrvarur si n figurn e mposhtme. 48

BAZAT E T DHNAVE

Paraqitja e formularve n form Pivot Table dhe Pivot Chart sht paraqitje e njjt sikur te Microsoft Excel.

49

BAZAT E T DHNAVE

Krijimi i formularit me AutoForm


Mnyra m e shpejt pr krijimin e formularit sht me prdorimin e AutoForm. Por me kt mnyr nuk na jepet kontroll mbi dizajnin e formularit si do t shohim m posht. Nj ndr mnyrat e krijimit t formularit me AutoForm sht: Te objektet e bazs zgjedhim Tables (Tabelat) dhe zgjedhim tabeln me an t s cils dshirojm t krijojm formularin, pastaj shkojm n toolbar te pulla New Object dhe zgjedhim AutoForm. Do t shohim se formulari do t krijohet automatikisht. Shembull: N bazn e t dhnave Banka te objektet e bazs Tables zgjedhim tabeln KLIENTT, n toolbar te pulla New Object zgjedhim AutoForm dhe do t krijohet formulari si n figurn e mposhtme.

Si shihet n formular u paraqit edhe tabela KREDIT kjo vjen ngase kto dy tabela jan t lidhura n dritaren e lidhjeve (Relationship window).

50

BAZAT E T DHNAVE

Krijimi i formularit me ndihmn Asistentit t formularit (Form Wizard)


Me an t Asistentit t formularit e thjeshtojm renditjen e fushave n formular. Asistenti i formularit na udhheq npr nj varg pyetjesh pr formularin t cilin dshirojm ta krijojm.Ekzistojn disa mnyra pr ta aktivizuar Asistentin e formularit: Nga dritarja e bazs s t dhnave zgjedhim Insert dhe Form Nga objektet e bazs zgjedhim Forms dhe klikojm n pulln New n dritaren e bazs s t dhnave N toolbar zgjedhim pulln New Object dhe Form Pamarr parasysh se ciln mnyr e zgjedhim pr krijimin e formularit neve do t na paraqitet dritarja e mposhtme.

Ku aty mund t zgjedhim tipin e krijimit t formularit dhe tabeln ose pyetsorin nga i cili do t krijojm formularin. Dritarja New Form ka nnt zgjedhje pr krijimin e formularit: 1. Design View - paraqet nj formular plotsisht t zbrazt 2. Form Wizard - krijon formularin nga gjasht mundsi t parazgjedhura: Columnar, Tabular, Datasheet, Justified, PivotTable dhe PivotChart. 3. AutoForm: Columnar - krijon formularin n baz t tipit Columnar 4. AutoForm: Tabular - krijon formularin n baz t tipit Tabular 5. AutoForm: Datasheet - krijon formularin n baz t tipit Datasheet 6. AutoForm: PivotTable - krijon formularin n baz t tipit Pivot Table 7. AutoForm: PivotChart - krijon formularin n baz t tipit Pivot Chart 51

BAZAT E T DHNAVE 8. Chart Wizard: krijon formularin me an t grafeve t ndryshme 9. PivotTable Wizard: krijon formularin si Excel Pivot Table Pr startimin e Asistentit pr krijimin e formularit zgjedhim Form Wizard. N pjesn e poshtme t dritares mund t zgjedhim tabeln ose pyetsorin (t krijuar m par) pr krijimin e formularit. Pra te Choose the table or query where the objects data comes from: zgjedhim objektin e dshiruar dhe klikojm OK. Pastaj na paraqitet dritarja pr zgjedhjen e fushave nga objektet e bazs. Pra mund t zgjedhim fusha nga nj ose m shum tabela ose pyetsor.

Fushat q dshirojm t jen n formular i zgjedhim dhe pastaj i shtojm n ann e djatht m an t ktyre pullave: Shto fushn e zgjedhur Shto tr fushat Largo fushn e zgjedhur Largo tr fushat

52

BAZAT E T DHNAVE Pas zgjedhjes s fushave shtypim pulln Next dhe hapet dritarja pr renditjen e fushave n formular.

Pasi t jet zgjedhur forma e renditjes s fushave n formular shtypim pulln Next dhe hapet dritarja pr zgjedhjen e pamjes (stilit) s formularit. Jan n dispozicion dhjet opcione, ku pamja e secilit opcion mund t shihet n ann e majt t dritares vetm me klikim t opcionit. Zgjedhet nj opcion dhe shtypet pulla Next.

Pastaj paraqitet dritarja pr emrimin e formularit si dhe opcionin pr hapjen e formularit. Varsisht se a dshirojm q formulari t hapet n pamjen e tij prfundimtare zgjedhim 53

BAZAT E T DHNAVE Open the form to view or enter information apo dshirojm q t ndrrojm dika n dizajnin e formularit me an t Design View zgjedhim Modify the forms design. Pastaj shtypim pulln Finish.

Hapja e formularit bhet duke klikuar dyher n formular dhe do t shohim t dhnat. Navigimi n formular bhet me an t pullave n fund t formularit

Kthen te e dhna e par Kthen te nj e dhn pas E dhna me radh E dhna e fundit Pulla pr shtimin e t dhnave n formular (njsoj si te tabelat dhe pyetsort) Si u pa me krijimin e formularit me an t Asistentit t formularit (Form Wizard) nuk kemi shum kontroll mbi krijimin e formularit. Ashtu si edhe te tabelat dhe pyetsort kontroll m t madhe n krijimin e formularit do t kemi me an t Design View. Krijimi i formularit n Design View bhet me klikimin n pulln New dhe duke zgjedhur Design View ndrsa te Choose the table or query where the objects data comes from shkruajm tabeln ose pyetsorin q do ta shfrytzojm pr krijimin e formularit. Pastaj 54

BAZAT E T DHNAVE do t paraqitet nj formular bosh, fushat e objektit t zgjedhur (tabel ose pyetsor) dhe kutia e veglave(toolbox).

Elementet kryesore prbrse t pamjes Design View t formularit jan: zona e formularit dhe elementet e kontrollit. Formulari prbhet nga Kreu i formularit (Form Header), Kreu i faqes (Page Header), Detalet (Detail), Fundi i faqes (Page Footer) dhe Fundi i formularit (Form Footer). Q t shihen kto pjes prbrse t formularit shkojm n menyn kryesore te View dhe zgjedhim Page Header/Footer dhe Form Header/Footer. Ndrsa elementet e kontrollit prcaktojn prmbajtjen e formularit n pjes t veanta t tij. Kreu i formularit prban mbishkrimin e formularit q shfaqet n pjesn e siprme, ndrsa Fundi i formularit pjesn e poshtme t tij. Pjesa e Detaleve prmban fushat me t dhna nga tabela ose pyetsori. Elementet e kontrollit Jan tri lloje t elementeve t kontrollit: 1. Elementet e lidhura 2. Elementet e palidhura 3. Elementet e kontrollit pr kryerjen e prllogaritjeve Elementet e lidhura t kontrollit paraqesin t dhnat nga fushat n tabel ose pyetsor me an t t cilve sht krijuar formulari. Poashtu elementet e lidhura prdoren edhe pr futjen e t dhnave n formular. Elementet e palidhura t kontrollit paraqesin informacionin q nuk sht n tabel. Elementet e palidhura mund t jen tekst, fotografi, vija ose drejtkndsha t vizatuar n formular. Zakonisht elementet e palidhuara shoqrohen me elementet e lidhura si 55

BAZAT E T DHNAVE emrtues dhe poashtu prdoren pr t ofruar instruksione pr mnyrn e shtimit t t dhnave. Elementet e kontrollit pr kryerjen e prllogaritjeve prmbajn rezultatin nga llogaritja me fushat e tabels. N figurn e mposhtme shihen t tri llojet e elementeve t kontrollit. Emri i banks pra BANKA E KOSOVS sht nj element i palidhur i kontrollit. Ndrsa fushat n pjesn e detaleve jan elemente t lidhura sepse jan t lidhura me emrat e fushave. Fusha Kohzgjatja n jav sht nj shembull i elementit t kontrollit pr kryerjen e prllogaritjeve, ku funksioni DateDiff sht shfrytzuar pr t llogaritur diferencn e kohs (n jav) s lshimit t kredis dhe dats s sotme.

Veprimet themelore me elementet e kontrollit Me klikimin n elementin e kontrollit bjm selektimin e tij, ndrsa selektimi i disa elementeve bhet duke mbajtur shtypur pulln SHIFT dhe duke klikuar mbi elementet e kontrollit. Heqja e selektimit bhet duke klikuar n nj siprfaqe t lir t zons s formularit. Ndryshimi i dimensionit bhet duke selektuar elementin prkats dhe vendosjen e miut n njrn nga pikat e vogla t trheqjes derisa treguesi t marr formn e nj shigjete t dyfisht. Pastaj bjm trheqjen deri sa elementi t marr dimensionin e dshiruar. Zhvendosja e elementit t kontrollit bhet me selektimin e tij dhe vendosjen e miut ndrmjet pikave t trheqjes derisa treguesi t marr formn e dors. Pastaj bhet trheqja deri te pozita e dshiruar. Fshirja e elemnetit t kontrollit bhet duke selektuar at dhe duke shtyp pulln Delete.

56

BAZAT E T DHNAVE

Prdorimi i kutis s veglave (Toolbox)


Kutia e veglave prmban vegla pr integrimin e elementeve t ndryshme t kontrollit n form ose raport. Access-i hap dritaren e kutis s veglave me hapjen e formularit n Design View, por nse kutia e veglave nuk sht aktivizuar mund ta aktivizojm at duke . Integrimi i elementeve t kontrollit nga kutia e klikuar n toolbar n pulln veglave bhet me selektimin e simbolit t dshiruar dhe pastaj klikojm n formular n vendin ku dshirojm ta integrojm at element t kontrollit. Mbajm t shtypur pulln e miut dhe e trheqim elementin e kontrollit deri n madhsin e dshiruar. Figura m posht sht kutia e veglave (elementeve t kontrollit) dhe emrtimet e tyre.

Tani do t mundohemi q pr seciln t japim shpjegim pr prdorimin n dizajnimin e formularit.

Ky element aktivizohet q n fillim. Ai shrben pr selektimin, zhvendosjen, zmadhimin e elementeve t kontrollit.

N qoftse sht i aktivizuar ky element gjat integrimit t elementeve tjer t kontrollit ather do t paraqitet asistenti i elementeve n nj dritare si ndihm pr secilin element prkats. 57

BAZAT E T DHNAVE

Me ndihmn e elementit t kontrollit Emrtues/Label paraqesim nj tekst prshkrues n formular ose raport.

Elementi Fush teksti shrben pr paraqitjen e t dhnave dhe i ofron shfrytzuesit t shtoj t dhna, t ndryshoj t dhna ose t fshij. Secila Fush teksti shoqrohet me nj Emrtues pr t identifikuar veten.

Me ndihmn e elementit t kontrollit Grup opsionesh mund t bjm bashkimin e elementeve t kontrollit Pull els, Pull opsionale dhe Kutiz kontrolli n nj pjes t tr.

Kto tri tipe t pullave shrbejn q shfrytzuesi t bj nj zgjedhje. T tri pullat veprojn njsoj vetm se pamja e tyre sht e ndryshme. Kto elemente t kontrollit prdoren te tipet e t dhnave Yes/No. Kto kthejn vlern -1 nse vlera e pulls sht Yes, On ose True ndrsa 0 nse vlera e pulls sht No, Off ose False.

Elementi Fush kombinimesh paraqitet n nj rresht, kshtu q mund t zgjedhim ose nga lista e shkruar m par ose mund t shkruajm tekstin e dshiruar. Prparsi e fushs s kombinimeve sht nga fakti se lista shpaloset vetm ather kur hapet Fusha e kombinimeve duke zn kshtu pak vend n siprfaqen e formularit.

58

BAZAT E T DHNAVE

Ky element prmban listn e t dhnave nga t cilat shfrytzuesi mund t bj zgjedhjen. Fusha listore sht gjithnj e hapur n dallim nga elementi i kontrollit Fush kombinimesh dhe n t nuk mund t shkruajm vlerat q dshirojm. Ky element i kontrollit prdoret kur ka mjaft hapsir n formular.

N varsi ky element i kontrollit prdoret pr ekzekutimin e makrove, ekzekutimin e ndonj programi n Basic, mbylljen e formularit etj. T gjitha mundsit me pulln komand do ti paraqesim n tabelat e mposhtme. Si shihet nga figura e mposhtme aksionet me Pulln komand ndahen n disa kategori ato jan:

Pullat e navigimit (Record navigation) Veprimet me t dhna (Record Operations) Veprimet me formular (Form Operations) Veprimet me raporte (Report Operations) Programet (Applications) T ndryshme (Miscellaneous) 59

BAZAT E T DHNAVE Ku secila kategori prmban veprimet (aksionet) prkatse. Pullat e navigimit Find Next Gjeje tjetrin Find Record Gjeje t dhnn Go To First Record Shko te e dhna e par Go To Last Record Shko te e dhna e fundit Go To Next Record Shko te e dhna e radhs Go To Previous Record Shko te e dhna paraprake Veprimet me t dhna Add New Record Shto nj t dhn Delete Record Fshije t dhnn Duplicate Record Dyfisho t dhnn Print Record Shtyp t dhnn Save Record Ruaje t dhnn Undo Record Moho t dhnn Veprimet me formular Apply Form Filter Zbatoje filtrin Close Form Mbyll formularin Edit Form Filter Ndrysho filtrin Open Form Hape formularin Open Page Hape faqen Print a Form Shtyp formularin Print Current Form Shtyp formularin actual Refresh Form Data Rifresko t dhnat n formular Veprimet me raporte Mail Report Drgo raportin me e-mail Preview Report Pamja e raportit para shtypjes Print Report Shtyp raportin Send Report to File Drgo raportin n nj datotek Quit Application Run Application Run MS Excel Run MS Word Run Notepad Programet Dalja nga programi Ekzekuto programin Ekzekuto MS Excel Ekzekuto MS Word Ekzekuto Notepad

60

BAZAT E T DHNAVE T ndryshme Lidhje automatike me telefon Shtyp tabeln Ekzekuto nj makro Ekzekuto nj pyetsor

Auto dialer Print Table Run Macro Run Query

Ky element integron nj figur statike n siprfaqen e formularit.

Ky element i kontrollit integron n formular nj object OLE pr t cilin nuk ekziston ndonj lidhje me tabela ose pyetsor.

Ky element integron n formular nj fush t lidhur objekti OLE por q ruhet n fushat prkatse t tabelave.

Me ndihmn e ktij elementi t kontrollit caktojm n nj formular kufirin midis faqeve t tij. Pikrisht n at kufi bhet ndarja e fletve n printim.

Ky element prdoret pr krijimin e formularve me shum faqe.

Ky element shrben pr integrimin e nj formulari brenda formularit tjetr i cili sht i lidhur sipas nj relacioni 1:n me formularin kryesor. 61

BAZAT E T DHNAVE

Kto dy elemente m shum prdoren pr nga ana estetike e nj formulari.

Me ndihmn e ksaj pulle hapet nj meny e cila i prmban t gjith elementet ActiveX . Nj nga ato sht integrimi i kalendarit me an t Calendar Control 11.0.

62

BAZAT E T DHNAVE

Karakteristikat e fushave t formularit


Karakteristikat e fushave jan atribute q mundsojn modifikimin e elementeve t kontrollit n formular dhe raport. Pra prdoren pr ndryshimin se si t paraqiten t dhnat. Jan disa mnyra pr shikimin e karakteristikave t fushave: Selektojm nj element t kontrollit shkojm te View dhe Properties Selektojm nj element t kontrollit dhe klikojm n pulln Properties n toolbar Me klikimin dy her t elementit t kontrollit Klikojm me t djathtn mbi elementin e kontrollit dhe zgjedhim Properties Ja edhe dritarja e karakteristikave t fushave:

63

BAZAT E T DHNAVE Dritarja e karakteristikave ka pulln All ku na mundson t shikojm t gjitha karakteristikat. Ose ne mund t zgjedhim ndonj pull tjetr pr t shikuar karakteristika t kufizuara me nj grup t karakteristikave, ato jan: Format Kto karakteristika prcaktojn se si nj emrtues ose vler do t shihet: germat, madhsia, ngjyra, efektet, kufijt dhe scrollbari. Data Kto karakteristika ndikojn se si do t paraqiten t dhnat dhe me cilin burim t t dhnash do t lidhen: control source, maska hyrse, vlefshmria, vlerat e parazgjedhura dhe tipet tjera. Event Karakteristikat n kt grup jan: klikimi, shtimi it dhnave, shtypja e ndonj pulle pastaj pr t ciln definohet nj prgjigje n form t ndonj makro ose VBA procedur. Other Karakteristikat n kt grup paraqesin karakteristikat shtes t kontrollit si emri, prshkrimi n status bar. Disa karakteristika t veanta t elementeve t kontrollit Control Source n pulln Data te Control Source prcaktohet fusha e t dhnave q i prket elementit t kontrollit ose nj formul prllogaritjeje.

Enabled n pulln Data te Enabled e bjm No dhe e dhna do t paraqitet e hijzuar (pamja A). Locked n pulln Data te Locked zgjedhim Yes dhe n at fush nuk mund t shkruajm t dhna (pamja B).

64

BAZAT E T DHNAVE

Control Tip Text prdoret pr drejtkndshin e informacionit (QuickInfo), n pulln Other te Control Tip Text shkruajm tekstin prshkrues informativ.

65

BAZAT E T DHNAVE Status Bar Text edhe me kt karakteristik ofrojm m shum informacion pr fushat i cili informacion do t paraqitet n status bar. N pulln Other te Staus Bar Text shkruajm informacionin e dshiruar dhe e ruajm formularin.

Visible disa fusha me an t ksaj karakteristike mund ti bjm t padukshme n siprfaqen e formularit. Te pulla Format te Visible zgjedhim No.

Allow Edits, Alow Deletions, Allow Additions dhe Data Entry S pari shkojm n ann e majt lart t formularit dhe klikojm me t djathtn dhe zgjedhim Properties.

66

BAZAT E T DHNAVE Pastaj shkojm te pulla Data dhe aty do ti shohim kto karakteristika: Prshkrimi Nse zgjedhim No ather t dhnat n formular Allow Edits nuk do t mund t ndryshohen. Nse zgjedhim No ather nuk lejohet fshirja e t Allow Deletions dhnave n formular. Allow Additions Nse zgjedhim No nuk lejohet shtimi it dhnave Nse zgjedhim Yes ather do t mund t shtojm Data Entry t dhna n formular por ato ekzistuese nuk do ti shohim. Ndrrimi i prapavis s formularit me foto Shkojm n ann e majt lart klikojm me t djathtn dhe zgjedhim Properties dhe hapet dritarja e karakteristikave. N at dritare te pulla Format zgjedhim karakteristikn Picture dhe klikojm n pulln djathtas dhe zgjedhim foton q dshirojm dhe e ruajm formularin. Kur t hapim formularin n Form View do t shohim se n prapavij sht foto q kemi zgjedhur. Fshehja e pullave t navigimit Njsoj si m lart shkojm te Properties, te Navigation Buttons zgjedhim No. Kur t ekzekutohet formulari pullat e navigimit nuk do t shihen. Q formulari Karakteristika E parazgjedhur Yes Yes Yes No

t merr pamjen

duhet q n Properties si m lart t veprohet kshtu: te Scroll Bars zgjedhim Neither, te Record Selectors zgjedhim No, te Navigation Buttons zgjedhim No, te Border Style zgjedhim None dhe te Control Box zgjedhim No. 67

BAZAT E T DHNAVE

Krijimi i nnformularve
Krijimi i nnformularve bhet n tri mnyra: Me Asistentin e formularit (Form Wizard) Me kutin e veglave (toolbox) Me trheqjen e nnformularit n formular n dritaren e bazs s t dhnave Krijimi i nnformularit me Asistentin e formularit (Form Wizard) N dritaren e bazs s t dhnave zgjedhim Forms dhe pastaj shtypim pulln New, hapet dritarja New Form, aty zgjedhim Form Wizard (Asistenti i formularit) ndrsa m posht zgjedhim tabeln KLIENTT dhe shtypim OK. I bartim t gjitha fushat n ann e djatht me pulln . Pastaj zgjedhim tabeln KREDIT te Tables/Queries dhe i bartim

fushat Tipi i Kredis, Shuma, Kohzgjatja e kredis dhe Aprovimi n fund shtypim Next. N rastin ton tabelat KLIENTT dhe KREDIT jan t lidhura me lidhjen nj me shum prandaj nuk do t kemi problem pr krijimin e ktij formulari me nnformular brenda, prndryshe Access-i do t lajmroj pr gabim. Pasi t jet shtypur pulla Next na hapet dritarja ku do t zgjedhim se si do ti shohim t dhnat.

Tani mund t zgjedhim Formular me nnformular ose formular t lidhur (paraqiten ndamas). Zgjedhim Form with subform(s) dhe shtypim Next. Hapet dritarja ku kemi mundsi t zgjedhim renditjen e fushave n formular, zgjedhim njrn prej tyre P.SH. 68

BAZAT E T DHNAVE Datasheet dhe shtypim Next. Nga dritarja tjetr zgjedhim stilin (pamjen) e formularit P.SH. Industrial dhe shtypim Next. N fund i vejm emrin formularit dhe nnformularit dhe shtypim Finish. Do t shohim dritaren

Krijimi i nnformularit me an t kutis s veglave (toolbox) Hapim formularin e dshiruar n Design View dhe nga kutia e veglave zgjedhim pulln Subform/Subreport dhe e vendosim n formular duke caktuar edhe madhsin e nnformularit dhe hapet dritarja ku do t zgjedhim nnformularin i cili duhet t jet i krijuar q m par. Si nnformular mund t zgjedhim tabel, pyetsor ose formular.

69

BAZAT E T DHNAVE Zgjedhim objektin e dshiruar pastaj shtypim Next dhe hapet dritarja ku mund t definojm se cilat fusha nga formulari do t jen t lidhura me fushat n nnformular. I kemi dy opsione Choose from a list pra t zgjedhim nga lista e mposhtme ose Define my own t definojm vet lidhjet e fushave. Zgjedhim Choose from a list dhe shtypim Next. Emrojm formularin dhe shtypim Finish. N fund do t shohim se krijuam nj formular me nnformular. Krijimi i nnformularit me trheqjen nga dritarja e bazs s t dhnave Hapim nj formular n Design View, ather nga dritarja e bazs s t dhnave trheqim nj formular q dshirojm t jet nnformualr dhe e bartim deri te formulari i hapur n fillim. Access-i do t mundohet t bj lidhjen n mes ktyre dy formularve.

70

BAZAT E T DHNAVE

Makrot
Makro sht nj bashksi e urdhrave n varg q ekzekutohet si nj. Makrot n Access automatizojn aksionet si hapjen e nj tabele, shtypjes s nj formulari, gjetjes s ndonj t dhne ose zbatimin e filterit. Madje makrot mund t shrbejn edhe pr pulla komanduese, krijimin e menyve dhe toolbareve. Makro prbhet nga aksioni dhe argumentet. Aksioni sht puna q duhet kryer si hapja e nj formulari ndrsa argumentet prcaktojn specifikat e aksionit, si cili formular duhet t hapet. Makrot n Access krijohen n dritaren Macro Design. Kjo dritare ka dy pjes, pjesa e siprme quhet paneli i aksionit, i cili prmban deri katr kolona. Ku dy prej tyre jan t parazgjedhura: kolona Action dhe kolona Comment ndrsa dy kolonat tjera mund ti bjm t dukshme duke shkuar te View dhe zgjedhur Macro Name dhe Conditions. Kolona Action prmban nj nga shum aksionet n dispozicion, kolona Comment shrben pr prshkrimin e aksionit. Prshkrimi i aksionit duket t jet jo i rndsishm kur t krijohet makroja por m von sht treguar se sht shum i dobishm n rastet kur dshirojm q t ndryshojm makron. Kolona Macro Name prmban emrin e makros me t cilin do ti referohemi, kolona Conditions prmban kushtin q duhet plotsuar n mnyr q t ekzekutohet makroja. Pjesa tjetr, pjesa e poshtme quhet Action Arguments dhe ndryshon nga pamja n varsi se cilin aksion kemi zgjedhur. Shumica e aksioneve krkojn m shum se nj argument.

71

BAZAT E T DHNAVE

Krijimi i nj makroje
Hapim bazn e t dhnave, te dritarja e bazs klikojm te Macros dhe pastaj klikojm pulln New. Do t hapet dritarja Macro Design. Te Action zgjedhim OpenForm, te Comments shkruajm: Hapim formularin pr tabeln klientt, ndrsa te Action Arguments, te Form Name zgjedhim formularin KLIENTT. N fund e ruajm makron me emrin Test-makro. Kt makro mund ta provojm duke krijuar nj pull komande n ndonj formular, aty zgjedhim kategorin Miscellaneous dhe aksionin Run Macro. Aty zgjedhim pastaj makron me emrin Test-makro dhe emrojm pulln Hape formularin. Kur t hapet formulari n Form View dhe shtypet pulla Hape formularin ather do t hapet formulari KLIENTT. Si u pa me krijimin e makros kur klikuam n kolonn Action u hap nj list e aksioneve. Nj makro mund t prmbaj 999 aksione, secili aksion n rresht t veant. N tabeln e mposhtme jan disa nga aksionet: Aksioni AddMenu ApplyFilter Close CopyObject DeleteObject HourGlass MsgBox OpenForm OpenDiagram OpenQurey OpenReport OpenTable Quit Rename RunApp RunCode RunMacro Save SetWarnings StopAllMacros TransferDatabase TransferText Prshkrimi Shton meny n nj meny bar Zbaton nj filter ose pyetsor Mbyll nj dritare t specifikuar Kopjon nj object t bazs n nj baz tjetr ose n t njjtn baz me emr t ndryshm Fshin objektin e specifikuar Ndryshon pamjen e treguesit t miut n or t rrs. Hap nj dritare q prmban tekst informative ose lajmrues Hap nj formular Hap nj diagram Hap nj pyetsor Hap nj raport Hap nj tabel Mbyll Access-in Riemeron objektin e caktuar Starton nj program Ekzekuton nj procedur t Microsoft Access Basic Ekzekuton nj makro Ruan objektin e caktuar Kthen sistemin e porosive On dhe Off Ndalon t gjitha makrot e ekzekutuara Importon ose eksporton t dhna n mes t dy bazve t t dhnave Importon ose eksporton tekst n mes t bazs active dhe nj tekst datoteke 72

BAZAT E T DHNAVE

Raportet
Raportet paraqesin nj form t prshtatshme pr shikimin e t dhnave duke na mundsuar edhe shypjen e informacioneve n fardo formati. Me an t raporteve mund t bjm grupimin e t dhnave, kombinimin e tyre sipas dshirs. Mund t krijojm kalkulime si vlera mesatare ose kalkulime tjera statistikore dhe paraqitjen e tyre grafike. Raportet mund t prmbajn t dhna nga tabela ose tabela t lidhura dhe nga pyetsort. Tipet e paraqitjes s raporteve Tipet baz pr paraqitjen e raporteve jan: Columnar paraqitja e fushave n nj kolon, t dhnat paraqiten njra mbi tjetrn. Tabular paraqitja e t dhnave n rreshta dhe kolona me grupime. Mail-merge reports krijimi i vrtetimeve, kontratave etj. Mailing labels paraqitja e t dhnave n etiketa t madhsive t ndryshme. Figura e mposhtme tregon paraqitjen e t dhnave me an t tipit Columnar.

73

BAZAT E T DHNAVE Paraqitja e t dhnave pr printim n nj flet n rreshta dhe kolona sht paraqitja me an t tipit Tabular, si n figurn e mposhtme.

Krijimi i vrtetimeve , kontratave etj bhet me an t tipi Mail-merge reports. Kjo bhet n Design View si figurn e mposhtme.

74

BAZAT E T DHNAVE Mailing labels paraqet t dhnat n etiketa t madhsive t ndryshme, si n figurn e mposhtme.

Kto jan tipet kryesore t krijimit t raporteve, ndrsa mnyrat pr krijimin e tyre jan me an t: AutoReport Design View Asistentit t raportit (Report Wizard) AutoReport: Columnar AutoReport: Tabular Chat Wizard Label Wizard

75

BAZAT E T DHNAVE

Krijimi i raportit me an t AutoReport


Mnyra m e shpejt pr krijimin e raportit sht me an t AutoReport. Me an t AutoReport mund t krijojm raporte vetm nga tabelat e krijuara m par dhe nuk kemi kontroll mbi dizajnimin e atyre raporteve. N dritaren e bazs s t dhnave klikojm te Tables dhe zgjedhim nj tabel me an t s cils dshirojm t krijojm raportin. Pastaj shkojm te pulla New Object zgjedhim AutoReport(ose Insert dhe AutoReport)dhe raporti do t krijohet automatikisht dhe do t shfaqet. Shembull: N bazn e t dhnave Banka te objektet Tables zgjedhim tabeln KLIENTT, pastaj n toolbar te pulla New Object zgjedhim AutoReport dhe do t krijohet raporti i mposhtm.

76

BAZAT E T DHNAVE

Krijimi i raportit me an t Asistentit t raportit (Report Wizard)


Me an t Asistentit t raportit e thjeshtsojm krijimin e raportit. Asistenti i raportit na udhheq npr nj varg pyetjesh pr krijimin e raportit. Sikurse Asistenti i formularit edhe Asistenti i raportit na mundson pamje bazike pr raportin t ciln pastaj mund ta ndryshojm. Ekzistojn disa mnyra pr t aktivizuar Asistentin e raportit: Nga dritarja e bazs s t dhnave zgjedhim Insert dhe Report Nga objektet e bazs zgjedhim Reports dhe klikojm n pulln New n dritaren e bazs s t dhnave N toolbar zgjedhim pulln New Object dhe Report Pamarr parasysh se ciln mnyr e zgjedhim pr krijimin e raportit do t hapet dritarja e mposhtme.

Dritarja New Report prmban gjasht zgjedhje pr krijimin e raportit: Design View paraqet nj raport plotsisht t zbrazt Asistentit t raportit (Report Wizard) krijon raportin nga tri mundsi: Columnar, Tabular dhe Justified AutoReport: Columnar krijon raportin n baz t tipit Columnar AutoReport: Tabular krijon raportin n baz t tipit Tabular Chat Wizard krijon raportin n baz t grafeve t ndryshme Label Wizard Asistenti i krijimit t etiketave me madhsi t ndryshme 77

BAZAT E T DHNAVE Pr startimin e Asistentit t raportit zgjedhim Report Wizard. N pjesn e poshtme t dritares mund t zgjedhim tabeln ose pyetsorin (t krijuar m par) pr krijimin e formularit. Pra te Choose the table or query here the objects data comes from: zgjedhim objektin e dshiruar dhe klikojm OK. Pastaj na paraqitet dritarja pr zgjedhjen e fushave nga objektet e bazs. Pra mund t zgjedhim fusha nga nj ose m shum tabelave ose pyetsorve.

Fushat q dshirojm t jen n raport i zgjedhim dhe pastaj i shtojm n ann e djatht m an t ktyre pullave:

Shto fushn e zgjedhur Shto tr fushat Largo fushn e zgjedhur Largo tr fushat Pra mund t zgjedhim fusha nga m shum se nj tabel ose pyetsor. Pas zgjedhjes s fushave shtypim pulln Next dhe hapet dritarja pr prcaktimin e paraqitjes s t dhnave n raport. Ktu prcaktojm se n baz t cils fush do t bjm grupimin e t dhnave. Kjo zgjedhje bhet me an t shigjetave. Zgjedhim fushn Qyteti pr grupimin e t dhnave n rastin ton. Mund t zgjedhim m shum se nj fush pr t br grupimin e t dhnave. Nse nuk zgjedhim fush pr grupimin e t dhnave ather 78

BAZAT E T DHNAVE gjat krijimit t raportit do t paraqitet dritarja ku do t kemi mundsi t zgjedhim renditjen e fushave sipas tipit: Columnar, Tabular ose Justified.

Shtypim pulln Next dhe hapet dritarja

E cila mundson q t bjm sortimin e t dhnave sipas rregullave: n rritje A deri n Z ose 0 deri n 9 dhe n zbritje Z deri n A ose 9 deri n 0. Bjm zgjedhjen e dshiruar dhe shtypim pulln Next. Pastaj paraqitet dritarja e przgjedhjes s pamjes s t dhnave n raport. Aty kemi gjasht zgjedhje q mund ti shohim n ann e majt t dritares me klikimin n ann e djatht t zgjedhjeve. Aty sht edhe

79

BAZAT E T DHNAVE zgjedhja pr fletn e raportit se si t ket pamjen Portrait ose Landscape P.SH. zgjedhim Stepped dhe Portrait dhe shtypim pulln Next.

Pas zgjedhjes s pamjes, hapet dritarja pr zgjedhjen e stilit t paraqitjes s t dhnave (si n figurn e mposhtme). Secili stil ka prapavij t ndryshme, shkronja, madhsi t ndryshme. Ku secili q klikohet, n ann e majt mund t shihet pamja e tij. Zgjedhim Casual dhe shtypim pulln Next.

N fund paraqitet dritarja pr emrimin e raportit, si dhe zgjedhjes se a dshirojm t bjm modifikim n Design View apo raporti t hapet n formn e tij prfundimtare. Shtypim pulln Finish dhe raporti do t duket ksisoj: 80

BAZAT E T DHNAVE

Ky raport mund t printohet : File dhe Print dhe hapet dritarja pr printim e Microsoft Windows , pra njsoj si te programet Microsoft Office. Ruajtja e raportit bhet duke shkuar n File dhe Save ose File dhe Save As. Krijimi i raportit n Design View Krijimi i raportit me an t Asistentit t raportit nuk na jep shum kontroll mbi dizajnimin e tij, por si do t shohim me krijimin e raportit n Design View ne kemi mundsi t shumta n dizajnimin e raportit. N dritaren e bazs klikojm Reports shtypim pulln New dhe zgjedhim Design View, ndrsa te Choose the table or query where the objects data comes from: zgjedhim tabeln ose pyetsorin me an t cilit do t krijojm raportin.

81

BAZAT E T DHNAVE Elementet kryesore prbrse t pamjes Design View t raportit jan: zona e raportit dhe elementet e kontrollit. Raporti prbhet nga Kreu i raportit (Report Header), Kreu i faqes (Page Header), Detalet (Detail), Fundi i faqes (Page Footer) dhe Fundi i raportit (Report Footer). Q t shihen kto pjes prbrse t formularit shkojm n menyn kryesore te View dhe zgjedhim Page Header/Footer dhe Report Header/Footer. Veprimet me elementet e kontrollit dhe prdorimi i kutis s veglave (toolbox) sht i njjt si te formulart. Karakteristikat e fushave n raport jan njsoj si te formulart t gjitha vetit q u paraqitn te formulart vlejn edhe pr raportet. Poashtu edhe krijimi i nnraporteve bhet n mnyr t njjt si te formulart.

82

BAZAT E T DHNAVE

Dritarja komanduese (Switchboard)


M hert kemi msuar pr krijimin e objekteve t bazs s t dhnave si tabelat, pyetsort, formulart, raportet dhe makrot. Pastaj kemi punuar me secilin object vemas, ndrsa me an t dritares komanduese do ti bashkojm kto objekte n nj program pa pas nevoj t shkruajm ndonj program kompleks pr baza t t dhnave. Me an t dritares komanduese do t bjm automatizimin e funksionimit t bazs s t dhnave. N Access dritarja komanduese (switchboard) sht nj form q lejon shfrytzuesin t ekzekutoj urdhra nga nj dritare kryesore. N fakt dritarja komanduese sht nj formular i cili nuk sht i lidhur me ndonj tabel ose pyetsor. Dritarja komanduese prmban pulla komanduese ose objekte tjera q ekzekutojn makrot. Krijimi i nj dritare komanduese duhet t jet hapi i fundit i krijimit t nj baze t t dhnave. Jan disa mnyra pr krijimin e driatres komanduese, mund t shfrytzojm Switchboard Managerin ose me an t nj formulari t zbrazt. Nse shfrytzojm Switchboard Manager-in pr krijimin e dritares komanduese ather Access-i automatikisht do t krijoj nj tabel e cila prshkruan aksionet q kryejn pullat n dritaren komanduese. Poashtu mund t krijojm dritaren komanduese n Design View duke prdor nj formular t zbrazt. Nse krijojm nj formular i cili do t shfrytzohet pr dritaren komanduese ather ai formular nuk duhet t jet i lidhur me ndonj tabel ose pyetsor. Q ky formular t ket pamjen e nj dritare komanduese duhet q n karakteristikat (properties) e formularit t bjm disa ndryshime si: fshehja e pullave t navigacionit, scrollbareve, kufirit t formularit etj.

Krijimi i dritares komanduese


Nga menyja zgjedhim Tools pastaj Database Utilities dhe Switchboard Manager.

Do t hapet dritarja me porosin:

83

BAZAT E T DHNAVE Switchboard Manager-i nuk ka gjet ndonj dritare komanduese. A dshironi t krijoni nj? Klikojm n Yes dhe hapet dritarja.

Close e mbyll dritaren komanduese New - krijimi i nj dritare komanduese t re Edit - ndryshimi i dritares komanduese t selektuar Delete fshirja e dritares komanduese t selektuar Make Default e bn dritaren komanduese t selektuar t parazgjedhur Shtypim Edit dhe hapet dritarja.

N fushn Switchboard Name: shkruajm emrin me t cilin dshirojm q ta ruajm dritaren komanduese, ndrsa me an t pulls New krijojm pulla t reja n dritaren komanduese. Shtypim pulln New dhe hapet dritarja. 84

BAZAT E T DHNAVE

Te fusha Text: shkruajm tekstin q do t paraqitet pr pulln komanduese. Te Command: zgjedhim urdhrin q do t kryej ajo pull komanduese, ku aty jan disa mundsi t treguara m posht:

Urdhri Go to Switchboard Open Form in Add Mode Open Form in Edit Mode Open Report Design Application Exit Application Run Macro Run Code

Prshkrimi Hape dritaren komanduese Hape formularin pr shtimin e t dhnave Hape formularin pr ndryshimin e t dhnave Hape raportin Hape dritaren komanduese pr ndryshime n dizajn Mbyll bazn e t dhnave Ekzekuto makron Ekzekuto kodin

Zgjedhim njrn nga mundsit dhe shtypim OK. Dritarja komanduese do t ket pamjen.

85

BAZAT E T DHNAVE

Krijimi i dritares komanduese me Design View, bhet si te krijimi i formularve vetm se aty i fshehim pullat e navigacionit, kufirin e formularit, pullat pr minimizim, maksimizim dhe mbyllje. Pasi t krijohet dritarja komanduese sht mir q ajo t jet startuese. Pra sa her q hapet baza e t dhnave t hapet dritarja komanduese. Pr kt shkojm te Tools pastaj StartUp dhe te Display Form/Page zgjedhim dritaren komanduese. Maksimizimi i dritares komanduese Nse dshirojm q kjo dritare t maksimizohet sa tr monitori dhe nga dritarja t largohen : pullat e navigacionit, pullat pr minimizim, maksimizim dhe mbyllje veprojm kshtu. Hapim dritaren komanduese n Design View dhe shtypim pulln Properties n toolbar. Pastaj hapet dritarja e karakteristikave dhe aty i bjm kto ndryshime: Scrollbar Neither Record Selectors No Navigation buttons No Dividing lines No Pop up Yes Auto resize Yes Border style None Control box No Min Max buttons None Close button No Event procedure dhe klikojm n tri pikat dhe hapet dritarja ku e shkruajm kodin: On Open Private Sub Form_Open(Cancel As Integer) DoCmd.Maximize End Sub 86

BAZAT E T DHNAVE Paraqitja e dritares prshndetse kur t starton dritarja komanduese S pari krijojm nj makro me emrin Prshndetje, ku n kolonn Action do t zgjedhim MsgBox, ndrsa n pjesn e poshtme pra te Action Arguments te rreshti Message shkruajm: Prshndetj, pastaj te rreshti Type zgjedhim Information, te rreshti Title shkruajm titullin e dritares prshndetse. N fund e ruajm makron. Pastaj hapim dritaren komanduese n Design View dhe shtypim pulln Properties. Te Event gjejm karakteristikn On Open dhe zgjedhim makron Prshndetje, i ruajm ndryshimet e bra dhe e hapim dritaren komanduese. Do t shohim se do t paraqitet nj dritare me tekstin Prshndetje. Poashtu mund t bjm q dritarja t paraqitet edhe kur t mbyllet dritarja komanduese, shkojm te Properties, Event dhe te karakteristika On Close zgjedhim makron q dshirojm.

87

BAZAT E T DHNAVE

MYSQL

88

BAZAT E T DHNAVE

Instalimi i MySQL n Windows


Krkesat e sistemit operativ Windows Pr t punuar me MySQL n Windows duhet t plotsohen kto kushte: Sistemi operativ Windows 32 bitsh si: 9x, Me, NT, 2000, XP ose Windows Server 2003 Prkrahje t protokollit TCP/IP Nj kopje t MySQL binare pr Windows Programi q do t lexoj .zip datotekat Hapsir t mjaftueshme n hard disk (n prgjithsi rekomandohet 200 MB) Zgjedhja e pakets instaluese Pr MySQL 5.0 jan tri paketa instaluese prej ku mund t bjm instalimin e MySQL n Windows, ato jan: Paketa esenciale (Essential package) : Kjo paket e ka emrin mysql-essential5.0.18-win32.msi dhe prmban minimumin e datotekave t nevojshme pr instalimin e MySQL n Windows, duke prfshir edhe Asistentin e konfigurimit (Configuration Wizard). Paketa e plot (Complete package):Kjo paket e ka emrin mysql-5.0.18-win32.zip dhe prmban datotekat pr instalimin e plot t MySQL n Windows, duke prfshir edhe Asistentin e konfigurimit (Configuration Wizard). Kjo paket prmban komponente opsionale si serverin. Paketa joinstaluese (The noninstall archive): Kjo paket ka emrin mysql-noinstall5.0.18-win32.zip dhe prmban t gjitha datotekat q jan n paketn e plot duke prjashtuar Asistentin e konfigurimit. Kjo paket nuk prmban instalimin e automatizuar prandaj duhet t instalohet dhe konfigurohet n mnyr joautomatike.

89

BAZAT E T DHNAVE

Instalimi i MySQL-it me an t Asistentit t instalimit (Installation Wizard)


Paketa esenciale ose e plot Shkarkimi dhe startimi i Asistentit pr instalimin e MySQL-it
Paketat instaluese t MySQL mund t shkarkohen nga adresa : http://dev.mysql.com/downloads/ Procesi i startimit t Asistentit t instalimit dallon nga prmbajtja e pakets s shkarkuar. Nse sht datoteka Setup.exe ather vetm klikohet dy her n t pr t startuar instalimin me Asistentin e instalimit, e njjta vlen nse datoteka e shkarkuar sht .msi .

Zgjedhja e tipit t instalimit Jan tri lloje t instalimit n dispozicion: Tipike (Typical), E plot (Complete) dhe Sipas dshirs (Custom). Instalimi Tipik instalon MySQL serverin, komand-rreshtin mysql pr klientin dhe komand-rreshtin me vegla. Komand-rreshti pr klientt dhe veglat prmbajn mysqldump, myisamchk dhe vegla t tjera q ndihmojn n menaxhimin e MySQL serverit. Instalimi i plot i MySQL prmban t gjitha komponentat n paketn instaluese. Instalimi i plot prmban komponente si librari serverin, prkrahja e skriptave dhe dokumentimit.

90

BAZAT E T DHNAVE Instalimi sipas dshirs na ofron kontroll dhe m shum mundsi pr zgjedhjen e pakets instaluese.

Nse dshirojm t ndrrojm shtegun e instalimit ose ndonj komponenet ather duhet t zgjedhim Custom (Sipas dshirs). Prndryshe preferohet t zgjedhet Typical. Bjm zgjedhjen e duhur dhe shtypim Next. Hapet dritarja konfirrmuese me zgjedhjet e bra m hert. Pr t instaluar MySQL me kto zgjedhjet e bra vetm shtypim Install. Pr t ndryshuar zgjedhjet e bra vetm shtypim pulln Back dhe bjm ndrrimet e nevojshme. Nse dshirojm q t ndrpresim instalimin ather shtypim pulln Cancel.

91

BAZAT E T DHNAVE

Pas shtypjes s pulls Install paraqitet dritarja, ku do instalohen t gjitha komponentat e zgjedhura.

Pas instalimit na krkohet t krijojm nj llogari n MySQL.com por ktu ne zgjedhim Skip-Sign Up dhe shtypim Next.

92

BAZAT E T DHNAVE Dhe hapet dritarja q tregon se instalimi prfundoi. N kt dritare sht mundsia e zgjedhjes pr konfigurimin e MySQL serverit, e bjm zgjedhjen e saj dhe shtypim Finish.

Tani na paraqitet dritarja prshndetse pr konfigurimin e MySQL serverit. Pra do t krijojm nj instanc t serverit. Shtypim pulln Next.

Do t hapet dritarja pr zgjedhjen e tipit t serverit. Jan tri tipe nga t cilat mund t zgjedhim, dhe pasi t zgjedhim tipin e serverit kjo do t ndikoj n vendimet q i bn Asistenti i konfigurimit pr sa i prket memories n disk dhe shfrytzimin e procesorit. 93

BAZAT E T DHNAVE

Developer Machine : Zgjedhni kt opsion nse keni ndrmend q MySQL ta shfrytzoni pr nevoja personale. Me kt MySQL serveri do t shfrytzoj minimumin e burimeve t sistemit. Server Machine : Zgjedhni kt opsion pr server aty ku MySQL serveri do t punoj s bashku me servert tjer si jan FTP, E-mail dhe Web servert. MySQL serveri sht i konfiguruar ashtu q t shfrytzoj nj mesatare t burimeve t sistemit. Dedicated MySQL Server Machine : Zgjedhni kt opsion nse dshironi q vetm MySQL serveri t punoj n at makin . MySQL serveri sht i konfiguruar ashtu q t shfrytzoj t gjitha burimet q jan n dispozicion nga burimet e sistemit.

Shtypim Next dhe hapet dritarja pr mnyrn e shfrytzimit t bazs s t dhnave. Jan tri opsione ne do t zgjedhi opsionin e fundit Non-Transactional Database Only.

94

BAZAT E T DHNAVE

N fund shtypim pulln Next. Do t paraqitet dritarja pr kufizimin e kyjeve n MySQL server. Jane tri opsione: Decision Support (DSS)/OLAP : Zgjedhni kt opsion nse serveri nuk do t krkoj numr t madh t kyjeve. Numri maksimal i kyjeve sht 100. Online Transaction Processing (OLTP) : Zgjedhni kt opsion nse serveri krkon nj numr t madh t kyjeve. Numri maksimal i kyjeve sht 500. Manual Setting : Zgjedhni kt opsion pr t vn numrin maksimal t kyjeve.

95

BAZAT E T DHNAVE Zgjedhim opsionin e par dhe shtypim Next. Pastaj hapet dritarja pr zgjedhjen e TCP/IP pr komunikim n rrjet ose jo dhe pr konfigurimin e portit n t cilin do t kyemi n MySQL serverin. TCP/IP sht e parazgjedhur, pr t mos zgjedhur TCP/IP vetm e aktivojm kutizn. Porti 3306 sht port i parazgjedhur nga Asistenti i konfigurimit, pr t ndrruar numrin e portit vetm zgjedhim nj numr nga lista ose vetm e shkruajm at. Nse porti q keni zgjedhur sht ve n shfrytzim ather do t krkohet nga ju pr nj numr tjetr.

Bjm zgjedhjet e duhura dhe shtypim pulln Next. Do t hapet dritarja pr zgjedhjen e bashksis s karakterve. Jan tri opsione zgjedhim opsionin e par Standard Character Set.

96

BAZAT E T DHNAVE Dhe shtypim pulln Next. Do t hapet dritarja pr zgjedhjen e shrbimit (Service) t MySQL. N platformn Windows MySQL mund t instalohet si shrbim (Service). Asistenti i konfigurimit e ka t parazgjedhur instalimin e MySQL serverit si shrbim (Service). Nse dshirojm q t mos instalojm MySQL si shrbim ather vetm e aktivojm kutin. Pr instalimin e MySQL serverit si shrbim por q ai t mos startoj automatikisht duhet t aktivojm kutin te Launch the MySQL Server automatically.

Shtypim pulln Next. N dritaren pr sigurin sht e preferuar t vhet fjalkalimi (root passord) pr MySQL serverin.Asistenti i konfigurimit krkon vnien e nj fjalkalimi. Nse nuk dshirojm q t vjm fjalkalim ather e aktivojm kutin te Modify Security Settings. Pr vnien e fjalkalimit shkruajm fjalkalimin n New root password kutin dhe n Confirm kutin. Nse jemi duke br rikonfigurimin e instancs s MySQL serverit ather do t na krkohet q t shkruajm edhe fjalkalimin ekzistues n Current root password kutin. Pr t ndaluar kyjen n MySQL server prmes rrjets vetm e aktivojm kutin te Enable root access from remote machines. Kjo rrit sigurin e fjalkalimit. Pr krijimin e nj shfrytzuesi anonym e aktivojm kutin afr Create An Anonymous Account. Me krijimin e nj shfrytzuesi anonym do t zvoglojm sigurin n server dhe do t shkaktojm vshtirsira n kyje dhe leje pr at shfrytzues. Pr kt arsye nuk preferohet krijimi i shfrytzuesit anonim.

97

BAZAT E T DHNAVE

Shkruajm fjalkalimin : fshmn dhe e konfirmojm at. Shtypim pulln Next. N fund paraqitet dritarja konfirmuese. Pr startimin e konfigurimit t MySQL serverit shtypim Execute. Pasi t shtypet Execute, Asistenti pr konfigurimin e MySQL serverit kryen detyrat e prcaktuara m par duke treguar progresin n dritaren konfirmuese. Asistenti i konfigurimit t MySQL serverit i shkruan t gjitha konfigurimet e serverit n datotekn my.ini i cili gjendet n C:\Program Files\MySQL\MySQL 5.0\my.ini .

Dhe n fund shtypim Finish pr prfundimin e konfigurimit t serverit.

98

BAZAT E T DHNAVE

Programs Shkojm pastaj te Start Command Line Client dhe hapet dritarja:

MySQL

MySQL Server 5.0

MySQL

Shkruajm fjalkalimin fshmn dhe kyemi n server.

99

BAZAT E T DHNAVE

ka sht MySQL
MySql sht nj system i menaxhimit t relacioneve t bazave t t dhnave (RDBMS) . Nuk prmban n vehte vetm pjesn e serverit pr menaxhim t bazs s t dhnave, por ai ka edhe vegla pr qasjen e bazs s t dhnave dhe ndrtimin e programeve prkundrejt atyre bazave t t dhnave. Disa prej veglave jan: mysql Ekzekuton SQL komandat prkundrejt MySQL. Poashtu mund t prdoret pr ekzekutimin e SQL komandave t ruajtura n datoteka. mysqlaccess menaxhimi i shfrytzuesve mysqladmin mundson menaxhimin e serverit t bazs s t dhnave, duke prfshir krijimin dhe fshirjen e bazs s t dhnave. mysqldump hedh prmbajtjen e nj baze t t dhnave MySQL ose tabele n nj datotek. mysqlhotcopy bn ruajtjen e nj kopje rezerv (BackUp) t bazs s t dhnave MySQL. mysqlimport bn importimin e t dhnave n datoteka me formate t ndryshme n bazn e t dhnave. mysqlshow shfaq informacionin pr MySQL serverin dhe pr do objekt si baza e t dhnave dhe tabelat n at server. Safe_mysqld starton mysqld n UNIX me siguri t madhe. MySQL sht nj software q mundson shfrytzuesit t krijoj, mirmbaj dhe t menaxhoj bazat e t dhnave. Kjo kategori e software-it sht e njohur si sistemi i menaxhimit t bazave t t dhnave (DBMS). Sipas definicionit baza e t dhnave sht nj grumbull i organizuar i t dhnave. Si u cek m hert MySql sht nj system i menaxhimit t relacioneve t bazave t t dhnave (RDBMS). Nj baz relacionale organizon t dhnat npr tabela dhe paraqet lidhjet n mes atyre tabelave. Kto lidhje na mundsojn bashkimin e t dhnave nga shum tabela q na jep nj paraqitje t ndryshme t t dhnave. Natyrisht se m leht sht t bhet ilustrimi me nj shembull pr t kuptuar m mir konceptin e tabelave dhe relacioneve t tyre. Shembull: Nj tabel ka emrin, disa kolona dhe rreshta q prmbajn t dhna. N bazn e t dhnave relacionale t dhnat paraqiten n form t tabelave. N shembullin e mposhtm shohim se n t dy tabelat sht paraqitur kolona Numri i llogaris. Me an t atij numri mund t gjejm se cili klient ka marr kredin e caktuar. Thn shkurt sistemi i menaxhimit t bazs s t dhnave (DBMS) pr nj sistem relacional quhet sistemi i menaxhimit t bazs relacionale (RDBMS). Ku MySQL sht nj shembull i nj RDBMS. 100

BAZAT E T DHNAVE Tabela : Klientt Numri i llogaris 140201 140202 140203 140204 140205 Emri Bujar Amir Valbona Gani Lavdim Mbiemri Shulemaja Simnica Krasniqi Thai Kastrati Qyteti Prishtin Fush Kosov Dardan Besian Prishtin Adresa Bregu i Diellit rr. Agim Ramadani rr. Adem Jashari rr. Zahir Pajaziti Tophane Tel 044/123-456 044/321-654 044/213-546 044/312-645 044/132-465

Tabela : Kredit ID 1 2 3 4 5 6 7 8 9 10 Numri i llogaris 140203 140205 140201 140203 140202 140204 140205 140201 140205 140202 Tipi i kredis Vetur Mobile Vetur Shtpi Kompjuter Kuzhin Lavatrie Mobile Vetur Tavolin Shuma 4500 1300 7000 45000 630 1000 420 1730 5250 420 Prqindja 6 7.5 5.5 4.7 7 4 3 5.8 7.3 8.3 Kohzgjatja Aprovimi Fillimi e kredis 10/04/ 12 po 2006 23/08/ 6 po 2006 15/02/ 36 po 2005 20/05/ 120 jo 2005 12/07/ 12 po 2006 04/09/ 12 po 2005 05/06/ 6 po 2006 02/10/ 12 po 2006 12/04/ 18 po 2005 12/08/ 12 jo 2005

Por si bhet krijimi i bazs s t dhnave, si bhet definimi i tabelave, ndryshimi, shtimi dhe fshirja e t dhnave. SQL (Structured Query Language) sht nj gjuh q shrben pr operacionet n nj baz t t dhnave. SQL sht nj gjuh standarde q shumica e programerve t bazave t t dhnave e njohin. 101

BAZAT E T DHNAVE Mirmbajtja e nj baze t t dhnave n nj tabel nuk krkon shum njohuri n teorin e bazs s t dhnave. N jetn reale bazat e t dhnave kan numr t madh t dhnash (qindra, mijra madje edhe miliona). Ktu sht edhe rndsia e bazave t t dhnave relacionale. Konsiderojm pr shembull se libraria e Kongresit n SHBA ka afr 16 milion libra. Pr arsye q do ti sqarojm m posht sht e pamundur t mbahen t gjitha t dhnat n nj tabel.

Prsritja e t dhnave (Data redundancy)


Problemi kryesor q lidhet me prdorimin e nj tabele t vetme pr baz t t dhnave sht prsritja e panevojshme e t dhnave. Ndonjher prsritja e t dhnave sht e nevojshme, por ideja sht q t largohen sa m shum prsritjet e t dhnave. Numri i llogaris 140203 140205 140201 140203 140202 140204 140205 140201 Emri Valbona Lavdim Bujar Valbona Amir Gani Lavdim Bujar Mbiemri Krasniqi Kastrati Shulemaja Krasniqi Simnica Thaqi Kastrati Shulemaja Qyteti Dardan Pishtin Prishtin Dardan Fush Kosov Besian Prishtin Prishtin Tipi i kredis Vetur Mobile Vetur Shtpi Kompjuter Kuzhin Lavatrie Mobile Shuma 4500 1300 7000 45000 630 1000 420 1730 ID Nnpunsi Faton Gashi Astrit Kabashi Astrit Kabashi Faton Gashi Albana Gashi Valon Ramadani Astrit Kabashi Astrit Kabashi Aprovimi po Po po jo po po po po

ID 1 2 3 4 5 6 7 8

Prsritja e t dhnave n tabeln e msiprme sht e qart. P.SH. Numri i llogaris, Emri, Qyteti, Tipi i kredis, Nnpunsi prsriten disa her. N prpjekje pr reduktimin e prsritjes s t dhnave duhet q kt tabel ta ndajm n disa tabela. Nj zgjidhje e mundshme mund t jet ndarja n pes tabela t reja. Klientt ku secili klient ka numrin e llogaris,emrin, mbiemrin, adresn. Qyteti , secili qytet me shifr Kredit ku secila kredi do t ket shifrn e vet si dhe nnpunsi i banks q e ka lshuar at kredi Shifra e kredis , secila kredi do t ket shifrn e vet Nnpunsit ku secili nnpuns do t ket shifrn e vet. 102

BAZAT E T DHNAVE Tabela : Klientt Numri i Emri llogaris 140201 140202 140203 140204 140205 Bujar Amir Valbona Gani Lavdim

Mbiemri Shulemaja Simnica Krasniqi Thai Kastrati

ID Qyteti 1 3 2 4 1

Adresa Bregu i Diellit rr. Agim Ramadani rr. Adem Jashari rr. Zahir Pajaziti Tophane

Tel 044/123-456 044/321-654 044/213-546 044/312-645 044/132-465

Tabela : Qyteti ID Qyteti 1 2 3 4 Tabela : Kredit ID 1 2 3 4 5 6 7 8 9 Numri i llogaris 140203 140205 140201 140203 140202 140204 140205 140201 140202 Shifra e kredis K1 K2 K1 K4 K3 K5 K6 K2 K7 Shuma 4500 1300 7000 45000 630 1000 420 1730 420 Prqindja Aprovimi 6 7.5 5.5 4.7 7 4 3 5.8 8.3 Tipi i kredis Vetur Mobile Kompjuter Shtpi Kuzhin Lavatrie Tavolin po po po jo po po po po jo ID Nn 3 1 1 3 4 2 1 1 4 Qyteti Prishtin Dardan Fush Kosov Besian

Tabela : Shifra e kredis Shifra e kredis K1 K2 K3 K4 K5 K6 K7

103

BAZAT E T DHNAVE Tabela : Nnpunsit ID Nnpunsit 1 2 3 4 Emri Astrit Valon Faton Albana Mbiemri Kabashi Ramadani Gashi Gashi Filiala Prishtin Besian Dardan Fush Kosov

Tani qyteti, tipi i kredis, emri dhe mbiemri i klientit si dhe emri dhe mbiemri i nnpunsit paraqitet vetm nga nj her. Natyrisht se ka ende t dhna t dyfishta n baz t t dhnave. P.SH. Shifra e kredis, ID qyteti paraqiten m shum se nj her n kto tabela. Si u tha m hert nuk mund t eliminojm t gjitha duplikatet dhe t mbajm lidhjen n mes tabelave, kto jan t dhna q prsriten por t nevojshme. Rndsia e eliminimit t prsritjes s t dhnave mund t shpjegohet edhe me nj shembull t thjesht. Shembull: Konsiderojm bazn e t dhnave pr nj biblotek me nj fond t librave 16 milion. Supozojm se baza e t dhnave prmban 10000 botues t ndryshm. Adresa e botuesit n bazn e t dhnave n nj tabel do t paraqitej 16 milion her, ku 10 000 adresa jan t ndryshme mes veti. Tani nse nj adres ka mesatarisht 50 karakter ather: ( 16 000 000 10 000 )* 50 = 799,5 milion karakter Nse secili karakter z vend 2 byte ather n bazn e t dhnave me nj tabel sht zn vend n hapsirn e diskut prafrsisht 1.49 GB vetm pr adresn e botuesit. Nga kjo q u tha pr prsritjen e panevojshme t t dhnave konkludohet se ndrtimi i nj baze t t dhnave me an t nj tabele nuk sht praktike. Disa prej arsyeve tjera pr mos prdorimin e vetm nj tabele pr ndrtimin e bazs s t dhnave jan: Ndryshimi i t dhnave Shtimi i t dhnave Fshirja e t dhnave Mirmbajtja e integritetit referencial etj

104

BAZAT E T DHNAVE

Tipet e t dhnave
Sikurse edhe t gjitha sistemet e menaxhimit t bazave relacionale edhe MySQL ka tipet e t dhnave specifike: Tipet numerike Tipet string ose tipet karakter Tipet e renditjes (Enumerations) dhe bashksit (Set) Tipet pr dat MySQL prkrah tipe t ndryshme t t dhnave me funksion t ndyshm. Tip i t dhnave sht, tipi i t dhns q do t ruhet n fush (kolon). N nj tabel mund t jen tipe t ndryshme t t dhnave, por secila fush do t ket tipin e t dhnave specifik. Nj fush e definuar si numerike do t pranoj vetm t dhna numerike, nj fush e definuar si tip i karakterve CHAR(10) do t pranoj vetm deri n 10 karakter. Kto definime jan els pr nj baz t t dhnave t shpejt dhe efikase. N parim jan tri grupe t t dhnave. Grupi i par sht numerik. T dhnat numerike jan ato t dhna q jan numra pozitiv ose negative si 4 ose -32. T dhnat numerike poashtu mund t jen n formn : heksadecimale si 2EE250CC, shkencore si 2 x 10^23, decimale. Grupi i dyt i tipit t t dhnave sht tipi string ose tipi karakter. N kt grup hyjn t gjitha t dhnat q jan kombinim i shkronjave dhe numrave si : shkronjat, numrat, fjalit, adresa, numrat e telefonit etj. N fund grupi i ndryshm, ai prmban t dhnat q nuk mund t prfshihen n dy grupet e para si: data, koha. MySQL prkrah tipeve t t t dhnave ofron edhe modifikuesit e kolonave. Ata jan AUTO_INCREMENT, UNSINGNED, PRIMARY KEY, NULL, NOT NULL dhe BINARY.

Tipet numerike
Tipet numerike jan t paracaktuara q t prfshijn vetm numra. Nuk mund t ruajm shkronj ose nj varg t karakterve n nj fush t definuar mpar si numerike.Tipe t ndryshme numerike zn hapsir t ndryshme n memorie. Kjo sht arsye pse secili tip numerik ka intervalin prkufizues t ndryshm. Hapsira n Tipi i t dhnave memorie Intervali prkufizues Pa shenj (byte) TINYINT 1 -128 deri 127 0-255 SMALLINT 2 -32768 deri 32767 0-65535 MEDIUMINT 3 -8388608 deri 8388607 0-16777215 -2147483648 INT 4 deri 0-4294967295 2147483647 BIGINT 8 -9223372036854775808 0105

BAZAT E T DHNAVE deri 9223372036854775807 Varsisht nga vlera Varsisht nga vlera Varsisht nga vlera 18446744073709550615

FLOAT(M,D) DOUBLE(M,D) DECIMAL(M,D)

4 8 M+2

Nse nj fush sht e definuar si numerike dhe UNSIGNED ather intervali prkufizues dyfishohet pr at tip t dhnash. P.SH. nse deklarojm fushn si UNSIGNED TINYINT intervali prkufizues do t jet prej 0 deri n 255. Me deklarimin e nj fushe si UNSIGNED bjm q ajo fush t ket vetm numra pozitiv. Madhsia e tipit t t dhnave nuk ndryshon por vetm intervali prkufizues i tij. Tipet FLOAT, DOUBLE dhe DECIMAL jan numerike dhe mund t prfshijn numra pas presjes dhjetore. Tipet e tjera nuk e kan kt veti. MySQL na mundson kufizimin e shifrave pas presjes dhjetore. P.SH. numri 5.6876 me an t FLOAT(4,2) do t ruhet si 5.69 . Duhet t cekim se MySQL proceson t dhnat numerike m shpejt se do tip t t dhnash. Pr at nse dshirojm pyetsor t shpejt prdorim si kriter t dhna numerike. Poashtu edhe indeksat numerik n prgjithsi jan m t shpejt se indeksat t bazuar n karakter. Kur t bjm definimin e tipit t t dhnave pr nj fush duhet t kemi kujdes dhe t zgjedhim vlern m t madhe q do t na duhet. Nse nuk e bjm kt ather do t kemi probleme m von. MySQL pr vlerat q jan jasht intervalit prkufizues t tipit t t dhnave e zvendson me vlern m t madhe (skajin e djatht t intervalit). P.SH. kemi tipin e t dhnave UNSIGNED TINYINT dhe dshirojm t fusim vlern 1000 n at fush. MySQL do t ruaj at vler si 255, pra si vlern m t madhe t intervalit prkufizues. Modifikuesit e kolonave AUTO_INCREMENT,UNSINGNED dhe ZEROFILL mund t prdoren vetm pr t dhnat numerike. Kta modifikues kryejn veprime q mund t bhen vetm me numra. Modifikuesi UNSIGNED bn numrat n fush t jen pozitiv. AUTO_INCREMENT Modifikuesi i fushs AUTO_INCREMENT rrit vlern e fushs duke shtuar 1 n vlern maksimale. sht i dobishm pr krijimin e vlerave unike. Vlera e fushs me modifikuesin AUTO_INCREMENT fillon prej numrit 1 dhe shton nga nj pr do t dhn q shtohet n tabel. P.SH. krijojm nj tabel me nj fush AUTO_INCREMENT. Shtojm nj t dhn dhe vlera n fushn AUTO_INCREMENT sht 1, shtojm nj t dhn tjetr AUTO_INCREMENT bhet 2. Tani fshijm t dhnn e par, dhe shtojm nj t dhn tjetr.far vlere do t merr tani fusha AUTO_INCREMENT? Nse jeni prgjigjur 3, sht e sakt. Pra modifikuesi AUTO_INCREMENT nuk e riprdor vlern q kemi fshir m hert. CREATE TABLE Test (Auto_Test int NOT NULL AUTO_INCREMENT); INSERT INTO Test (Auto_Test) values(NULL); INSERT INTO TEST (Auto_Test) values(0); INSERT INTO Test (Auto_Test) values(); Poashtu mund t shtojm edhe ndonj numr, nse ai numr ekziston n tabel ather do t paraqitet gabim. Nse jo ather ai numr do t futet n tabel. Mundsi tjetr sht caktimi i numrit startues t fushs AUTO_INCREMENT. Nse dshirojm q modifikuesi i fushs t filloj nga numri 50 ather shkruajm: 106

BAZAT E T DHNAVE

CREATE TABLE Test (Test_ID INT NOT NULL AUTO_INCREMENT AUTO_INCREMENT = 50, Nj_fush INT) Nuk ka rndsi ku vendoset AUTO_INCREMENT=nnn n sintaksn e krijimit t tabels. N nj tabel mund t jet vetm nj fush AUTO_INCREMENT. Modifikuesi i fushs kur t arrin vlern maksimale t tipit t t dhnave na lajmrohet gabim. P.SH. nse kemi zgjedhur TINYINT pr AUTO_INCREMENT vlera maksimale sht 255. Pasi te kemi arritur vlern 255 dhe nse dshirojm t shtojm edhe nj t dhn ather MySQL do t lajmroj pr gabim. Pr t evituar kt preferohet t prdoret INT pr modifikuesin AUTO_INCREMENT. AUTO_INCREMENT fusha punon vetm me numra t plot, ndrsa pr FLOAT, DOUBLE dhe DECIMAL nuk mund t shfrytzohet. ZEROFILL Nse deklarohet nj fush INT(8) ZEROFILL dhe fusim vlern 23 ather ai paraqitet n formn 00000023.

Tipet e t dhnave string ose karakter


Grup tjetr i tipit t t dhnave jan tipet string ose karakter. String sht nj bashksi e karakterve (varg i karakterve). Tipi i t dhnave string mund t ruaj t dhnat si: Bregu i diellit, rruga 2 , 992 Prishtin. Edhe ktu si te tipet numerike varet nga madhsia se far tipi t t dhnash do t prdorim. Madhsia maksimale sht e dhn n tabeln e mposhtme. Tipi i t dhnave CHAR(X) VARCHAR(X) TINYTEXT TINYBLOB TEXT BLOB MEDIUMTEXT MEDIUMBLOB LONGTEXT LONGBLOB Max (byte) 255 255 255 255 65535 65535 1.6 MB 1.6 MB 4.2 GB 4.2 GB Madhsia (byte) X X+1 X+1 X+2 X+2 X+2 X+3 X+3 X+4 X+4

CHAR dhe VARCHAR Prej t gjith tipeve string, tipet VARCHAR dhe CHAR prdoren m s shumti. Dallimi n mes tyre sht se nse deklarojm nj fush CHAR(10) ather t gjitha t dhnat t 107

BAZAT E T DHNAVE ruajtura n kt fush do t zn madhsi prej 10 byte edhe pse kan gjatsi 3 karakter. Ndrsa nse deklarojm nj fush VARCHAR(10) dhe ruajm t dhn n at fush q kan gjatsi 3 karakter, madhsia do t jet 4 byte (gjatsia + 1). Prparsit e CHAR ndaj VARCHAR qndrojn se procesimi i t dhnave bhet m shpejt me tipin CHAR. Prdorimi i tipit CHAR sht vetm madhsia e hapsirs q z n memorie. Si rregull CHAR dhe VARCHAR nuk prdoren n nj tabel. MySQL automatikisht konverton tipet n VARCHAR. Konvertimi i CHAR n VARCHAR Kur nj tabel ka s paku nj fush t tipit VARCHAR dhe t gjitha fushat tjera t tipit CHAR me m shum se 3 karakter, ather t gjitha fushat e tipi CHAR do t konvertohen n fusha t tipit VARCHAR. CREATE TABLE Test (Fusha_Char CHAR(5), Fusha_Var VARCHAR(15)) MySQL automatikisht do t konvertoj fushn Fusha_Char n VARCHAR. Konvertimi i VARCHAR n CHAR Kur nj fush e tipit VARCHAR ka gjatsi m t vogl se 4 ather ajo konvertohet n fush t tipit CHAR. CREATE TABLE Test (Fusha_Var VARCHAR(3)) MySQL do t konvertoj fushn Fusha_Var n fush t tipit CHAR. TEXT dhe BLOB Me an t TEXT dhe BLOB mund t ruajn nj numr t madh t t dhnave. Kto tipe t t dhnave prdoren pr ruajtjen e fotografive, audiove si dhe shum tekst, si Web faqet ose dokumente. Kto tipe jan t prshtatshme edhe pr t dhnat q zn madhsi t ndryshme varsisht nga rreshti. Prparsit e TEXT dhe BLOB n krahasim me tipet tjera sht mundsia e ruajtjes t dhnave t shumta. Mund t ruajm nj datotek t tr. Mangsi e ktyre dy tipeve sht procesimi i ngadalt i t dhnave dhe madhsia e madhe q zn n memorie. N versionet e reja t MySQL mund t vejm indeks n kto dy tipe, por nuk rekomandohet sepse bn degradimin e performancs s bazs s t dhnave. Indekset n kto dy tipe vetm se i ngadalsojn gjrat.

Tipet e renditjes (Enumerations) dhe bashksit (Set)


Jan dy tipe: ENUM dhe SET. ENUM Tipi i t dhnave ENUM sht nj list e renditur. Duke pas parasysh se ky tip mund t ruaj vetm vlera q jan t deklaruara n listn e renditur. Fusha ENUM mund t ket vetm njrn nga vlerat e lists. Sintaksa e deklarimit t tipit t t dhnave ENUM sht: CREATE TABLE Test ( Return ENUM(' P' ,' J' ) DEFAULT ' J' , Madhsia ENUM(' S' ,' M' ,' L' ,' XL' ,' XXL' ), Ngjyra ENUM(' E zez' ,' e kuqe' ,' e bardh' ) ) 108

BAZAT E T DHNAVE Mund t kemi deri 65535 vlera n listn e renditur. Tipi i t dhnave ENUM sht nj zgjedhje e mir pr fush kombinimesh (Combo box) n Web faqe ose kudo q shfrytzuesi duhet t zgjedh vlerat nga lista. ENUM mund t prmbaj ose ndonj vler nga lista ose vlern NULL. Nse mundohemi t fusim ndonj t dhn q nuk sht n listn e vlerave ather do t insertohet vler e zbrazt. SET Tipi it dhnave SET sht i ngjashm me ENUM. Njsoj si ENUM tipi SET prmban list t vlerave. Ndryshimi mes tyre sht se te SET mund t zgjedhim m shum se nj vler. Tipi SET mund t prmbaj deri 64 vlera t ndryshme. Sintaksa pr krijimin e tipit SET sht: CREATE TABLE Test ( Reklama SET(' Web faqe' ,' Televizion' ,' Gazet' ) ) Kolona e krijuar Reklama mund t prmbaj kto vlera: Web faqe Televizion,Gazet Kur t bjm shtimin e t dhenave n kolonn me tipin SET duhet q vlerat t jen t futura brenda kuotave t ndara me presje. P.SH. pr t shtuar nj t dhn me dy vlera nga shembulli i mparshm veprojm: INSERT INTO Test(Reklama) VALUES (Web faqe,Televizion) Pr kt arsye nuk duhet q brenda n listn e vlerave t ket ndonj vler q prmban presje. Arsyeja q kto dy tipe t t dhnave jan t ndara nga tipet tjera sht se kto jan si bashksi e karakterve por MySQL i ruan n memorie si numra. Pr kt arsye edhe t dhnat procesohen m shpejt. Poashtu mund t bhen manipulime duke prdor operacione numerike. P.SH. SELECT * FROM Test WHERE Reklama=1; Ky urdhr do t kthej si rezultat t gjitha vlerat nga tabela Test ku Reklama sht Web faqe. Modifikuesit e kolonave (fushave) MySQL ka disa fjal t rezervuara q modifikojn kolonat. P.SH. m hert i pam modifikuesit AUTO_INCREMENT, UNSIGNED dhe ZEROFILL. Disa nga modifikuesit mund t zbatohen vetm n disa tipe t t dhnave, kjo mund t shihet n tabeln e mposhtme: Emri i modifikuesit AUTO_INCREMENT BINARY DEFAULT NOT NULL NULL Tipi mbi t cilin zbatohet N t gjith tipet INT CHAR, VARCHAR T gjith tipet prve BLOB dhe TEXT T gjitha tipet T gjitha tipet 109

BAZAT E T DHNAVE PRIMARY KEY UNIQUE UNSIGNED ZEROFILL T gjitha tipet T gjitha tipet Tipet numerike Tipet numerike

Tipet pr dat dhe koh


MySQL ka disa tipe t t dhnave pr dat dhe koh q na lehtsojn punn pr ruajtjen e informative. Ato jan: DATETIME, DATE, TIME, YEAR dhe TIMESTAMP. Tabela e mposhtme i prshkruan kto tipe t t dhnave. Tipi DATETIME DATE TIME YEAR TIMESTAMP Prshkrimi YYYY-MM-DD HH:MM:SS prej 1000-01-01 00:00:00 deri 9999-12-31 23:59:59 YYYY-MM-DD prej 1000-01-01 deri 9999-12-31 HH:MM:SS YYYY YYYYMMDDHHMMSS

Tipi TIMESTAMP mund t paraqitet edhe n mnyra t ndryshme, si mposht: Tipi TIMESTAMP (14) TIMESTAMP (12) TIMESTAMP (10) TIMESTAMP (8) TIMESTAMP (6) TIMESTAMP (4) TIMESTAMP (2) Prshkrimi YYYYMMDDHHMMSS YYMMDDHHMMSS YYMMDDHHMM YYYYMMDD YYMMDD YYMM YY

Data n MySQL paraqitet s pari viti pastaj muaji dhe n fund dita.

110

BAZAT E T DHNAVE

SQL (Structured Query Language)


SQL sht nj gjuh q prdoret pr leximin dhe shtimin e t dhnave n pothuaj se n t gjitha bazat e t dhnave. Me SQL mund t bjm krkimin e t dhnave, shtimin e t dhnave t reja, ndryshimin (modifikimin) e t dhnave ose fshirjen e tyre. SQL sht thjesht nj vegl thelbsore pr bashkveprim me MySQL. Edhe nse prdorim ndonj program ose interfejs pr baza t t dhnave, diku n prapavij t atij programi sht i gjeneruar kodi SQL. Urdhrat n SQL lexohen si nj fjali n gjuhn angleze. Kjo qasje ka disa prparsi edhe mangsi sepse n fund SQL dallon nga gjuht programuese tradicionale si C, Java ose Perl. Gjuhn e strukturuar SQL e paraqiti s pari kompania IBM n vitin 1970 menjher pas zbulimit t teoris t bazave relacionale. SQL ishte i popullarizuar sa q n vitin 1980 korporata Oracle lansoi sistemin e par publik SQL. N at koh SQL nuk ishte i standardizuar, dhe kjo nuk u b deri n vitin 1989 ku ai standard u quajt SQL89. Mirpo n kt standard nuk sht definuar sa duhet struktura e gjuhs SQL. Edhe pse n treg u paraqiten disa versione komerciale t gjuhs SQL, diferenca n sintaks e bri t pamundshme kyqjen e tyre n ndonj implementim. Kjo zgjati deri n vitin 1992 kur ANSI vuri standardin SQL92 ose SQL2. Shumica e sistemeve t menaxhimit t bazave t t dhnave kan pranuar SQL92 si standard, megjithat bazat relacionale q implementojn standardin SQL92 jan komplekse. Standardi SQL92 nuk sht fjala e fundit e SQL standardeve. Me rritjen e popullaritetit t sistemit t menaxhimit t bazave t orientuara kah objektet ( Object Oriented Database Managament System OODBMS ) dhe sistemit t menaxhimit t bazave t lidhura me objekte ( Object Relational Database Managament System ORDBMS ) sht vn re nj tendenc pr mbshtetjen e SQL standardit pr kto baza t t dhnave. Pra SQL3 do t ishte nj prgjigje pr kt.

Dizajni i SQL
Si u cek m hert SQL m shum i ngjan nj gjuhe q flasim ne se sa nj gjuhe t kompjuterit. T shohim shembujt e mposhtm: CREATE folje INSERT folje SELECT folje TABLE objekt INTO Klientt nj objekt emri objekt Klientt ( emri varchar(10)) mbiemr VALUES (Arben) nj objekt FROM Klientt objekt HERE emri LIKE %n mbiemr

Shumica e implementimeve t SQL duke prfshir edhe MySQL jan jo t ndieshme n shkronja ( case-insensitive ). Pra nuk ka rndsi se si i shkruani fjalt e rezervuara me shkronja t mdha apo t vogla, e rndsishme sht q t shkruhen shkronjat e duhura. P.SH. nga shembulli m lart, rreshti i par mund t shkruhet edhe ksisoj: cREatE TabLe Klientt (emri varchar(10)) 111

BAZAT E T DHNAVE Jo ndieshmria e shkronjave vlen vetm pr fjalt e rezervuara t SQL. N MySQL emri i bazs s t dhnave, tabels dhe fushave sht i ndieshm n shkronja. Pr shkak t leximit m t mir t komandave t SQL fjalt e rezervuara do ti shkruajm me shkronja t mdha. Element i par n nj SQL pyetsor sht gjithnj nj folje. Folja shpreh aksionin q dshirojm q baza e t dhnave ta kryej. Pastaj pjesa tjetr e komands vepron varsisht nga folja q kemi prdor. P.SH. nga shembulli m lart, folja CREATE (krijo) shoqrohet me objektin TABLE dhe pjesa tjetr sht prshkrimi i tabels q do t krijojm. Kyja n server Ka disa mnyra pr kyjen n server, m e shpeshta sht ajo prmes ndonj gjuhe programuese. Por ktu ne do t prdorim vegln mysql. Pra Start Programs MySQL MySQL Server 5.1 MySQL Command Line Client Shkruajm fjalkalimin dhe kyqemi n server. Enter password: * Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.1.12-beta-community-nt MySQL Community Server (GPL) Type help; or \h for help. Type \c to clear the buffer. mysql> Komanda m lart tregon lidhjen n server n makin lokale si shfrytzues. Nj opcion tjetr sht opcioni h i cili na mundson lidhjen n MySQL server nga distanca (mysql u root h db.Banka p). Nuk ka ndonj lidhje n mes t shfrytzuesve t Windows-it dhe shfrytzuesve t MySQL. Shfrytzuesit pr MySQL duhet krijuar n mnyr t pavarur nga shfrytzuesit e Windows it. T gjitha komandat n MySQL duhet t prfundojn me shenjn ; ose \g. Sintaksa e komandave Shprehja n kllapat e mesme sht opsionale,shprehja brenda < > sht emri i objektit. Krijimi i bazs s t dhnave Hapi i par n krijimin e nj baze MySQL sht krijimi i objektit t bazs s t dhnave, i cili shrben si vend ku do t vendosen tabelat e asaj baze. Krijimi i nj baze t t dhnave n MySQL sht nj ndr punt m t lehta, krkohet fjala e rezervuar CREATE DATABASE duke shkruar pastaj emrin e bazs s t dhnave, ja edhe sintaksa: CREATE DATABASE [ IF NOT EXISTS ] <emri i bazs s t dhnave> [ [ DEFAULT ] CHARACTER SET <emri i bashksis s karakterve> ] [ [ DEFAULT ] COLLATE <mnyra e krahasimit apo rendtjes> ] N komandn pr krijimin e bazs s t dhnave prfshihen edhe disa opsione. I pari sht opsioni IF NOT EXISTS, i cili nse prdoret dhe ekziston emri i bazs s t 112

BAZAT E T DHNAVE dhnave na shfaqet nj paralajmrim, por nse nuk prdoret ather do t lajmroj nj gabim. Nse ekziston nj baz e t dhnave me emr t njjt ather ajo nuk do t krijohet. Opsioni tjetr sht CHARACTER SET, ku kjo sht bashksi e shkronjave, numrave dhe simboleve n baz t t dhnave. P.SH. A,B,C,a,b,c,1,2,3,>,+ etj. Opsioni tjetr COLLATE prcakton renditjen, krahasimin, grupimin e bashksis s karakterve ( CHARACTER SET ). Ndrsa opsioni DEFAULT vler e parazgjedhur gjat instalimit t MySQL serverit. Marrim disa shembuj: Krijojm bazn e t dhnave me emrin BANKA: Ose Ose CREATE DATABASE BANKA; CREATE DATABASE IF NOT EXISTS BANKA; CREATE DATABASE IF NOT EXISTS BANKA; DEFAULT CHARACTER SET latin1 DEFAULT COLLATE latin1_bin; Krijimi i tabels Hap tjetr i rndsishm pr krijimin e nj baze t t dhnave sht krijimi i tabelave. Tabelat jan objekte t bazs pr ruajtjen e t dhnave dhe sigurin e tyre. Pr krijimin e tabels n MySQL prdoret komanda CREATE TABLE. Kjo komand sht njra ndr SQL komandat m komplekse n MySQL. Sintaksa: <definicioni>::= CREATE [ TEMPORARY ] TABLE [ IF NOT EXISTS ] < emri i tabels > (< element i tabels > [{, < element i tabels > } ] ) [< tipi i tabels > [< tipi i tabels > ] ] < element i tabels >::= < definimi i fushs > | { [ CONSTRAINT < emri i rregulls (constraint) > PRIMARY KEY ( < emri i fushs > [{, < emri i fushs > } ] ) } | { [ CONSTRAINT < emri i rregulls > ] FOREIGN KEY [ < emri i indeksit> ] ( < emri i fushs > [ { , < emri i fushs > } ] ) < definimi i referencs > } | { [ CONSTRAINT < emri i rregulls > ] UNIQUE [ INDEX ] [ < emri i indeksit> ] ( < emri i fushs > [{, < emri i fushs > } ] ) } | { { INDEX | KEY } [ <emri i indeksit> ( <emri i fushs> [ { ,<emri i fushs> } ] ) } |{FULLTEXT[ INDEX] [<emri i indeksit>] ( <emri i fushs> [{,<emri i fushs>}] ) }

113

BAZAT E T DHNAVE

< definimi i fushs>::= <emri i fushs> <tipi i t dhnave>[NOT NULL|NULL] [DEFAULT <ndonj vler>] [PRIMARY KEY] [COMMENT <ndonj koment>] [<definimi i referencs>] < tipi i t dhnave>::= < tip i t dhnave numerike> | < tip i t dhnave sting ose karakter> | <tip i t dhnave pr dat> < definimi i referencs >::= REFERENCES < emri i tabels > [ (<emri i fushs> [{,<emri i fushs>} ] ) ] [ON DELETE {RESTRICT |CASCADE |SET NULL |NO ACTION |SET DEFAULT } ] [ON UPDATE {RESTRICT |CASCADE |SET NULL |NO ACTION |SET DEFAULT } ] [ MATCH FULL | MATCH PARTIAL ] < tipi i tabels >::= { ENGINE = {BDB | MEMORY | ISAM | INNODB | MERGE | MYISAM }} | < tipet shtes t tabelave> Tash le t komentojm sintaksn pr krijimin e tabels. N rreshtin e par krkohet fjala e rezervuar CREATE TABLE e shoqruar me emrin e tabels q dshirojm t krijojm. Ky rresht prmban dy opsione, opsioni i par TEMPORARY tregon se kjo sht nj tabel e prkohshme q sht aktive vetm gjat kyqjes s shfrytzuesit. Tabela e prkohshme ekziston deri sa shfrytzuesi nuk kyqet nga serveri. Opsioni i dyt IF NOT EXISTS sht njsoj sikur te krijimi i bazs s t dhnave. Rreshti i dyt na lejon prcaktimin e elementeve t tabels me an t < element i tabels >. Element i tabels sht do objekt q sht i definuar n tabel si: fusha ose elsi primar. N seciln tabel mund t prfshihen m shum se nj element t ndar mes veti me presje. Ndrsa rreshti i fundit na ofron prcaktimin e tipit t tabels. T gjith tipet e tabels jan opsionale. Si mund t shihet sintaksa e krijimit t tabels mund t thjeshtsohet ose t komplikohet. Elementet e domosdoshme n sintaks pr krijimin e tabels jan: CREATE TABLE < emri i tabels > ( <element i tabels > ) Pasi elementi i tabels sht komponent e domosdoshme shikojm sintaksn pr < element i tabels >. Me elementin e tabels kemi disa opsione por m s shpeshti prdoret < definimi i fushs >. Ku me an t tij bjm definimin e fushs n tabel. Definimi i fushs duhet t bhet pr do fush q do t jet pjes e tabels. Nga sintaksa vrejm se vetm dy elemente krkohen <emri i fushs> dhe <tipi it dhnave>. T gjith elementet shtes pr definimin e fushs jan opsionale. Definimi i tipit t t dhnave bhet me an t tipeve numerike, string dhe dat. Tipet e t dhnave jan t sqaruara m hert. Deri tani shqyrtuam vetm elementet e nevojshme ( domosdoshme ) pr krijimin e tabels dhe definimin e fushs. Si rezultat definimi i fushs prfshinte emrin e fushs dhe tipin e t dhnave pr at fush. Komponent tjetr nga definimi i fushs sht edhe vlera boshe e fushs e cila caktohet me an t fjalve t rezervuara NULL dhe NOT NULL. Me an t ktyre fjalve t rezervuara mund t definojm fushn t pranoj ose jo vlera 114

BAZAT E T DHNAVE boshe. Nse nuk sht definuar as njra as tjetra prej opsioneve ather nnkuptohet se ajo fush mund t pranoj vler boshe. CREATE TABLE Test ( ID SMALLINT UNSIGNED NOT NULL, Emri VARCHAR(20) NOT NULL ); Definimi i vlers s parazgjedhur ( nnkuptuar ) bhet me an t fjals s rezervuar DEFAULT. Kjo sht e dobishme pr faktin kur n nj fush prsritet nj vler. CREATE TABLE Autori ( ID SMALLINT UNSIGNED NOT NULL, Viti_i_lindjes YEAR NOT NULL, Vendlindja VARCHAR(40) NOT NULL DEFAULT E panjohur Sasia SMALLINT NOT NULL DEFAULT 1 ); Pr tipet e t dhnave string vlera e DEFAULT shkruhet n thonjza ndrsa te tipet numerike shkruhet vetm numri. Nse nuk caktojm vlern e parazgjedhur ather MySQL automatikisht i ndan nj vler asaj fushe varsisht nga tipi i t dhnave. Nse fusha mund t marr si vlern boshe ather vlera e parazgjedhur sht NULL. Nse fusha nuk merr vlern boshe ather vlera e parazgjedhur varet nga definimi i fushs: Pr fushat me tip t t dhnave TIMESTAMP vlera e parazgjedhur sht data dhe ora aktuale. Pr fushat me tip t t dhnave DATE/TIME vlera e parazgjedhur sht zero. Pr fushat me modifikuesin AUTO_INCREMENT vlera e parazgjedhur sht numri vijues n vargun rrits. Pr fushat me tip t t dhnave numerike q nuk e kan t definuar AUTO_INCREMENT vlera e parazgjedhur sht 0. Pr fushat me tipin ENUM vlera e parazgjedhur sht vlera e par n definimin e fushs. Pr fushat me tip t t dhnave string vlera e parazgjedhur sht nj string i zbrazt (string nj varg i karakterve). Si shihet n MySQL t gjitha fushave u sht ndar vlera e parazgjedhur. Definimi i elsit primar Mnyra m e thjesht pr definimin e elsit primar sht caktimi i opsionit PRIMARY KEY n definimin e fushs, si shembullin e mposhtm: CREATE TABLE Porosit ( ID SMALLINT UNSIGNED NOT NULL PRIMARY KEY, Modeli SMALLINT UNSIGNED NOT NULL, Prshkrimi VARCHAR(40) ); 115

BAZAT E T DHNAVE SHEMBUJ: Krijojm tabelat KLIENTT dhe KREDIT n bazne t dhnave BANKA: S pari prdorim komandn USE < emri i bazs s t dhnave >, pra USE BANKA; KLIENTT: Tipi i t dhnave Numri i llogaris Emri Mbiemri Qyteti Adresa Tel KREDIT: ID Numri I llogaris Tipi i kredis Shuma Prqindja Kohzgjatja e kredis Aprovimi Fillimi INT AUTO_INCREMENT PRIMARY KEY Varchar(10) Varchar(20) INT INT INT ENUM(Po,Jo) DATE Varchar(10) PRIMARY KEY Varchar(20) Varchar(20) Varchar(20) Varchar(20) Varchar(20) DEFAULT I panjohur

CREATE TABLE KLIENTT ( Numri_i_llogaris Varchar(10) NOT NULL PRIMARY KEY, Emri Varchar(20) NOT NULL, Mbiemri Varchar(20) NOT NULL, Qyteti Varchar(20) NOT NULL, Adresa Varchar(20) NOT NULL, Tel Varchar(20) NOT NULL DEFAULT I panjohur ); CREATE TABLE KREDIT ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Numri_i_llogaris Varchar(10) NOT NULL, Tipi_i_kredis Varchar(20) NOT NULL, Shuma INT NOT NULL, Prqindja INT NOT NULL, Kohzgjatja_e_kredis INT NOT NULL, Aprovimi ENUM(Po,Jo) DEFAULT Jo, Fillimi DATE, FOREIGN KEY (Numri_i_llogaris) REFERENCES KLIENTT (Numri_i_llogaris) ON DELETE CASCADE ON UPDATE CASCADE ); 116

BAZAT E T DHNAVE N dy rreshtat e fundit (me shkronja t nxira (Bold)) kemi br lidhjen e tabelave KLIENTT dhe KREDIT. Ku tabela KLIENTT sht tabela prind ndrsa tabela KREDIT tabela fmij. Lidhja n mes ktyre tabelave sht nj me shum ( 1 - ) pra sht vn integriteti referncial ( sikur n ACCESS). Ndrsa ON DELETE CASCADE dhe ON UPDATE CASCADE ruajn q t dhnat n tabeln KREDIT t mos mbesin jetim. Pra nse fshihet (ndryshohet) ndonj e dhn n tabeln KLIENTT ather t gjitha t dhnat n tabeln KREDIT q jan t lidhura me t dhnn prkatse do t fshihen (ndryshohen). Prdorim komandn DESCRIBE < emri i tabels > pr t shikuar t dhnat e prgjithshme mbi tabelat e krijuara. mysql> DESCRIBE KLIENTT; mysql> DESCRIBE KREDIT; Manipulimi i t dhnave Tani pas krijimit t tabelave gjja e par q duhet br sht futja e t dhnave n ato tabela. Pr kt arsye do t msojm komandat pr futjen e t dhnave INSERT dhe REPLACE. MySQL prkrah edhe metoda tjera pr futjen e t dhnave si kopjimi ose importimi i t dhnave. Urdhri q m s shpeshti prdoret pr futjen (insertimin) e t dhnave sht INSERT. Ja edhe sintaksa e urdhrit INSERT: INSERT [LOW_PRIORITY | DELAYED ] [IGNORE] [INTO] { < opsioni VALUES > | < opsioni SET > | < opsioni SELECT > } < opsioni VALUES >::= < emri i tabels > [ ( emri i fushs > [ { , < emri i fushs > } ] ) ] VALUES ({ < shprehja > | DEFAULT } [ { , { < shprehja > | DEFAULT } } ] ) [ { , ({ < shprehja > | DEFAULT } [ { , { < shprehja > | DEFAULT } } ] ) } ] < opsioni SET > ::= < emri i tabels > SET < emri i fushs > = { < shprehja > | DEFAULT } [ { , < emri i fushs > = { < shprehja > | DEFAULT } } ] < opsioni SELECT > ::= < emri i tabels > [ ( < emri i fushs > [ { , < emri i fushs > } ] ) ] < urdhri SELECT > Komentojm sintaksn pr urdhrin INSERT. N rreshtin e par sht fjala e rezervuar INSERT pastaj opsionet. Opsioni i par nga kto opsione sht LOW_PRIORITY dhe DELAYED, mund t zgjedhet njri, asnjrin nga kto dy opsione por zgjedhja e t dyve nuk mund t bhet. Nse zgjedhim opsionin LOW_PRIORITY ather urdhri nuk do t ekzekutohet derisa asnj klient t mos jet duke shfrytzuar tabeln n t ciln do t ekzekutohet urdhri. Deri sa nuk bhet ekzekutimi i urdhrit nuk mund t kryhen veprime tjera. Nse zgjedhim opsionin DELAYED ekzekutimi i urdhrit do t shtyhet por n dallim nga opsioni i par 117

BAZAT E T DHNAVE ndrkoh mund t kryhen veprime tjera. Kto opsione prdoren vetm te tabelat e tipit MyISAM dhe ISAM. Opsioni tjetr sht IGNORE, me zgjedhjen e ktij opsioni do t injorohen t gjith rreshtat q prmbajn vlera q bjn dyfishimin e elsit primar ose dyfishimin e vlers s indeksit unik. Opsioni i fundit sht fjala kye INTO, prdoret pr t treguar se n ciln tabel do t bhet insertimi i t dhnave. N rreshtin e dyt jan tri opsione prej t cilave duhet t zgjedhim. Opsioni VALUES na mundson futjen e m shum se nj rreshti n tabel. Nga sintaksa vrejm se duhet t ipet emri i tabels pastaj opsioni VALUES. Poashtu mund t caktojm fushat e tabels t cilt duhet t jen t ndar mes veti me presje dhe t futura n kllapa t vogla. Pas opsionit VALUES duhet t ipen vlerat q do t futen n tabel pr seciln fush t deklaruar. Nse nuk caktojm emrat e fushave ather vlerat q do t ipen pr seciln fush duhet t jen t renditura si n tabel.Nse keni harruar renditjen e fushave n tabel, prdorni urdhrin DESCRIBE. T gjitha vlerat duhet t jen brenda kllapave t vogla dhe t ndara mes veti me presje. Pr fushat t definuara si AUTO_INCREMENT ose TIMESTAMP sht e preferuar vlera DEFAULT. Shembuj: Fusim t dhnat n tabeln KLIENTT: INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri, Qyteti, Adresa, Tel ) VALUES (140201,Bujar,Shulemaja,Prishtin,Bregu i diellit,044/123-456); INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri, Qyteti, Adresa, Tel ) VALUES (140202,Amir,Simnica,Fush Kosov,rr.Agim Ramadani,044/321654); INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri, Qyteti, Adresa, Tel ) VALUES (140203,Valbona,Krasniqi,Dardan,rr.Adem Jashari,044/213-546); INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri, Qyteti, Adresa, Tel ) VALUES (140204,Gani,Thaqi,Besian,rr.Zahir Pajaziti,044/312-645); INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri, Qyteti, Adresa, Tel ) VALUES (140205,Lavdim,Kastrati,Prishtin,Tophane,044/132-465); Kjo mund t shkruhet edhe si: INSERT INTO KLIENTT ( Numri_i_llogaris, Emri, Mbiemri,Qyteti, Adresa,Tel) VALUES (140201,Bujar,Shulemaja,Prishtin,Bregu i diellit,044/123-456), (140202,Amir,Simnica,Fush Kosov,rr.Agim Ramadani,044/321-654), (140203,Valbona,Krasniqi,Dardan,rr.Adem Jashari,044/213-546), (140204,Gani,Thaqi,Besian,rr.Zahir Pajaziti,044/312-645), (140205,Lavdim,Kastrati,Prishtin,Tophane,044/132-465); 118

BAZAT E T DHNAVE

Nse e dim renditjen e fushave ather nuk kemi nevoj t shkruajm pjesn me shkronja t nxira (bold). Opsioni SET sht i prshtatshm nse dshirojm t fusim t dhna vetm n disa fusha. Nga sintaksa shihet se s pari duhet t shkruhet emri i tabels pastaj SET dhe fushat q dshirojm t ju ndajm vler. Shembuj: Fusim t dhna n tabeln KREDIT: INSERT INTO KREDIT SET Numri_i_llogaris=140203,Tipi_i_kredis=Vetur, Shuma=4500,Prqindja=6,Kohzgjatja_e_kredis=12,Aprovimi=1,Fillimi=20060412; INSERT INTO KREDIT SET Numri_i_llogaris=140205,Tipi_i_kredis=Mobile, Shuma=1300,Prqindja=7.5,Kohzgjatja_e_kredis=6,Aprovimi=1,Fillimi=20060823; INSERT INTO KREDIT SET Numri_i_llogaris=140201,Tipi_i_kredis=Vetur, Shuma=7000,Prqindja=5.5,Kohzgjatja_e_kredis=36,Aprovimi=1, Fillimi=20050215; INSERT INTO KREDIT SET Numri_i_llogaris=140203,Tipi_i_kredis=Shtpi, Shuma=45000,Prqindja=4.7,Kohzgjatja_e_kredis=120,Aprovimi=2, Fillimi=20050520; INSERT INTO KREDIT SET Numri_i_llogaris=140202,Tipi_i_kredis=Kompjuter, Shuma=630,Prqindja=7,Kohzgjatja_e_kredis=12,Aprovimi=1,Fillimi=20060712; INSERT INTO KREDIT SET Numri_i_llogaris=140204,Tipi_i_kredis=Kuzhin, Shuma=1000,Prqindja=4,Kohzgjatja_e_kredis=12,Aprovimi=1,Fillimi=20050904; INSERT INTO KREDIT SET Numri_i_llogaris=140205,Tipi_i_kredis=Lavatrie, Shuma=420,Prqindja=3,Kohzgjatja_e_kredis=6,Aprovimi=1,Fillimi=20060605; INSERT INTO KREDIT SET Numri_i_llogaris=140201,Tipi_i_kredis=Mobile, Shuma=1730,Prqindja=5.8,Kohzgjatja_e_kredis=12,Aprovimi=1, Fillimi=20061002; INSERT INTO KREDIT SET Numri_i_llogaris=140205,Tipi_i_kredis=Vetur, Shuma=5250,Prqindja=7.3,Kohzgjatja_e_kredis=18,Aprovimi=1, Fillimi=20050412; INSERT INTO KREDIT SET Numri_i_llogaris=140202,Tipi_i_kredis=Tavolin, Shuma=420,Prqindja=8.3,Kohzgjatja_e_kredis=12,Aprovimi=2,Fillimi=20050812; 119

BAZAT E T DHNAVE Opsioni SELECT m s shpeshti prdoret pr kopjimin e t dhnave t nj tabele n nj tjetr, si shembull: Krijojm tabeln TEST n bazn e t dhnave BANKA.

CREATE TABLE TEST ( Numri VARCHAR(10) NOT NULL PRIMARY KEY, Emri VARCHAR(20) NOT NULL, Mbiemri VARCHAR(20) NOT NULL, Qyteti VARCHAR(20) NOT NULL, Adresa VARCHAR(20) NOT NULL, Tel VARCHAR(20) NOT NULL ); Pastaj shkruajm INSERT INTO TEST (Numri, Emri, Mbiemri, Qyteti, Adresa, Tel) SELECT Numri_i_llogaris,Emri,Mbiemri,Qyteti,Adresa,Tel FROM KLIENTT; Ekzekutohet, dhe t gjitha t dhnat e tabels KLIENTT do t gjinden edhe n tabeln TEST.

Njsoj si urdhri INSERT prdoret urdhri REPLACE, sintaksa e t cilit ndryshon me at t urdhrit INSERT vetm se nuk e prkrah opsionin IGNORE. Ndrsa t gjitha opsionet tjera VALUES, SET dhe SELECT i prkrah.

120

BAZAT E T DHNAVE

Modifikimi i tabels
Nuk sht e pazakont, q pas krijimit t tabels t kemi nevoj pr ndonj ndryshim n definimin e saj. Pr fat t mir MySQL na mundson ndryshimin e elementeve t tabels pas krijimit t saj. P.SH. mund t shtojm fusha, t ndryshojm definimin e fushave n tabel, shtojm elsin primar dhe elsin e jashtm ose fshirjen e fushave. Pr modifikimin e nj tabele prdorim urdhrin ALTER TABLE. Ja edhe sintaksa e urdhrit ALTER TABLE: ALTER TABLE <emri i tabels> <opsioni alter> [{, <opsioni alter>}...] <opsioni alter>::= {ADD [COLUMN] <definimi i fushs> [FIRST | AFTER <emri i fushs>]} | {ADD [COLUMN] (<element i tabels> [{, <element i tabels>}...])} | {ADD [CONSTRAINT <emri i rregulls>] PRIMARY KEY (<emri i fushs> [{, <emri i fushs>}...])} | {ADD [CONSTRAINT <emri i fushs>] FOREIGN KEY [<emri i indeksit>] (<emri i fushs> [{, < emri i fushs>}...]) <definimi i referencs>} | {ADD [CONSTRAINT <emri i rregulls>] UNIQUE [<emri i indeksit>] (<emri i fushs> [{, <emri i fushs>}...])} | {ADD INDEX [<emri i indeksit>] (<emri i fushs> [{, <emri i fushs>}...])} | {ADD FULLTEXT [<emri i indeksit>] (<emri i fushs> [{, <emri i fushs>}...])} | {ALTER [COLUMN] <emri i fushs> {SET DEFAULT <vler> | DROP DEFAULT}} | {CHANGE [COLUMN] <emri i fushs> <definimi i fushs> [FIRST | AFTER < emri i fushs>]} | {MODIFY [COLUMN] <definimi i fushs> [FIRST | AFTER <emri i fushs>]} | {DROP [COLUMN] <emri i fushs>} | {DROP PRIMARY KEY} | {DROP INDEX <emri i indeksit>} | {DROP FOREIGN KEY <emri i rregulls>} | {RENAME [TO] <emri i tabels s re>} | {ORDER BY <emri i fushs> [{, <emri i fushs>}...]} | {<tip i tabels> [<tip i tabels>...]} Elementet e domosdoshme n sintaks pr modifikimin e tabels jan: ALTER TABLE, emri i tabels q do t modifikojm dhe nj ose m shum opsione pr ndryshim (opsionet alter). Nse zgjedhim m shum se nj opsion pr ndryshim ather ato duhet t ndahen me presje. Supozojm se krijojm nj tabel: CREATE TABLE Librat ( ID SMALLINT NOT NULL, Titulli_i_librit VARCHAR(40) NOT NULL, IDBotuesi SMALLINT NOT NULL DEFAULT I panjohur 121

BAZAT E T DHNAVE ) ENGINE=INNODB; Si mund t shihet krijuam nj tabel me emrin Librat q prmban tri fusha. Tani supozojm q dshirojm t bjm ndryshime n definimin e ktyre fushave. Dshirojm q n tabel t ket els primar, els t jashtm dhe fusha shtes. Urdhri vijues ALTER TABLE e bn at: ALTER TABLE Librat ADD PRIMARY KEY (ID), ADD CONSTRAINT emri_i_rregulls FOREIGN KEY (IDBotuesi) REFERENCES Botuesi (IDBotuesi), ADD COLUMN Zhanri ENUM(Dram,Roman,Poezi) NOT NULL AFTER Titulli_i_librit; Urdhri fillon me ALTER TABLE e cila identifikon emrin e tabels q do t modifikojm, q n rastin ton sht tabela Librat. Rreshti tjetr shton elsin primar n tabel duke u bazuar n fushn ID. Rreshti i tret shton nj els t jashtm (foreign key) n tabel dhe n fund shtuam nj fush me emrin Zhanri me tipin e t dhnave ENUM dhe t paraqitet n renditje pas fushs Titulli_i_librit. Nse gjat krijimit t tabels gabojm n definimin e fushs ather prmisimet mund t bhen kshtu, shembull: nga tabela Librat dshirojm q emri i fushs Titulli_i_librit t jet Titulli dhe tipi i t dhnave VARCHAR(10) dhe t paraqitet pas fushs IDBotuesi ALTER TABLE Librat CHANGE Titulli_i_librit Titulli VARCHAR(10) NOT NULL AFTER IDBotuesi; T njjtn gj mund ta bjm edhe me MODIFY por aty nuk mund t bjm ndryshimin e emrit t fushs. Me an t ALTER TABLE mund t bjm riemrimin e tabels: ALTER TABLE Librat RENAME TO Romanet; Urdhri ALTER TABLE shfrytzohet edhe pr largimin e fushave nga tabela, ALTER TABLE Librat DROP COLUMN Zhanri, DROP PRIMARY KEY;

Fshirja e tabels
Fshirja e tabels bhet me an t urdhrit DROP TABLE dhe sintaksa e tij sht: DROP [TEMPORARY] TABLE [IF EXISTS] <emri i tabels> [{,<emri i tabels>} ]

122

BAZAT E T DHNAVE Urdhri DROP TABLE prfshin opsionin TEMPORARY i cili prdoret pr fshirjen e tabelave t prkohshme duke mos br fshirjen aksidentale t ndonj tabele t prhershme. Tjetr opsion sht IF EXISTS, ashtu si te tabelat edhe ktu sht m mir t prdoret kjo fjal e rezervuar. M mir t marrim nj vrejtje se ndonj gabim kur dshirojm t fshijm ndonj tabel q nuk ekziston. Poashtu kt urdhr mund t prdorim pr fshirjen e m shum se nj tabele n t njjtn koh, duke br ndarjen e tyre me presje. Shembuj: DROP TABLE IF EXISTS Librat; DROP TEMPORARY TABLE Test, Test1, Test2; DROP TEMPORARY TABLE IF EXISTS Test, Test1, Test2; Urdhri SHOW Me an t ktij urdhri mund t shohim t dhna specifike pr do baz t t dhnave dhe tabelave. Urdhri SHOW CREATE DATABASE <emri i bazs s t dhnave> Pra ky urdhr krkon vetm emrin e bazs s t dhnave, p.sh: SHOW CREATE DATABASE Banka; Urdhri SHOW DATABASES; prdoret pr shikimin e t gjitha bazave t t dhnave. Sintaksa sht SHOW DATABASES; Urdhri SHOW COLUMNS liston fushat n tabel me t gjitha t dhnat pr ato fusha. Sintaksa sht SHOW [FULL] COLUMNS FROM <emri i tabels> FROM <emri i bazs s t dhnave] [LIKE <shprehje>] Nj shembull: SHOW COLUMNS FROM user FROM mysql LIKE %priv; Poashtu urdhri SHOW mund t prdoret edhe pr t dhnat mbi tabelat, ja edhe sintaksa: SHOW TABLES [FROM <emri i bazs s t dhnave>] [LIKE <shprehje>] Shembull: SHOW TABLES FROM mysql LIKE help%;

123

BAZAT E T DHNAVE Urdhri SHOW TABLES tregon t gjitha tabelat n baz t t dhnave.

Prdorimi i urdhrit DESCRIBE


Nj urdhr tjetr i prshtatshm pr shikimin e informacioneve mbi tabela sht DESCRIBE. Sintaksa: DESCRIBE <emri i tabels> [ <emri i fushs> | <shprehje>]; Shembull: DESCRIBE user %priv;

Editimi (ndryshimi) i t dhnave n MySQL


Pasi kemi msuar insertimin e t dhnave n nj baz t t dhnave tani jemi gati pr t msuar editimin e tyre. Editimi bhet me an t urdhrit UPDATE, ja edhe sintaksa: UPDATE [LOW_PRIORITY] [IGNORE] <editimi i nj tabele> | <editimi i tabels s lidhur> <editimi i nj tabele>::= <emri i tabels> SET <emri i fushs>=<shprehje> [{, <emri i fushs>=<shprehje>}...] [WHERE <kushti>] [ORDER BY <emri i fushs> [ASC | DESC] [{, <emri i fushs > [ASC | DESC]}...]] [LIMIT <numri i rreshtave>] <editimi i tabels s lidhur>::= <emri i tabels> [{, <emri i tabels>}...] SET <emri i fushs>=<shprehje> [{, <emri i fushs>=<shprehje>}...] [WHERE <kushti>] Rreshti i par i sintakss prmban fjaln e detyrueshme UPDATE bashk me opsionet LOW_PRIORITY dhe IGNORE t cilat i pam edhe te urdhri INSERT. Opsionin LOW_PRIORITY e zgjedhim kur dshirojm t shtyjm ekzekutimin e urdhrit UPDATE derisa asnj klient t mos jet i kyur n tabeln q do t bjm editimin. Opsionin IGNORE e prdorim nse dojm t bjm editimin edhe pse ka els primar apo indeks unik t dyfisht (rreshti me vler t dyfisht nuk do t editohet). N rreshtin e dyt jan dy alternativa <editimi i nj tabele>, <editimi i tabels s lidhur>. Editimi i tabels s lidhur i referohet tabels q sht e lidhur me nj tabel tjetr me an t urdhrave SQL. Kjo lidhje sht e bazuar n FOREIGN KEY, pra me lidhjen n mes t dy tabelave. Ndrsa alternativa e par editimi i nj tabele, nuk ka kushte specifike pr lidhjen n mes t tabelave, duhet t krijojm urdhrin UPDATE si m lart. Si shihet nga sintaksa s pari duhet t specifikojm emrin e tabels pastaj fjaln e rezervuar SET. Fjala SET prmban s paku nj emr t nj fushe t shoqruar me ndonj vler. Nse dshirojm q t bjm editimin e m shum se nj fushe ather kt e bjm duke i ndar iftin emrin 124

BAZAT E T DHNAVE e fushs/shprehjen me presje.Ve ksaj n alternativn e par mund t bjm edhe zgjedhjen e disa opsioneve. I pari nga ata sht WHERE i cili prcakton cilt rreshta do t editohen. Pasi q WHERE sht si pjes integrale e urdhrit SELECT ky do t msohet n detale m von. Opsioni i dyt ORDER BY mundson editimin e rreshtave sipas nj renditje t caktuar duke u bazuar n vlerat n fush ose fusha. Opsioni ORDER BY mund t vhet pr m shum se nj fush. Ve ksaj pr seciln fush t prfshir n fjaln e rezervuar ORDER BY mund t zgjedhen opsionet ASC dhe DESC. ASC do t thot editimi i rreshtave sipas renditjes rritse, ndrsa DESC editimi i rreshtave sipas renditjes zbritse. Opsion tjetr sht fjala e rezervuar LIMIT. Me an t ktij opsioni mund t kufizojm numrin e rreshtave q do t editohen. P.SH. Nse me urdhrin UPDATE do t editoheshin 10 rreshta, ather me urdhrin UPDATE por me LIMIT 5 do t editohen vetm 5 rreshtat e par. Shembuj: UPDATE Kredit SET Shuma=Shuma+10; UPDATE Kredit SET Shuma=Shuma+15 WHERE Numri_i_llogaris=140204; UPDATE Kredit SET Shuma=Shuma+15 WHERE Prqindja=5 ORDER BY Fillimi DESC LIMIT 3; N urdhrin e fundit editohet tabela Kredit, fusha Shuma rritet pr 15 ku fusha Prqindja ka vlern 5, n renditjen DESC sipas fushs Fillimi e cila pasi q sht e definuar si TIMESTAMP ateher rreshtat e edituar do t jen ato t dats m t vonshme, dhe n fund editimi sht i kufizuar n 3 rreshtat e par.

Fshirja e t dhnave nga tabela


sht e pashmangshme q pas insertimit t t dhnave disa duhet t fshihen. Kur t fshijm t dhna nga nj tabel ather fshihet nj ose m shum rreshta. Nuk mund t fshijm vetm nj pjes t nj rreshti. MySQL prkrah dy urdhra q prdoren pr fshirjen e t dhnave: DELETE dhe TRUNCATE. Urdhri DELETE Urdhri DELETE duhet t jet urdhri primar pr fshirjen e t dhnave nga tabela. Sintaksa: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 125

BAZAT E T DHNAVE {<fshirja n nj tabel> | <fshirja from> | <fshirja using>} < fshirja n nj tabel>::= FROM <emri i tabels> [WHERE <kushti>] [ORDER BY <emri i fushs> [ASC | DESC] [{, <emri i fushs> [ASC | DESC]}...]] [LIMIT <numri i rreshtave>] <fshirja from>::= <emri i tabels>[.*] [{, <emri i tabels>[.*]}...] FROM <emri i tabels> [{, <emri i tabels>}...] [WHERE <kushti>] <fshirja using>::= FROM <emri i tabels>[.*] [{, <emri i tabels>[.*]}...] USING <emri i tabels> [{, <emri i tabels>}...] [WHERE <kushti>] N rreshtin e par sht fjala kye DELETE s bashku me opsionet LOW_PRIORITY, QUICK dhe IGNORE. Opsionet LOW_PRIORITY dhe IGNORE i pam m hert te urdhrat INSERT dhe UPDATE. Nse zgjedhim opsionin LOW_PRIORITY ather urdhri DELETE nuk do t ekzekutohet derisa t kyen t gjith shfrytzuesit nga tabela ku do t bhet fshirja e t dhnave. Opsioni IGNORE nuk kthen gabime, vetm lajmrime kur nuk mund t fshihet ndonj rresht. Opsioni tjetr QUICK zbatohet vetm te tabelat e tipit MyISAM. Fshirja e t dhnave n nj tabel Si alternativ e par pr fshirjen e t dhnave prdoret fshirja nga nj tabel. Nga sintaksa shihet se krkohet fjala kye FROM q definon emrin e tabels nga e cila do t fshihen t dhnat. Poashtu ka mundsi opsionesh si fjala WHERE, ORDER BY dhe LIMIT. Opsioni WHERE prmban kushtin me an t cilit do t fshihen t dhnat. ORDER BY bn sortimin e fushave. LIMIT kufizon numrin e rreshtave q do t fshihen. Shembuj: DELETE FROM Test; Nga ky urdhr kuptojm, jan shkruar fjalt kye DELETE FROM dhe emri i tabels. Pasi nuk ka ndonj kusht tjetr ather t gjitha t dhnat nga tabela Test do t fshihen. DELETE FROM Test WHERE ID=12; Fjala WHERE bn q t fshihen vetm t dhnat q kan fushn ID t barabart me 12. Rreshtat q nuk plotsojn kt kusht nuk fshihen.

126

BAZAT E T DHNAVE DELETE FROM Test WHERE ID=13 ORDER BY Data DESC LIMIT 1; N kt urdhr rreshtat q do t fshihen jan: me ID=13, t sortuar duke u bazuar n fushn Data me renditje zbritse (duke kuptuar se rreshti me dat m t von do t fshihet i pari ). Ndrsa LIMIT kufizon numrin e rreshtave q do t fshihen, n rastin ton vetm nj. Fshirja e t dhnave nga tabelat e lidhura mes veti Urdhri DELETE prkrah dy alternativa pr fshirjen e t dhnave nga tabelat e lidhura mes veti: <fshirjen from> dhe <fshirjen using>. Alternativa <fshirja from> Kjo alternativ sht e ngjashme me at t fshirjes nga nj tabel n at se prmban fjalt FROM dhe WHERE. Por nga sintaksa mund t vrejm se nuk prfshihet fjala ORDER BY dhe LIMIT. Nga sintaksa vrejm pikn ( . ) dhe yllin ( * ) q shoqrojn emrin e tabels. Pika dhe ylli jan opsionale. Me an t tyre tregojm se t gjitha fushat e tabels jan t prfshira. Shembull: DELETE Test.* FROM Test1, Test WHERE Test1.ID=Test.ID AND Test1.Emri=AAAA; Nga ky urdhr kuptojm: tabela Test sht tabela nga e cila do t fshihen t dhnat, fjala FROM prcakton tabelat e lidhura q n rastin ton jan Test dhe Test1. Fjala WHERE tregon lidhjen n mes atyre tabelave dhe prfshin edhe kushtin e dyt. Alternativa <fshirja using> Dallimi primar n mes <fshijes using> dhe <fshirjes from> sht se n alternativn <fshirja using> tabela nga e cila do t fshihen t dhnat caktohet n fjaln FROM dhe lidhja e tabelave caktohet me fjaln USING. T gjitha aspektet tjera t ktyre dy alternativave jan t njjta. Shembull: DELETE FROM Test USING Test, Test1 WHERE Test.ID=Test1.ID AND Test.Emri=AAAA; 127

BAZAT E T DHNAVE Si mund t shihni fjala DELETE nuk e cakton emrin e tabels dhe prdorimi i fjals WHERE sht identik si te alternativa <fshirja from>.

Prdormi i urdhrit TRUNCATE pr fshirjen e t dhnave


Me an t ktij urdhri bjm fshirjen e t gjitha t dhnave nga tabela. Sintaksa TRUNCATE [TABLE] <emri i tabels> Si mund t shihet duhet t shkruhet fjala kye TRUNCATE dhe emri i tabels. Mund t shkruajm edhe opsionin TABLE por nuk ka ndonj efekt. P.SH. urdhri i mposhtm bn fshirjen e t dhnave nga tabela Test: TRUNCATE TABLE Test; Pra urdhri TRUNCATE prmban opsionin TABLE dhe emrin e tabels. Ekzekutimi i urdhrit TRUNCATE sht i njjt me ekzekutimin e urdhrit vijues DELETE: DELETE FROM Test; Dallimi thelbsor ndrmjet urdhrave TRUNCATE dhe DELETE sht se urdhri TRUNCATE nuk ka siguri gjat kryerjes s transaksioneve. Dallim tjetr sht se urdhri TRUNCATE e starton numrin e AUTO_INCREMENT nga fillimi pr dallim nga urdhri DELETE. N prgjithsi urdhri TRUNCATE sht m i shpejt se urdhri DELETE.

Shikimi i t dhnave n MySQL


Nj nga funksionet kryesore q nj system i menaxhimit t bazave relacionale duhet t prkrah sht qasja e t dhnave. Kjo qasje duhet t mundsoj shikimin e t dhnave t dshiruara si dhe mnyrn se si ato do t paraqiten. Pr prkrahjen e ktyre veprimeve MySQL sht i pajisur me SQL urdhrin SELECT. Ky urdhr prdoret pr shikimin e t dhnave n gati t t gjitha sistemet e menaxhimit t bazave relacionale. Me an t urdhrit SELECT mund t zgjedhim cilat fusha dhe cilt rreshta nga tabela ose tabelat dshirojm ti shohim.

Urdhri SELECT
Sa her q dshirojm t shohim t dhna nga ndonj baz e t dhnave prdorim urdhrin SELECT, me an t t cilit prcaktojm t dhnat q dshirojm ti shohim. Urdhri SELECT sht urdhri m i fuqishm n MySQL. Ka nj fleksibilitet t madh dhe mundson krijimin e pyetsorve prej atyre m t thjesht deri te ata m kompleks. Sintaksa e urdhrit SELECT sht e prbr nga nj numr i fjalve dhe elementeve t ndryshme, ku shumica nga to jan opsionale. Ja edhe sintaksa: 128

BAZAT E T DHNAVE SELECT [<opsionet select> [<opsionet select>...]] {* | <lista e elementeve>} [<definimi i ekportit>] [ FROM <tabela referuese> [{, <tabela referuese>}...] [WHERE <shprehje> [{<operator> <shprehje>}...]] [GROUP BY <definimi i group by>] [HAVING <shprehje> [{<operator> <shprehje>}...]] [ORDER BY <definimi pr order by>] [LIMIT [<fillimi>,] <numri rrestave>] [PROCEDURE <emri i procedurs> [(<argumenti> [{, <argumenti>}...])]] [{FOR UPDATE} | {LOCK IN SHARE MODE}] ] <opsionet select>::= {ALL | DISTINCT | DISTINCTRO} | HIGH_PRIORITY | {SQL_BIG_RESULT | SQL_SMALL_RESULT} | SQL_BUFFER_RESULT | {SQL_CACHE | SQL_NO_CACHE} | SQL_CALC_FOUND_ROS | STRAIGHT_JOIN <lista e elementeve>::= {<emri i fushs> | <shprehje>} [[AS] <pseudonim>] [{, {<emri i fushs> | <shprehje>} [[AS] <pseudonim>]}...] <definimi i ekportit>::= INTO OUTFILE <emri i datoteks> [<opsionet e ekportimit> [<opsionet e ekportimit >]] | INTO DUMPFILE <emri i datoteks > < opsionet e ekportimit >::= {FIELDS [TERMINATED BY <vler>] [[OPTIONALLY] ENCLOSED BY <vler>] [ESCAPED BY <vler>]} | {LINES [STARTING BY <vler>] [TERMINATED BY <vler>]} < tabela referuese >::= <emri i tabels> [[AS] <pseudonim>] [{USE | IGNORE | FORCE} INDEX <emri i indeksit> [{, <emri i indeksit>}...]]

129

BAZAT E T DHNAVE <definimi i group by>::= <emri i fushs> [ASC | DESC] [{, <emri i fushs> [ASC | DESC]}...] [WITH ROLLUP] <definimi pr order by>::= <emri i fushs> [ASC | DESC] [{, <emri i fushs> [ASC | DESC]}...] Si mund t shihet nga sintaksa urdhri SELECT prmban nj numr t madh t elementeve. Duke ju referuar sintakss vrejm se elementet e domosdoshme jan: SELECT { * | <lista e elementeve> } Pra sintaksa sht e prbr nga fjala kye SELECT dhe * ose lista e elementeve, e cila sht e prbr nga fushat ose shprehjet si m posht: <lista>::= {<emri i fushs> | <shprehje>} [[AS] <pseudonim>] [{, {<emri i fushs> | <shprehje>} [[AS] <pseudonim>]}...] Pra, sintaksa duhet t ket s paku nj fush ose shprehje. Nse prfshihet m shum se nj fush ose shprehje ather ato ndahen me presje. Si shtes apo si opsion sht ndarja e nj pseudonimi pr fushat ose shprehjet duke prdor fjaln AS. Pr shikimin e t dhnave nga ndonj tabel duhet t prdorim fjaln FROM dhe tabeln referuese. Fjala FROM krkon nj ose m shum tabela referuese t ndara mes veti me presje si m posht: FROM <tabela referuese> [{, <tabela referuese>}...] < tabela referuese >::= <emri i tabels> [[AS] <pseudonim>] [{USE | IGNORE | FORCE} INDEX <emri i indeksit> [{, <emri i indeksit>}...]] Secila tabel referuese sht emri i tabels, zgjedhja AS mundson ndarjen e nj pseudonimi pr at tabel. Fjala FROM mund t prmbaj m shum se nj tabel referuese. Pr krijimin e urdhrit SELECT pr shikimin e t dhnave nga nj tabel krkon nj numr t vogl elementesh. Se si funksionon kjo do ta shohim me disa shembuj: SELECT * FROM Klientet; SELECT * FROM Kredite; SELECT Emri, Mbiemri FROM Kredite;

130

BAZAT E T DHNAVE N urdhrin e par prfshihet fjala kye SELECT pastaj *, me an t * krkojm nga MySQL q t kthej si rezultat t gjitha fushat. Ndrsa me FROM prcaktojm se nga cila tabel dshirojm ti shohim kto t dhna. Kur t ekzekutojm kt urdhr do t shohim t gjitha t dhnat nga tabela Klientet. Prdorimi i * sht nj mnyr e leht pr shikimin e rezultatit pr seciln fush. Nse dshirojm t shohim t dhna nga disa fusha t caktuara ather shkruajm fjaln kye SELECT dhe emrat e fushave nga t cilat dshirojm t shohim t dhnat t ndara mes veti me presje dhe FROM emri i tabels, ashtu si m lart te shembulli n rreshtin e tret. Duke ju referuar srish sintakss pr urdhrin SELECT shohim mundsin e ndarjes s pseudonimit pr secilin element t lists. Kjo bhet si m posht: SELECT Emri AS Filan, Mbiemri AS Fisteku FROM Klientet; SELECT Emri AS Emri i klientit, Mbiemri AS Mbiemri i klientit FROM Klientet; N shembullin e msiprm n rreshtin e dyt shohim se n t dy rastet pseudonimet jan futur n thonjza, kjo sht p shkak se ato prbhen nga m shum se nj fjal dhe futja n thonjza i tregon MySQL se ato fjal jan pjes e pseudonimit. Prdorimi i shprehjeve n urdhrin SELECT N sintaksn e urdhrit SELECT <lista e elementeve> prve emrit t fushs prfshinte edhe shprehjen. Le t shohim nj urdhr SELECT q prmban nj shprehje: SELECT Emertimi AS Emri i mallit, NeDepo+TeShitura AS Total FROM Dyqani; Elementi i par i lists s elementeve sht i njjt si te shembujt e mparshm, ndrsa elementi i dyt sht shprehje. Shprehja (NeDepo+TeShitura) mbledh vlerat nga fusha NeDepo dhe TeShitura. Ksaj shprehje i sht ndar emri Total, i cili emr do t paraqitet n rezultatin e ekzekutimit t ktij pyetsori. Mund t krijohen shprehje edhe m t komplikuara varsisht nga llogaritja q bhet. Prdorimi dhe definimi i variablave n urdhrin SELECT Nj lehtsim tjetr te shprehjet sht mundsia e krijimit dhe definimit t variablave. Variabla duhet t filloj me shenjn @: @Emri, @Mbiemri etj. Ndarja e vlers pr variablat bhet me an t urdhrit SET, P.SH. SET @Numri=140201; SET @Emri=Bujar; SET @Shuma=550;

131

BAZAT E T DHNAVE Shembull: SELECT 1+3, Klientet, NOW( ) AS Data dhe ora; Me ekzekutimin e ktij urdhri marrim si rezultat: +-----+--------------+--------------------------+ | 1+3 | Klientet | Data dhe ora | +-----+--------------+--------------------------+ | 4 | Klientet | 2004-08-24 11:39:40 | +-----+--------------+--------------------------+ 1 row in set (0.00 sec) Elementi i par tregon se si me urdhrin SELECT mund t bjm llogaritje, elementi i dyt Klientet sht nj string i cili paraqitet edhe si rezultat, n fund elementi i tret NOW( ) AS Data dhe ora kthen datn dhe orn aktuale.

Opsionet te urdhri SELECT


Opsioni ALL prcakton q pyetsori mund t kthej si rezultat t gjith rreshtat edhe pse ka rreshta duplikat. Opsioni DISTINCT dhe DISTINCTROW kan t njjtn domethnie, prcaktojn q n rezultatin e pyetsorit t mos paraqiten rreshtat me t dhna t dyfishta. Nse nuk zgjedhim asnjrin nga kto opsione nnkuptohet se sht zgjedhur ALL. N tabeln Klientet nga shembujt e mparshm shtojm kto t dhna: INSERT INTO Klientet VALUES (140206,Bujar,Krasniqi,Pej,rr.Gjimnazi,044/123-678), (23,Gani,Thaqi,Besian,rr.Zahir Pajaziti,044/312-645); Ekzekutojm kt urdhr dhe pastaj shkruajm: SELECT ALL Emri FROM Klientet; Do t paraqiten t gjith rreshtat nga kjo tabel, ku te fusha Emri paraqitet Gani dhe Bujar dyher, ndrsa me ekzekutimin e urdhrit: SELECT DISTINCT Emri FROM Klientet; Emrat nuk jan duplikat. SELECT ALL Emri, Mbiemri FROM Klientet; Tani Gani Thaqi prsritet dyher, ndrsa me SELECT DISTINCT Emri, Mbiemri FROM Klientet; T gjith rreshtat jan t ndryshm.

132

BAZAT E T DHNAVE

WHERE
Fjala kye WHERE na mundson prcaktimin e rreshtave q dshirojm ti shohim si rezultat i ekzekutimit t nj pyetsori. Fjala kye WHERE sht e prbr nga nj ose m shum kushte q definojn parametrat t urdhrit SELECT. Secili kusht sht nj shprehje q mund t jet emr i nj fushe, operator ose funksion. Sintaksa n vijim prshkruan se si sht e definuar fjala kye WHERE: WHERE < shprehja > [ { < operator > < shprehja > } ] Si mund t shihet fjala kye WHERE duhet t prmbaj s paku nj kusht q definon rreshtat q do t paraqiten n rezultat. Kur t definojm m shum se nj kusht ather ato kushte lidhen mes veti me operatort logjik AND ose OR. Tani le t shohim nj shembull: SELECT Numri, Tipi_i_kredise AS Kredia FROM Kredite WHERE Tipi_i_kredise = Mobile; Fjala kye WHERE kushtzon q vetm rreshtat n fushn Tipi_i_kredise me vlern Mobile t paraqiten si rezultat i ktij pyetsori. SELECT Numri, Tipi_i_kredise AS Kredia FROM Kredite WHERE Tipi_i_kredise=Vetur AND Shuma>5000; Ktu fjala kye WHERE prmban dy kushte t lidhura mes veti me operatorin AND. Kjo do t thot q duhet t plotsohen dy kushtet n mnyr q rreshti t paraqitet si rezultat. Kushti i par krkon q tipi i kredise t jet vetur dhe mimi i saj t jet m i madh se 5000. Nga urdhri i msiprm mund t themi se pse nuk e shfrytzuam pseudonimin Kredia pr fushn Tipi_i_kredise te fjala kye WHERE. Kjo sht pr shkak se si MySQL i proceson urdhrat SELECT nuk mund t shfrytzohen pseudonimet n fjaln kye WHERE. Nj mundsi e till sht e lejuar te fjala kye HAVING.

GROUP BY
Deri tani msuam disa pjes prbrse t urdhrit SELECT t cilat kthenin si rezultat vlera nga fushat dhe rreshtat. Fjala kye GROUP BY ndryshon pak nga elementet tjera t urdhrit SELECT nga ajo se ai bn grupimin e vlerave. Ja edhe sintaksa: GROUP BY <definimi i group by> <definimi i group by>::= <emri i fushs> [ASC | DESC] [{, <emri i fushs> [ASC | DESC]}...] [WITH ROLLUP]

133

BAZAT E T DHNAVE Fjala kye GROUP BY prmban s paku nj fush edhe pse mund t prmbaj m shum se nj. Nse jan zgjedhur m shum se nj fush ather ato ndahen me presje n mes veti. Me prcaktimin e fjals kye GROUP BY rreshtat grupohen sipas vlerave n fusha. Si rezultat grupimi bhet pr ato fusha q kan vlera q prsriten. P.SH. nuk mund t bjm grupimin pr fushn q sht els primar, sepse do vler n at fush sht unike. Shembuj: SELECT * FROM Klientet WHERE Qyteti=Prishtin GROUP BY Emri; Si rezultat do t paraqiten t gjith klientt n qytetin e Prishtins t sortuar sipas emrit. Sortimi mund t bhet me renditje rritse ASC dhe renditje zbritse DESC, nse nuk bhet zgjedhja e asnjrs nga kto ather nnkuptohet vlera ASC. SELECT Numri, COUNT(Shuma) AS Numri i kredive FROM Kredite WHERE ID<10 GROUP BY Numri DESC; Si rezultat paraqitet numri i kredive pr secilin numr llogarie.

Fjala kye HAVING


Fjala kye HAVING sht e ngjashme me WHERE n at se prmban nj ose m shum kushte, t cilt definojn rreshtat q do t paraqiten n rezultat. Megjithat HAVING ka disa prparsi nga WHERE. P.SH. n HAVING mund t prfshijm funksionet aggregate sikur funksioni COUNT( ). Pastaj mund t shfrytzohen pseudonimet n HAVING t ciln gj nuk mund ta bjm te fjala kye WHERE. Sintaksa e HAVING: HAVING < shprehje > [ { < operator > < shprehje > } ] Si shihet nga sintaksa duhet t shkruhet s paku nj shprehje. HAVING sht e konstruktuar njsoj si WHERE n kuptimin e kushteve dhe lidhjen e atyre kushteve mes veti me operator. SELECT Numri, Tipi_i_kredive, COUNT(Shuma) AS Nkredive FROM Kredite WHERE ID<20 GROUP BY Numri HAVING Nkredive<3; Si rezultat do t paraqiten t gjith numrat e llogaris s klientve q kan marr m pak se tri kredi. 134

BAZAT E T DHNAVE

Fjala kye ORDER BY


N sintaksn e urdhrave UPDATE dhe DELETE sht prmend edhe fjala kye ORDER BY e cila prdorej pr sortimin e t dhnave q u modifikuan ose ato q u fshin. Poashtu edhe urdhri SELECT prmban fjaln kye ORDER BY q na mundson prcaktimin e renditjes s rreshtave n rezultat. Ja edhe sintaksa: ORDER BY < definimi i order by > < definimi i order by >::= < emri i fushs > [ ASC | DESC ] [ { , < emri i fushs > [ ASC | DESC ] } ... ] Si shihet nga sintaksa ktu duhet t prfshihet prveq fjals kye ORDER BY edhe s paku nj emr i nj fushe. Mund t shkruajm edhe pseudonim t ndonj fushe ose emrin e asaj fushe. Nse dshirojm q t prfshihen m shum se nj fush ather ato shkruhen duke i ndar me presje. Pr seciln fush mund t shkruajm mnyrn e sortimit: sipas renditjes rritse ASC ose zbritse DESC. Nse nuk zgjedhet asnjri nga opsionet ather nnkuptohet se sht zgjedh mnyra e renditjes ASC. Shembuj: SELECT * FROM Klientet ORDER BY Emri; Si rezultat paraqiten t gjitha shnimet e klientve nga tabela Klientet t sortuara sipas emrit me renditje rritse. N renditjet me m shum se nj fush, sht rregull q s pari renditja bhet sipas fushs s par dhe pastaj fushs s dyt. SELECT * FROM Klientet ORDER BY Emri,Qyteti;

Fjala kye LIMIT


Fjala kye LIMIT mund t merr dy argumente: LIMIT [<fillimi>,] <numri rrestave> Argumenti i par sht opsional dhe prcakton prej ku t filloj numrimi i rreshtave. Nse nuk sht zgjedhur ndonj vler ather nnkuptohet vlera 0. Argumenti i dyt me radh < numri i rreshtave > n fjaln kye LIMIT tregon numrin e rreshtave q do t paraqiten n rezultat.

135

BAZAT E T DHNAVE Shembuj: SELECT * FROM Kredite WHERE ID<20 ORDER BY ID LIMIT 5; Si rezultat paraqiten 5 t dhnat e fundit q plotsojn kushtin WHERE. SELECT * FROM Kredite WHERE ID<20 ORDER BY ID LIMIT 4, 5; Si rezultat paraqiten 5 t dhna duke filluar nga e dhna e katrt q plotsojn kushtin WHERE.

Prdorimi i operatorve n urdhrat SQL


Gjat msimit t SQL urdhrave kemi par se n sintaksn e tyre jan prdor nj numr i shprehjeve. P.SH. kemi prdor shprehjet te fjala kye WHERE, te urdhrat SELECT, UPDATE dhe DELETE. Shprehja sht nj formul e prbr nga emra t fushave, operatorve dhe funksioneve. Kto elemente s bashku krijojn shprehje m efektive pr modifikimin e t dhnave n MySQL. N mnyr q do shprehje t jet efikase shfrytzohen operator t ndryshm. Operatori sht nj symbol ose fjal kye q prcakton nj aksion t caktuar ose kushtet ndrmjet elementeve t shprehjes ose ndrmjet shprehjeve. Prioriteti i operatorve Kur nj shprehje t procesohet ajo prllogaritet sipas renditjes s elementeve t shprehjes dhe prioritetit t operatorve. MySQL proceson shprehjet sipas nj rregulle specifike t prioritetit t operatorve. Kur kemi t bjm me shprehje komplekse q kan shum operator,MySQL duhet t prcaktoj se cili operator ka prparsi.Pr at MySQL e ka t paradefinuar prioritetin e kategorive t operatorve sipas ksaj renditje: BINARY, COLLATE NOT ( negacioni), ! (negacioni) - ( minusi unar ) * ( shumzimi ), / ( pjestimi ), % ( pjestimi me mbetje ) - ( zbritja), + ( mbledhja ) T gjith operatort e krahasimit prveq BETEEN dhe NOT BETEEN BETWEEN, NOT BETWEEN AND, && OR, | |, XOR 136

BAZAT E T DHNAVE

Operatort aritmetik
Operatort aritmetik prdoren pr llogaritje n shprehje. Jan t ngjashm me simbolet n algjebr mbledhja, zbritja, shumzimi, pjestimi. N tabeln e mposhtme jan prshkrimet pr secilin operator: Operatori + ( mbledhja ) - ( zbritja ) - ( unar ) * (shumzimi ) / ( pjestimi ) % ( pjestimi me mbetje ) Prshkrimi Mbledh dy argumente Zbret argumentin e dyt nga argumenti i par Ndrron shenjn e argumentit Shumzon dy numra Pjeston argumentin e par me argumentin e dyt Pjeston argumentin e par me argumentin e dyt dhe si rezultat jep mbetjen

M hert kemi par shembuj ku kemi prdor operatort aritmetik n urdhrat SQL. SELECT Emertimi AS Emri i mallit, NeDepo+TeShitura AS Total FROM Dyqani; UPDATE Kredit SET Shuma=Shuma+10;

Operatort e krahasimit
Operatort e krahasimit prdoren pr krahasimin ndrmjet dy argumenteve dhe prcaktimin e vlers sakt, pasakt ose NULL t atij kushti. Nse njri ose t dy argumentet jan NULL ather vlera e kushtit sht NULL, prveq te operatori < = > i cili kthen vlern e sakt kur dy argumentet jan t njjt. Q kushti t pranohet duhet t kthej vler t sakt. P.SH. me an t urdhrit SELECT i cili prmban fjan kye WHERE: SELECT * FROM Klientet WHERE Qyteti=Prishtin; Fjala kye WHERE prmban shprehjen Qyteti=Prishtin . Kur t ekzekutohet urdhri i msiprm vlera n fushn Qyteti krahasohet me vlern Prishtin. Nse vlera sht Prishtin ather kushti sht i sakt. Nse vlera nuk sht Prishtin kushti do t jet i pasakt. Nse n fushn Qyteti kemi vlera NULL ather kushti sht NULL. Si rezultat do t paraqiten vetm rreshtat ku n fushn Qyteti sht vlera Prishtin. MySQL prkrah nj numr t madh t operatorve t krahasimit, q mundsojn prcaktimin e kushteve t ndryshme n urdhrat SQL. Tabela e mposhtme prshkruan kta operator: 137

BAZAT E T DHNAVE

Operatori = <=> <>, != < <= > >= IS NULL IS NOT NULL BETWEEN NOT BETWEEN IN NOT IN LIKE NOT LIKE REGEXP NOT REGEXP

Prshkrimi Kthen vlern e sakt nse t dy argumentet jan t barabart Kthen vlern e sakt nse t dy argumentet jan t barabart, edhe n rastin kur kan vler NULL Kthen vlern e sakt nse argumentet nuk jan t barabart Kthen vlern e sakt nse argumenti i par sht m i vogl se argumenti i dyt Kthen vlern e sakt nse argumenti i par sht m i vogl ose i barabart me argumentin i dyt Kthen vlern e sakt nse argumenti i par sht m i madh se argumenti i dyt Kthen vlern e sakt nse argumenti i par sht m i madh ose i barabart mse argumentin i dyt Kthen vlern e sakt nse argumenti ka vlern NULL Kthen vlern e sakt nse argumenti sht i ndryshm nga NULL Kthen vlern e sakt nse vlera e argumentit gjendet n intervalin e parcaktuar nga fjala kye BETWEEN Kthen vlern e sakt nse vlera e argumentit nuk gjendet n intervalin e parcaktuar nga fjala kye BETWEEN Kthen vlern e sakt nse vlera e argumentit sht e parcaktuar n fjaln kye IN Kthen vlern e sakt nse vlera e argumentit nuk sht e parcaktuar n fjaln kye NOT IN Kthen vlern e sakt nse vlera e argumentit sht e prcaktuar nga LIKE Kthen vlern e sakt nse vlera e argumentit nuk sht e prcaktuar nga LIKE Kthen vlern e sakt nse vlera e argumentit sht e prcaktuar me REGEXP Kthen vlern e sakt nse vlera e argumentit nuk sht e prcaktuar me NOT REGEXP

Si shihet ka nj numr t madh operatorsh t krahasimit dhe mnyra m e mir pr kuptimin e tyre sht me an t shembujve: SELECT ID, Numri, Tipi_i_kredise FROM Kredite WHERE Shuma=420 ORDER BY Tipi_i_kredise; Si shihet operatori i krahasimit ( = ) prcakton se si rezultat jan vetm rreshtat te t cilt vlera n fushn Shuma sht 420. 138

BAZAT E T DHNAVE

SELECT ID, Numri FROM Kredite WHERE Tipi_i_kredise < = > NULL Nga ky shembull si rezultat kthehen vetm ata rreshta q n fushn Tipi_i_kredise kan vlern NULL. SELECT ID, Numri FROM Kredite WHERE Tipi_i_kredise IS NOT NULL; Nga ky shembull si rezultat kthehen vetm ata rreshta q n fushn Tipi_i_kredise kan vler t ndryshme nga NULL. SELECT ID, Numri, Tipi_i_kredise FROM Kredite WHERE Shuma>1000 ORDER BY Tipi_i_kredise; Si rezultat kthehen t gjitha t dhnat q n fushn Shuma kan vlern m t madhe se 1000. T renditura sipas Tipi_i_kredise. SELECT ID, Numri, Tipi_i_kredise FROM Kredite WHERE Shuma BETWEEN 420 AND 1800 ORDER BY Tipi_i_kredise; Si rezultat kthehen t gjitha t dhnat q vlera n fushn Shuma sht ndrmjet vlers 420 dhe 1800. T renditura sipas Tipi_i_kredise. SELECT ID, Numri, Tipi_i_kredise FROM Kredite WHERE Shuma NOT BETWEEN 420 AND 1800 ORDER BY Tipi_i_kredise; Si rezultat kthehen t gjitha t dhnat q vlera n fushn Shuma sht m e vogl se 420 dhe m e madhe se 1800. T renditura sipas Tipi_i_kredise. SELECT Emri, Mbiemri, Adresa FROM Klientet WHERE QYTETI IN (Prishtin,Besian) ORDER BY Emri; Nga ky shembull fitojm si rezultat t dhnat q n fushn Qyteti prmbajn vlern Prishtin ose Besian. Pra lista e vlerave e cila sht brenda kllapave t vogla t ndara 139

BAZAT E T DHNAVE mes veti me presje. Kushti merr vlern e sakt vetm pr vlerat brenda kllapave t vogla, t dhnat q prmbajn vlera tjera ose NULL n fushn Qyteti nuk do t paraqiten n rezultat. Lista e vlerave Brenda kllapave t vogla n kt shembull jan t future n thonjza sepse jan t tipit sting, n rastin kur vlerat jan t tipit numeric ather vlerat nuk futen n thonjza. SELECT Numri,Tipi_i_kredise FROM Kredite WHERE Shuma IN (420,7000,390); Nj tjetr operator i krahasimit mjaft i dobishm sht operatori LIKE, i cili mundson krkimin e vlerave t ngjashme me vlern e caktuar. Operatori LIKE prkrah dy karakter gjithprfshirs: % ( prqindja ) prfaqson zero ose nj numr t vlerave _ ( underline ) prfaqson saktsisht nj vler. SELECT Numri, Emri, Mbiemri FROM Klientet WHERE Qyteti LIKE P% ORDER BY Emri; Si rezultat paraqiten t gjitha t dhnat q n fushn Qyteti kan vlera q fillojn me shkronjn P ( t madhe). T renditura sipas fushs Emri. SELECT Numri, Emri, Mbiemri FROM Klientet WHERE Qyteti LIKE %P% ORDER BY Emri; Rezultati i ktij shembulli sht i njjt me at t shembullit t mparshm. Kjo sht ngase % mund t prfaqsoj zero ose nj numr t vlerave. SELECT Numri, Emri, Mbiemri FROM Klientet WHERE Qyteti LIKE _r%n ORDER BY Emri; Si rezultat fitojm t gjitha t dhnat q n fushn Qyteti kan vlerat: shkronja e dyt duhet t jet r dhe duhet t prfundoj me shkronjn n. Sepse _ ( underline ) pfaqson saktsisht nj vler, pra shkronja e par mund t jet fardo. Nuk duhet t harrojm q vlerat n fusha jan CASE SENSITIV. MySQL prkrah edhe nj operator q mundson gjetjen e vlerave t ngjashme me vlern e caktuar. Operatori REGEXP mundson nj numr t ndryshm t opsioneve dhe trajtash n mnyr t gjetjes s vlerave t ngjashme me vlern e caktuar. Tabela e 140

BAZAT E T DHNAVE mposhtme liston nj numr t opsioneve q mund ti prdorim me operatorin REGEXP n krijimin e SQL urdhrave. Opsioni < vlera > <^> . [<karaktert>] Prshkrimi Vlera e testuar duhet t prmbaj vlern e caktuar Vlera e testuar nuk duhet t prmbaj vlern e caktuar Vlera e testuar mund t prmbaj njrin nga karaktert Vlera e testuar prmban s paku nj nga karaktert e listuar brenda kllapave t mesme Vlera e testuar duhet t prmbaj s paku njrin nga karaktert e listuar n intervalin n kllapat e msme Vlera e testuar duhet t filloj me vlern pas shenjs ^ Vlera e testuar duhet t prfundoj me vlern para shenjs $ Vlera e testuar duhet t prmbaj zero ose m shum karakter pr shenjn * Shembull bo ^bo b. [df] Vlerat e pranueshme bota, boshe, karboni shuma, emri, mbiemri mbiemri, bora, baza dritarja, formulari, mundsia 15,3,346,50,22,791 start, sup, sqarim sqaruar, drejtuar,formular sqarimi, startimi, syri

[<intervali>] ^ $ *

[1-5] ^s ar$ ^s.*i$

Operatori REGEXP mund t shihet si jo i prshtatshm por pas shembujve q do ti punojm do t kemi t qart rndsin dhe dobin e ktij operatori. SELECT Emri, Mbiemri, Adresa FROM Klientet WHERE Emri REGEXP ^[a-f] ORDER BY Emri; Shprehja Emri REGEXP ^[a-f] s pari prcakton fushn Emri, fjaln kye REGEXP dhe vlern q duhet t plotsohet. Vlera sht brenda kuotave (thonjzave t njfishta) dhe prmban shenjn ^ dhe intrevalin q prcakton shkronjat prej a deri n f. Pasi q sht prdor shenja ^ ather vlera e ardhshme e prcaktuar duhet t paraqitet n fillim. N rastin ton sht intervali brenda kllapave t mesme. Pra q kushti t merr vlern e sakt pr nj t dhn duhet q n fushn Emri vlera t filloj me shkronjat nga a deri n f. SELECT Emri, Mbiemri, Adresa FROM Klientet WHERE Emri REGEXP ^[mn].*[ai]$ ORDER BY Emri; 141

BAZAT E T DHNAVE N kt urdhr srish REGEXP fillon me shenjn ^ duke treguar q vlera e ardhshme duhet t paraqitet n fillim t vlers s fushs Emri. Por n kt rast nuk kemi interval por dy karakter m dhe n. Si rezultat vlera n fushn Emri duhet t filloj me m ose n. Pastaj sht pika ( . ) dhe ylli ( * ). Pika tregon se vetm nj karakter mund t prfshihet dhe ylli tregon se mund t prfshihen zero ose m shum karakter t prsritur. Karaktert mund t prsriten. Pastaj [ai]$ tregon se vlera duhet t prfundoj me karaktert a ose i.

Operatort logjik
Operatort logjik mundsojn testimin e vlefshmris s shprehjeve. Pr nj kusht ose disa kushte q t jen t pranueshme duhet t marrin vler t sakt. Tabela e mposhtme pshkruan operatort logjik n MySQL: Operatori AND OR XOR NOT, ! Prshkrimi Kthen vlern e sakt nse t dy argumentet kan vler t sakt. Poashtu mund t shfrytzojm edhe && n vend t AND Kthen vlern e sakt nse njri nga argumentet sht i sakt. Mund t shfrytzojm | | n vend t OR Kthen vlern e sakt nse saktsisht njri nga argumentet sht i sakt Kthen vlern e sakt nse argumenti ose shprehja ka vler t pasakt. Mund t shfrytzojm ! n vend t operatorit NOT

SELECT ID, Tipi_i_kredise FROM Kredite WHERE Tipi_i_kredise=Vetur AND Shuma>3500 ORDER BY Shuma; Shprehja e par te fjala kye HERE prcakton q fusha Tipi_i_kredise duhet t ket vlern Vetur, shprehja e dyt krkon q vlera n fushn Shuma t jet m e madhe se 3500. Kto dy shprehje jan t lidhura mes veti me operatorin logjik AND, d.m.th. si rezultat t dy shprehjet duhet t marrin vler t sakt n mnyr q i tr kushti t merr vler t sakt. Me fjal t tjera t gjitha t dhnat n rezultat te fusha Tipi_i_kredise do t ken vlern Vetur dhe n fushn Shuma vlera do t jet m e madhe se 3500.

SELECT ID, Tipi_i_kredise FROM Kredite WHERE Tipi_i_kredise=Vetur OR Shuma>3500 ORDER BY Shuma; Shprehja e par te fjala kye WHERE prcakton q fusha Tipi_i_kredise duhet t ket vlern Vetur, shprehja e dyt krkon q vlera n fushn Shuma t jet m e madhe se 3500. Kto dy shprehje jan t lidhura mes veti me operatorin logjik OR, d.m.th. si rezultat njra nga dy shprehjet duhet t merr vler t sakt n mnyr q i tr kushti t 142

BAZAT E T DHNAVE merr vler t sakt. Me fjal t tjera t gjitha t dhnat n rezultat te fusha Tipi_i_kredise do t ken vlern Vetur ose n fushn Shuma vlera do t jet m e madhe se 3500. SELECT Emri, Mbiemri FROM Klientet WHERE Emri=Amir XOR Qyteti=Prishtin; Shprehja e par te fjala kye HERE prcakton q fusha Emri duhet t ket vlern Amir, shprehja e dyt krkon q vlera n fushn Qyteti t jet vlera Prishtin. Kto dy shprehje jan t lidhura mes veti me operatorin logjik XOR, d.m.th. si rezultat saktsisht njra nga dy shprehjet duhet t merr vler t sakt n mnyr q i tr kushti t merr vler t sakt. Me fjal t tjera si rezultat do t paraqiten t gjitha t dhnat q n fushn Emri kan vlern Amir dhe te fusha Qyteti kan vler t ndryshme nga Prishtin, ose te fusha Emri kan vler t ndryshme nga vlera Amir dhe te fusha Qyteti kan vler Prishtin. Mund t ndrtojm edhe shprehje m t komplikuara, ku prfshihen m shum se nj operator logjik, sin shembullin e mposhtm: SELECT Emri, Mbiemri FROM Klientet WHERE Emri=Lavdim AND ( Qyteti IS NULL OR NOT (Qyteti=Prishtin)) ORDER BY Emri; Shprehja e par te fjala kye HERE prcakton q fusha Emri duhet t ket vlern Lavdim, dy shprehjet tjera jan t lidhura me operatorin logjik OR. E para nga kto dy shprehje krkon q fusha Qyteti t ket vler NULL, ndrsa shprehja tjetr krkon q vlera n fushn Qyteti t mos jet Prishtin. Pasi q kto dy shprehje jan t lidhura me operatorin logjik OR ather q t kthehet vler e sakt duhet q njra nga shprehjet t merr vler t sakt. Ndrsa q e tr shprehja t merr vlern e sakt duhet q vlera n fushn Emri t jet Lavdim. Opertaort logjik mund ti prdorim edhe n urdhrat UPDATE dhe DELETE pr definimin e rreshtave q do t modifikohen. .

Operatort e sortimit

Tip tjetr i operatorve jan operatorte sortimit , t cilt prdoren pr definimin e kushtit pr krahasim me vlerat npr fusha. N tabeln e mposhtme jan operatort logjik: Operatori BINARY COLLATE Prshkrimi Konverton nj string n string binar ashtu q sortimi i t dhnave do t jet CASE SENSITIV Prcakton nj sistemim t veant q prdoret pr krahasimin dhe sortimin e t dhnave 143

BAZAT E T DHNAVE Mnyra m e mir p t kuptuar secilin nga kta operator sht prmes shembujve: CREATE TABLE Produkti ( ProdID SMALLINT NOT NULL PRIMARY KEY, ProdColor VARCHAR(15) NOT NULL ); INSERT INTO Produkti VALUES (101, Red), (102, red), (103, RED), (104, REd), (105, reD), (106, Blue), (107, blue), (108, BLUE), (109, BLue), (110, blUE); Para se t shohim operatorin BINARY shohim nj shembull: SELECT * FROM Produkti WHERE ProdColor=red; Do t kthehen si rezultat t gjitha t dhnat q n fushn ProdColor kan vlern red +--------+-------------+ | ProdID | ProdColor | +--------+-------------+ | 101 | Red | | 102 | red | | 103 | RED | | 104 | Red | | 105 | reD | +--------+-------------+ 5 ros in set (0.00 sec) SELECT * FROM Produkti HERE ProdColor=BINARY red; +--------+-------------+ | ProdID | ProdColor | +--------+-------------+ | 102 | red | +--------+-------------+ 1 ro in set (0.01 sec) Si shihet rezultati prfshin n fushn ProdColor saktsisht vlern red, pra krkimi sht br CASE SENSITIV. SELECT * FROM ProductColors HERE ProdColor COLLATE latin1_german2_ci = red; Nga shembulli m lart shohim se sht prdor sistemi i krahasimit latin1_german2_ci. 144

BAZAT E T DHNAVE

Lidhja e tabelave n urdhrin SELECT


M hert msuam prdorimin e urdhrit SELECT pr shikimin e t dhnave nga ndonj baz e t dhnave. Ku kemi ekstraktuar rreshta dhe fusha t caktuara, t grupuara sipas nevojs. Kto t dhna i kemi nxjerr nga nj tabel, por MySQL mundson shikimin e t dhnave nga shum tabela dhe kthen si rezultat t dhna sikur nga nj tabel. sht e vrtet ne mund t qasemi shum tabelave edhe me urdhrat UPDATE dhe DELETE. Do t msojm si t krijojm lidhjet ndrmjet dy apo m shum tabelave dhe shum nga elementet q prdoren te urdhri SELECT jan t ngjashme me ato t urdhrat UPDATE dhe DELETE. Me krijimin e nj urdhri SELECT dshirojm q rezultati t mirret nga t dhnat q ruhen n tabela t ndryshme. N rezultat nuk duhet t ket t dhna q paraqiten arbitarisht (pa arsye), me fjal t tjer t dhnat duhen t paraqiten sikur t ishin nga nj tabel. T dhnat duhet t jen t harmonizuara dhe logjike pavarsisht faktit se ato jan nga tabela t ndryshme. Pr t arritur kt harmonizim MySQL mundson lidhjet te urdhri SELECT. Ja edhe sintaksa: SELECT [<opsioni select> [<opsioni select>...]] {* | <lista select>} [ FROM {<tabela referuese> | <definimi i lidhjes>} [WHERE <shprehje> [{<operator> <shprehje>}...]] [GROUP BY <definimi i group by>] [HAVING <shprehje> [{<operator> <shprehje>}...]] [ORDER BY <definimi i order by>] [LIMIT [<fillimi>,] <numri i rreshtave>] ] <definimi i lidhjes>::= {<tabela referuese>, <tabela referuese> [{, <tabela referuese>}...]} | {<tabela referuese> [INNER | CROSS ] JOIN <tabela referuese> [<kushtet e lidhjes>]} | {< tabela referuese > STRAIGHT_JOIN < tabela referuese >} | {< tabela referuese > LEFT [OUTER] JOIN < tabela referuese > [<kushtet e lidhjes >]} | {<tabela referuese> RIGHT [OUTER] JOIN < tabela referuese > [<kushtet e lidhjes >]} | {<tabela referuese> NATURAL [{LEFT | RIGHT} [OUTER]] JOIN<tabela referuese>} < tabela referuese >::= <emri i tabels> [[AS] <pseudonimi>] [{USE | IGNORE | FORCE} INDEX <emri i indeksit> [{, <emri i indeksit>}...]] 145

BAZAT E T DHNAVE <kushtet e lidhjes>::= ON <shprehje> [{<operator> <shprehje>}...] | USING (<fush> [{, <fush>}...]) Si mund t shihet nga sintaksa fjala kye FROM sht: FROM {<tabela referuese> | <definimi i lidhjes>} Ndrsa nga sintaksa e urdhrit SELECT m hert te fjala kye FROM ka qen m ndryshe: FROM <tabela referuese> [ { , <tabela referuese> } ] Kjo sht br pr paraqitje m t shkurtr t sintaks e lidhjes s s urdhrit SELECT. Pra tani fjala kye FROM prmban edhe definimin. Definimi i lidhjes i referohet tipeve t ndryshme t lidhjes, si mposht: <definimi i lidhjes>::= {<tabela referuese>, <tabela referuese> [{, <tabela referuese>}...]} | {<tabela referuese> [INNER | CROSS ] JOIN <tabela referuese> [<kushtet e lidhjes>]} | {< tabela referuese > STRAIGHT_JOIN < tabela referuese >} | {< tabela referuese > LEFT [OUTER] JOIN < tabela referuese > [<kushtet e lidhjes >]} | {<tabela referuese> RIGHT [OUTER] JOIN < tabela referuese > [<kushtet e lidhjes >]} | {<tabela referuese> NATURAL [{LEFT | RIGHT} [OUTER]] JOIN<tabela referuese>} E para nga kto lidhje sht lidhja themelore ( bazike) e cila prbhet vetm nga tabelat referuese t ndara mes veti me presje. Lidhjet tjera jan INNER, CROSS, STRAIGHT_JOIN, LEFT, RIGHT dhe NATURAL.

Krijimi i lidhjes themelore


N disa nga shembujt deri tani kemi par prdorimin e urdhrit SELECT ku te tabela referuese kemi zgjedhur vetm nj tabel. Te lidhja themelore tani n vend t nj tabele te fjala kye FROM prdorim m shum se nj tabel (si shihet edhe nga sintaksa). Kt m mir do ta kuptojm me nj shembull: SELECT Emri, Mbiemri, Shuma FROM Klientet, Kredite; Ky urdhr sht i ngjashm me urdhrat SELECT t msuar m hert, dallimi sht te fjala kye FROM e cila prmban dy tabela: Klientet dhe Kredite. Te urdhi SELECT kemi zgjedh dy fushat e para nga tabela Klientet dhe fushn Shuma nga tabela Kredite. 146

BAZAT E T DHNAVE Nga ky shembull lidhja sht definuar n dy tabela por vet lidhja nuk sht e kufizuar. Fushat e zgjedhura n fjaln kye SELECT nuk kan ndonj efekt se si do t definohet vet lidhja. Kur nj lidhje nuk sht e kufizuar n do mnyr kthen si rezultat do rresht t nj tabele me do rresht t tabels tjetr. Ky tip i rezultatit quhet Prodhimi Kartezian. Nga ky shembull tabela e par ka 7 t dhna, ndrsa tabela e dyt ka 9 t dhna, dhe si rezultat paraqiten 7x9 t dhna pra 63 t dhna. Shfrytzimi i lidhjes pr kthimin e rezultatit si prodhim kartezian nuk sht e dobishme. Kjo sht shkaku se nse bjm lidhjen e tri tabelave q kan nga 100 t dhna ather prodhimi kartezian i tyre do t jet nj million t dhna. sht e dobishme q me prdorimin e lidhjes themelore t shtohen kushtet e nevojshme n fjaln kye HERE n mnyr q t kufizohet lidhja. P.SH. urdhri i mposhtm sht i ngjashm me at m par, me prjashtim t fjals kye WHERE: SELECT Emri, Mbiemri, Shuma FROM Klientet, Kredite WHERE Klientet.Numri=Kredite.Numri; Tani me fjaln WHERE kemi vn nj kusht q definon kufizimin e lidhjes. Pra t dnat q do t paraqiten si rezultat i ekzekutimit t ktij urdhri jan : t gjitha t dhnat ku vlera n fushn Numri sht e barabart n t dy tabelat. N shembullin ton do t kthehen 9 t dhna. Mund t prdorim edhe pseudonimet si mposht: SELECT Emri, Mbiemri, Shuma FROM Klientet AS A, Kredite AS B WHERE A.Numri=B.Numri; Te fjala kye HERE mund t vejm edhe kushte tjera, operator logjik, shprehje q kufizojn lidhjen. P.SH. urdhri i mposhtm kthen si rezultat vetm ato t dhna q n fushn Shuma kan vler m t madhe se 1400. SELECT Emri, Mbiemri, Shuma FROM Klientet, Kredite WHERE Klientet.Numri=Kredite.Numri AND Shuma >1400; Tani si rezultat kthehen vetm 4 t dhna q plotsojn kushtet (Shembujt gjenden n ftp://comp-253 BAZAT E T DHNAVE).

147

BAZAT E T DHNAVE

Lidhja INNER dhe CROSS


Kur sht fjala te lidhjet MySQL sht i pajisur me mundsi t shumta q japin t njjtin rezultat. Pr shembull mund t krijojm INNER dhe CROSS lidhje q japin t njjtin rezultat si lidhja themelore. Shohim sintaksn pr INNER dhe CROSS lidhjen: {<tabela referuese> [INNER | CROSS ] JOIN <tabela referuese> [<kushtet e lidhjes>]} <kushtet e lidhjes>::= ON <shprehje> [{<operator> <shprehje>}...] | USING (<fush> [{, <fush>}...]) Si shihet nga sintaksa duhet t shkruajm tabeln referuese pastaj opsionet INNER ose CROSS pastaj fjaln kye JOIN dhe tabeln e dyt referuese dhe n fund opsioni ndonj kusht. Ky kusht prmban fjalt kye ON dhe USING. Me an t ktyre fjave kye defnojm kushtin. Kushti te lidhja themelore definohej me fjaln kye HERE, ndrsa te INNER dhe CROSS lidhjet definohet me an t < kushtet e lidhjes >. N prgjithsi caktimi i fjalve INNER dhe CROSS jep rezultat t njjt sikur t mos ishin shkruar fare. Kur nuk sht shkruar as INNER dhe CROSS ather nnkuptohet t jet lidhje CROSS. Nse nuk vejm <kushtet e lidhjes> ather rezultati i fituar do t jet i njjt me at t lidhjes themelore, pra prodhim kartezian. Ja edhe disa shembuj: SELECT Emri, Mbiemri, Shuma FROM Klientet, Kredite; SELECT Emri, Mbiemri, Shuma FROM Klientet JOIN Kredite; SELECT Emri, Mbiemri, Shuma FROM Klientet INNER JOIN Kredite; SELECT Emri, Mbiemri, Shuma FROM Klientet CROSS JOIN Kredite; Secili urdhr kthen si rezultat 63 t dhna (rreshta), pra si prodhimi kartezian. Pr kufizimin e lidhjes INNER dhe CROSS e bjm me an t fjalve ON ose USING. Ja edhe nj shembull me fjaln ON: SELECT Emri, Mbiemri, Shuma FROM Klientet AS A JOIN Kredite AS B ON A.Numri=B.Numri; Pra tani me fjaln FROM definuam lidhjen. M mir s ndarjen e tabelave t lidhura me presje prdorm fjaln kye JOIN. Pastaj me an t fjals ON caktuam se vlerat n fushat Numri te t dy tabelat duhet t jet i barabart n mnyr q t paraqiten n rezultat. Me definimin e kushtit te fjala kye ON rezultati nga shembulli kufizohet n 9 t dhna. Mund t fitojm t njjtin rezultat edhe me fjaln kye USING pr kufizimin e lidhjes. SELECT Emri, Mbiemri, Shuma FROM Klientet AS A JOIN Kredite AS B USING(Numri); 148

BAZAT E T DHNAVE Si mund t shihet te fjala kye USING sht e nevojshme caktimi i fushave t lidhura ( n kllapa t vogla). Kjo mund t shfrytzohet vetm kur fushat e lidhura n t dy tabelat kan emr t njjt. Nse bjm lidhjen n m shum se nj fush ather ato shkruhen t ndara me presje mes veti. Njsoj sit e lidhja themelore edhe ktu mund t kufizojm lidhjen me an t kushteve WHERE si mposht: SELECT Emri, Mbiemri, Shuma FROM Klientet JOIN Kredite ON Klientet.Numri=Kredite.Numri WHERE Shuma >1400; Kur t bjm definimin e lidhjeve INNER dhe CROSS duhet t prcaktojm fushat e lidhura duke shfrytzuar fjalt kye ON ose USING dhe kushte tjera te fjala kye WHERE. Poashtu mund t vejm kushte te WHERE sit e lidhja themelore duke mos shfrytzuar fjalt kye ON ose USING. Por urdhrat jan m leht t lexueshm nse prdorim fjalt kye ON ose USING.

Lidhja STRAIGHT_JOIN
Nj tip tjetr i lidhjes sht lidhja direkte ( straight join) e cila sht e ngjashme me lidhjen themelore n disa aspekte. Dallimi kryesor sht se lidhja direkte mundson zgjedhjen e optimizuesit t lidhjes i cili s pari bn leximin e tabels n t majt e pastaj asaj n t djatht (Optimizuesi i lidhjes sht nj komponent e MySQL serverit i cili mundohet t gjej mnyrn m t mir pr procesimin e lidhjes). Pra lidhja direkte shfrytzohet ather kur mendojm se optimizuesi i lidhjes nuk sht duke br mir procesimin e e urdhrit SELECT. N t shumtn e rasteve duhet t mbshtetemi te optimizuesi i lidhjes. Pr krijimin e nj lidhje direkte shfrytzojm sintaksn: <tabela referuese> STRAIGHT_JOIN <tabela referuese> Pra nga sintaksa shihet q s pari duhet t caktohet tabela referuese e prcjellur nga fjala kye STRAIGHT_JOIN pastaj nga nj tabel tjetr referuese. Shembull: SELECT Emri, Mbiemri, Shuma FROM Klientet STRAIGHT_JOIN Kredite WHERE Klientet.Numri=Kredite.Numri AND Shuma>1400; Pas ekzekutimit t ktij urdhri marrim rezultat t njjt sit e lidhjet e tjera. Nj gj vrehet, te lidhja direkte sikur edhe te lidhja themelore lidhja sht kufizuar me fjaln kye WHERE e jo me fjalt kye ON ose USING. N fakt i vetmi dallim ndrmjet lidhjes direkte me at themelore sht n sintaks, te lidhja direkte shfrytzohet fjala kye STRAIGHT_JOIN pr ndarjen e tabelave referuese ndrsa te lidhja themelore kjo gj bhet me an t presjes. 149

BAZAT E T DHNAVE MySQL ofron edhe nj metod pr krijimin e lidhjes direkte. N vend t prdorimit t lidhjes direkte n fjaln kye FROM prdorim sintaksn e lidhjes direkte dhe caktojm opsionin STRAIGHT_JOIN te fjala kye SELECT sin shembullin e mposhtm: SELECT STRAIGHT_JOIN Emri, Mbiemri, Shuma FROM Klientet, Kredite WHERE Klientet.Numri=Kredite.Numri AND Shuma>1400; Shihet se te fjala kye FROM tabelat referuese jan t ndara me presje q sht tipike pr lidhjen themelore. Por urdhri SELECT prmban opsionin STRAIGHT_JOIN. Ekzekutimi i ktij urdhri jep rezultat t njjt me at m par.

Krijimi i lidhjeve t jashtme (Outer joins)


Prveq lidhjeve q kthehin si rezultat prodhimin kartezian, lidhjet tjera q i pam deri tani ishin ato q kthehin si rezultat vetm t dhnat q prmbanin vlera t njjta n fusha t caktuara. Supozojm q dshirojm t shohim t dhna q nuk i plotsojn kto kushte, por jo q rezultati t mos jet numr i madh i rreshtave. P.SH. m hert shikuam t dhna nga tabela Klientt dhe tabela Kredit, ku kemi krkuar q si rezultat t paraqiten vetm t dhnat q plotsojn kushtin q: fusha Numri n tabeln Klientet dhe fusha Numri n tabeln Kredit t jen t barabart. Por nse tabela Klientt do t prmbante ndonj klient q nuk ka marr asnj kredi. MySQL ofron mundsin e shikimit t ktyre klientve duke prdor lidhjet e jashtme (outer joins). Mund t krijojm dy tipe t lidhjeve t jashtme: lidhja e majt dhe lidhja e djatht. Lidhja e majt nxjerr t gjitha t dhnat nga tabela e majt, ndrsa lidhja e djatht nxjerr t gjitha t dhnat nga tabela e djatht. Figura e mposhtme tregon diagramin e Venn-it pr lidhjen e majt. Rrethi n t majt sht tabela Klientt dhe rrethi n t djatht paraqet tabeln Kredit. Diagrami i Venn-it ilustron lidhjen e ktyre dy tabelave. Vlerat n t majt jan nga tabela Klientt ndrsa vlerat n t djatht jan nga tabela Kredit.N lidhjen [INNER|CROSS] JOIN si rezultat jan paraqitur vetm t dhnat q kan plotsuar kushtin Klientet.Numri=Kredite.Numri, kto t dhna jan paraqitur n prerjen e dy rrathve. Si mund t shihet do klienti i korrespondon nj kredi ose m shum kredi. Por n figur shihet se klienti Bujar Krasniqi nuk sht n rezultat pr shkak t lidhjes JOIN. Pasi q kjo sht lidhje e jashtme e majt (left outer join) klienti Bujar Krasniqi do t jet n rezultat por vlera q korrespondon sht NULL.

150

BAZAT E T DHNAVE

Lidhja e jashtme e majt (Left outer join)


Sintaksa pr lidhjen e jashtme t majt sht e njjt me at t INNER dhe CROSS JOIN, vetm se duhet t prfshihet fjala kye LEFT, si sht treguar n sintaksn e mposhtme: <tabela referuese> LEFT [OUTER] JOIN <tabela referuese> [<kushtet e lidhjes>] <kushtet e lidhjes>::= ON <shprehje> [{<operator> <shprehje>}...] | USING (<fush> [{, <fush>}...]) Pra s pari specifikojm tabeln referuese t prcjellur nga fjala kye LEFT dhe opsioni OUTER pastaj fjala kye JOIN. Kjo pastaj prcjellet nga nj tabel tjetr referuese dhe kushtet e lidhjes, t cilat mund t jen fjalt kye ON dhe USING. Shembull: Urdhri i mposhtm definon lidhjen e jashtme t majt n tabelat Klientt dhe Kredit.

151

BAZAT E T DHNAVE SELECT Emri, Mbiemri, Tipi_i_Kredise FROM Klientet LEFT JOIN Kredite ON Klientet.Numri=Kredite.Numri ORDER BY Emri; Mund t shihet q fjala kye FROM s pari i referohet tabels Klientet dhe pastaj i referohet tabels Kredite. Si rezultat paraqiten t gjitha t dhnat nga tabela Klientet (tabela e majt) dhe vetm t dhnat nga tabela Kredite (tabela e djatht) q e plotsojn kushtin e lidhjes te fjala kye ON. Sikur n tabeln e mposhtme

Nse i referohemi rreshtit t pest shohim se sht kthyer vlera NULL pr fushn Tipi_i_kredise. sht kthyer vlera NULL sepse klienti Bujar Krasniqi nuk ka marr asnj kredi. Pra nse vlera n tabeln e majt nuk ka ndonj vler lidhse n tabeln e djatht ather i ndahet vlera NULL vlers s tabels s djatht. Mund t fitojm rezultat t njjt edhe me fjaln kye USING, si mposht: SELECT Emri, Mbiemri, Tipi_i_Kredise FROM Klientet LEFT JOIN Kredite USING(Numri) ORDER BY Emri; Poashtu mund t bjm lidhje t jashtme t majt edhe pr m shum se dy tabela. Shembull: SELECT BookTitle, Copyright, AuthFN, AuthMN, AuthLN FROM Books AS b LEFT JOIN AuthorBook AS ab ON b.BookID=ab.BookID LEFT JOIN Authors AS a ON ab.AuthID=a.AuthID ORDER BY BookTitle;

152

BAZAT E T DHNAVE

Lidhja e jashtme e djatht (Right outer join)


Lidhja e jashtme e djatht sht e ngjashme me lidhjen e jashtme t djatht, vetm se dallimi qndron q t dhnat kthehen nga tabela e djatht. Ja edhe sintaksa q tregon definimin e lidhjes s djatht t jashtme: <tabela referuese> RIGHT [OUTER] JOIN <tabela referuese> [<kushtet e lidhjes>] <kushtet e lidhjes>::= ON <shprehje> [{<operator> <shprehje>}...] | USING (<fush> [{, <fush>}...]) Si mund t shihet sintaksa sht gati e njjt me at t lidhjes s majt, prveq fjals kye RIGHT. Tani le t shohim nj shembull: Tab1

Tab2

Si fitohet ky rezultat (Tab3) nga tabelat Tab1 dhe Tab2: Tab3

153

BAZAT E T DHNAVE SELECT Tab2.Numri, Tab2.Profesioni, Tab2.Institucioni, Tab1.Emri, Tab1.Qyteti FROM Tab1 RIGHT JOIN Tab2 ON Tab1.Numri=Tab2.Numri; N shembullin e msiprm do t fitohet rezultat i njjt edhe n rastin e lidhjes s jashtme t majt vetm se tabela e par referuese duhet t jet Tab2 pastaj tabela e dyt referuese do t jet Tab1. Tab2 LEFT JOIN Tab1 Si fitohet rezultati (Tab4) i mposhtm nga tabelat Tab1 dhe Tab2 Tab4

SELECT Tab2.Numri, Tab2.Profesioni, Tab2.Institucioni, Tab1.Emri, Tab1.Qyteti FROM Tab1 LEFT JOIN Tab2 ON Tab1.Numri=Tab2.Numri; Edhe n kt shembull si m lart fitohet rezultat i njjt edhe me lidhjen e jashtme t djatht: Tab2 RIGHT Tab1

Krijimi i lidhjes NATURAL


Nj lidhje tjetr q mund t prcaktohen n urdhrin SELECT sht lidhja NATURAL. Kjo lidhje mund t prcaktohet si lidhje INNER ose CROSS, ose lidhje e jashtme e majt, ose lidhje e jashtme e djatht. Sintaksa n vijim tregon definimin e lidhjes NATURAL: <tabela referuese> NATURAL [{LEFT | RIGHT} [OUTER]] JOIN <tabela referuese> Nga sintaksa shohim se nuk bhet definimi i kushteve t lidhjes. Lidhja NATURAL automatikisht bn lidhjen e tabelave prmes fushave me emr t njjt. P.SH. nse bjm lidhjen e tabels Klientt dhe tabels Kredit, ather lidhja NATURAL do t definoj automatikisht lidhjen me fushat Numri t t dy tabelave.

154

BAZAT E T DHNAVE Pr krijimin e nj lidhje NATURAL duhet t shkruhet s pari tabela referuese pastaj fjala kye NATURAL JOIN dhe tabela e dyt referuese. Nse i fusim vetm kto elemente do t krijojm lidhje [ INNER | CROSS ] JOIN. Nse prcaktojm fjalt kye LEFT ose LEFT OUTER ather jemi duke krijuar lidhje t majt, ndrsa nse prcaktojm fjalt kye RIGHT ose RIGHT OUTER jemi duke krijuar lidhje t djatht. Shembull: Me ekzekutimin e ktij urdhri SELECT Emri, Mbiemri, Tipi_i_kredise FROM Klientet NATURAL JOIN Kredite; do t fitojm rezultat t njjt sikurse me lidhjen [ INNER | CROSS ] JOIN, pra urdhri i msiprm jep rezultat t njjt sikur urdhri: SELECT Emri, Mbiemri, Tipi_i_kredise FROM Klientet INNER JOIN Kredite ON Klientet.Numri=Kredite.Numri; Shihet q te urdhri NATURAL JOIN nuk sht br definimi i kushteve t lidhjes sit e lidhja e INNER JOIN, nuk ka fjal kye ON ose USING. Pra lidhja NATURAL automatikisht e bn lidhjen ndrmjet tabelave n fushat me emr t njjt. Nse dshirojm lidhje t majt t jashtme vetm duhet t prcaktohet fjala LEFT ose LEFT OUTER: SELECT Emri, Mbiemri, Tipi_i_kredise FROM Klientet NATURAL LEFT JOIN Kredite; Nse dshirojm lidhje t djatht t jashtme vetm duhet t prcaktohet fjala RIGHT ose RIGHT OUTER: SELECT Emri, Mbiemri, Tipi_i_kredise FROM Klientet NATURAL RIGHT JOIN Kredite; Rezultatet jan t njjt sikur te shembujt te lidhjet LEFT dhe RIGHT. Por nse n dy tabela q dshirojm t bjm lidhje NATURAL dhe n ato dy tabela nuk ekzistojn fusha me emr t njjt ather si rezultat do t fitojm prodhimin kartezian t t dhnave t atyre tabelave.

155

BAZAT E T DHNAVE

Bashkimi i tabelave n urdhrin SELECT


Nse dshirojm t bashkojm rezultatet q dalin nga urdhrat SELECT n nj rezultat ather nj mnyr e leht pr t br kt sht me an t operatorit UNION, ja edhe sintaksa: <urdhri select> UNION <urdhri select> Me bashkimin e dy urdhrave n kt mnyr kthen si rezultat numrin e njjt t fushave q i korrespondojn secilit urdhr dhe tipin e t dhnave t njjt. P.SH. nse me urdhrin e par marrim si rezultat dy fusha Fusha1 dhe Fusha2. Ku Fusha1 e ka tipin e t dhnave INT ndrsa Fusha2 tipin e t dhnave CHAR. Ather si rezultat duhet q urdhri i dyt t kthej dy fusha me tipe t t dhnav INT dhe CHAR prkatsisht. SELECT Emri, Mbiemri FROM Klientet UNION SELECT Numri, Tipi_i_kredise FROM Kredite;

Funksionet
M hert msuam pr shprehjet n SQL urdhrat. Q shprehjet t jen m t fuqishme dhe specifike kemi prdor elemente si funksionet. Secili funksion kryen nj pun t caktuar dhe kthen nj vler q sht rezultat i puns s caktuar. Pr shum funksione duhet t japim m shum se nj argument q i ndahen si vler do parametri q prdoret n funksion pr kryerjen e nj pune t caktuar. Kto pun mund t jen kalkulime t t dhnave numerike, manipulimi it dhnave string, manipulime me data e shum operacione tjera. Funksionet ndahen n funksione pr dat dhe koh, funksione pr stringje, funksione numerike dhe funksionet aggregate.

Funksionet pr dat dhe koh


Funksionet pr dat prdoren kur kemi t bjm me dat dhe koh, si kthimin e nj date t caktuar. CURRENT_DATE( ) Kthen si rezultat datn aktuale n formn si string YYYY-MM-DD ose si vler numerike YYYYMMDD. Shembull: mysql> SELECT CURRENT_DATE(); +----------------+ | CURRENT_DATE() | +----------------+ | 2007-01-11 | +----------------+ 156

BAZAT E T DHNAVE mysql> SELECT CURRENT_DATE()+1; +------------------+ | CURRENT_DATE()+1 | +------------------+ | 20070112 | +------------------+ CURRENT_TIME( ) Kthen si rezultat kohn aktuale, si string hh:mm:ss ose si numr hhmmss. mysql> SELECT CURRENT_TIME(); +----------------+ | CURRENT_TIME() | +----------------+ | 23:53:15 | +----------------+ mysql> SELECT CURRENT_TIME() + 1; +--------------------+ | CURRENT_TIME() + 1 | +--------------------+ | 235434 | +--------------------+ DAYNAME( ) Kthen si rezultat emrin e dits n datn e caktuar. mysql> SELECT DAYNAME(' 2007-01-11' ); +-----------------------+ | DAYNAME('2007-01-11') | +-----------------------+ | Thursday | +-----------------------+ Pastaj jan funksionet DAYOFMONTH( ), DAYOFWEEK( ) dhe DAYOFYEAR( ) q kthejn si rezultat ditn e muajit, ditn e javs dhe ditn e vitit t dats s caktuar prkatsisht. Funksioni HOUR( ) MINUTE ( ) MONTH( ) Prshkrimi Kthen orn pr kohn e caktuar Kthen minutat pr kohn e caktuar Kthen muajin pr datn e caktuar Shembull SELECT HOUR(06:59:03); SELECT MINUTE(00:01:03); SELECT MONTH(2007-12-21); Rezultati 6 1 12 157

BAZAT E T DHNAVE Kthen emrin e muajit pr datn e caktuar Kthen datn dhe kohn aktuale SELECT MONTHNAME(2006-1221); SELECT NOW( )

MONTHNAME( )

December 2007-0111 12:00:00

NOW( )

Kto jan disa nga funksionet e shumta pr dat dhe koh.

Funksionet pr string
T gjitha funksionet string marrin si argument string dhe kthejn si rezultat nj string. ASCII( ) Kthen si rezultat vlern ASCII t karakterit t par nga e majta, kthen 0 kur stringu sht i zbrazt dhe NULL kur stringu ka vlern NULL. mysql> SELECT ASCII(' a' ); +------------+ | ASCII('a') | +------------+ | 97 | +------------+ mysql> SELECT ASCII(' aza' ); +-------------+ | ASCII('az') | +-------------+ | 97 | +-------------+ mysql> SELECT ASCII(' ' ); +------------+ | ASCII('') | +------------+ | 0 | +------------+ mysql> SELECT ASCII(NULL); +------------+ | ASCII('a') | +------------+ | NULL| +------------+

158

BAZAT E T DHNAVE BIN( ) Kthen si rezultat vlern binare pr ndonj numr (BIGINT), kthen vlern 0 nse numri nuk mund t konvertohet (funksioni do t konvertoj derisa mundet nga e majta) dhe NULL nse sht NULL. mysql> SELECT BIN(15); +---------+ | BIN(15) | +---------+ | 1111 | +---------+ mysql> SELECT BIN(' 8' ); +----------+ | BIN('8') | +----------+ | 1000 | +----------+ mysql> SELECT BIN(' 2w' ); +-----------+ | BIN('2w') | +-----------+ | 10 | +-----------+ mysql> SELECT BIN(' 2' ); +-----------+ | BIN('w2') | +-----------+ | 0 | +-----------+ Ky funksion sht ekuivalent me funksionin CONV(numri,10,2). CHAR( ) Kthen si rezultat karakteret sikur secili numr t jet i konvertuar nga ASCII kodi. Numrat decimal rrumbullaksohen me vlern m t afrt. mysql> SELECT CHAR(97,101,105,111,117); +--------------------------+ | CHAR(97,101,105,111,117) | +--------------------------+ | aeiou | +--------------------------+ mysql> SELECT CHAR(97.6,101,105,111,117); +----------------------------+ | CHAR(0.97,101,105,111,117) | +----------------------------+ | beiou | +----------------------------+ 159

BAZAT E T DHNAVE CONCAT( ) Lidh dy argumentet stringje dhe kthen si rezultat, NULL nse argumenti sht NULL. Argumentet q nuk jan stringje kthehen n stringje. mysql> SELECT CONCAT(' a' ,' b' ); +-----------------+ | CONCAT('a','b') | +-----------------+ | ab | +-----------------+ mysql> SELECT CONCAT(' a' ,12); +----------------+ | CONCAT('a',12) | +----------------+ | a12 | +----------------+ CONCAT_WS( ) sht e ngjashme me CONCAT( ) vetm se argumenti i par sht separator q vhet n mes secilit argument. mysql> SELECT CONCAT_WS(' -' ,' a' ,' b' ); +------------------------+ | CONCAT_S('-','a','b') | +------------------------+ | a-b | +------------------------+ mysql> SELECT CONCAT_WS(' -' ,' a' ,' b' ,c); +----------------------------+ | CONCAT_S('-','a','b',c) | +----------------------------+ | a-b-c | +----------------------------+ CONV( ) sht funksion q bn konvertimin e numrave nga nj baz te tjetra. CONV(numri, prej cils baz, te cila baz) CONV(10,10,2) d.m.th Numrin 10 konverto nga baza 10 n bazn 2. CONV(3f,16,10)d.m.th. konverto numrin 3f nga baza heksadecimale n at dhjetshe. CONV(a,16,2) d,m,th. Konverto numrin a nga baza 16 n bazn 2 etj.

160

BAZAT E T DHNAVE HEX( ) Kthen vlern heksadecimale pr nj numr, kthen vlern 0 nse nuk mund t konvertoj numrin dhe NULL pr vlern NULL. mysql> SELECT HEX(13); +---------+ | HEX(13) | +---------+ | D | +---------+ LENGTH( ) Kthen gjatsin n karakter t stringut. mysql> SELECT LENGTH(' MySQL' ); +-----------------+ | LENGTH('MySQL') | +-----------------+ | 5 | +-----------------+ mysql> SELECT LENGTH(99); +------------+ | LENGTH(99) | +------------+ | 2 | +------------+ LOER( ) Kthen si rezultat t gjith karaktert n shkronja t vogla. mysql> SELECT LOWER(' AbC' ); +--------------+ | LOER('AbC') | +--------------+ | abc | +--------------+ UPPER( ) Kthen si rezultat t gjith karaktert n shkronja t mdha. mysql> SELECT UPPER(' aBc' ); +--------------+ | UPPER('aBc') | +--------------+ | ABC | +--------------+ Kto jan disa nga funksionet pr stringje. 161

BAZAT E T DHNAVE Funksionet numerike Funksionet numerike prdoren pr kalkulime, ku si argument marrin m s shpeshti numr. N rast t ndonj gabimi ato lajmrojn pr gabim. Duhet t kemi kujdes q t mos e kalojm intervalin e tipit t t dhnave. Shumica e funksioneve punojn me tipin e t dhnave BIGINT (263 SIGNED ose 264 UNSIGNED). ABS( ) Kthen vlern absolute t nj numri. mysql> SELECT ABS(24-26); +------------+ | ABS(24-26) | +------------+ | 2 | +------------+ DEGREES( ) Konverton radiant n shkall. mysql> SELECT DEGREES(2); +-----------------+ | DEGREES(2) | +-----------------+ | 114.59155902616 | +-----------------+ mysql> SELECT DEGREES(PI()/2); +-----------------+ | DEGREES(PI()/2) | +-----------------+ | 90 | +-----------------+ EXP( ) Kthen si rezultat numrin e t ngritur n fuqi me numrin e caktuar. mysql> SELECT EXP(1); +----------+ | EXP(1) | +----------+ | 2.718282 | +----------+

162

BAZAT E T DHNAVE LN( ) Kthen si rezultat logaritmin natyral t numrit t caktuar. mysql> SELECT LN(2.3); +-----------------+ | LN(2.3) | +-----------------+ | 0.8329091229351 | +-----------------+ LOG10( ) Kthen si rezultat logaritmin me baz dhjet t numrit t caktuar. mysql> SELECT LOG10(100); +------------+ | LOG10(100) | +------------+ | 2.000000 | +------------+ MOD( ) Kthen modulin e dy numrave t caktuar (pra mbetjen e pjestimit t atyre numrave). mysql> SELECT MOD(15,4); +-----------+ | MOD(15,4) | +-----------+ | 3 | +-----------+ PI( ) Kthen vlern e pi-s. mysql> SELECT PI(); +----------+ | PI() | +----------+ | 3.141593 | +----------+

163

BAZAT E T DHNAVE POWER( ) Kthen si rezultat argumentin e par t ngritur n fuqi n argumentin e dyt. mysql> SELECT POER(2,3); +------------+ | POER(2,3) | +------------+ | 8.000000 | +------------+ RADIANS( ) Konverton numrin e shkallve n radian. mysql> SELECT RADIANS(180); +-----------------+ | RADIANS(180) | +-----------------+ | 3.1415926535898 | +-----------------+ SQRT( ) Kthen rrnjn katrore t numrit t caktuar. mysql> SELECT SQRT(81); +----------+ | SQRT(81) | +----------+ | 9.000000 | +----------+ TRUNCATE( ) Cungon numrin e caktuar deri te numri i caktuar i decimaleve. mysql> SELECT TRUNCATE(2.234,2); +-------------------+ | TRUNCATE(2.234,2) | +-------------------+ | 2.23 | +-------------------+ mysql> SELECT TRUNCATE(2.998,0); +-------------------+ | TRUNCATE(2.998,0) | +-------------------+ | 2 | +-------------------+ 164

BAZAT E T DHNAVE Funksioni SIN( ) COS( ) TAN( ) COT( ) ASIN( ) ACOS( ) ATAN( ) Prshkrimi Kthen sinusin e numrit t caktuar n radian Kthen kosinusin e numrit t caktuar n radian Kthen tangjentin pr numrin e caktuar n radian Kthen kotangjentin pr numrin e caktuar n radian Kthen vler e arkus sinusit t numrit t caktuar Kthen vler e arkus kosinusit t numrit t caktuar Kthen arkus tangjentin pr numrin e caktuar n radian Shembull SELECT SIN(5.14); SELECT COS(5.14); SELECT TAN(5.14); SELECT COT(5.14); SELECT ASIN(0.5); SELECT ACOS(0.5); SELECT ATAN(5.14); Rezultati 0.850904 0.525322 1.619775 0.617370 0.523599 1.047198 1.548578

GREATEST( ) Kthen si rezultat argumentin me vler m t madhe. mysql> SELECT GREATEST(-3,-4,5); +-------------------+ | GREATEST(-3,-4,5) | +-------------------+ | 5 | +-------------------+ mysql> SELECT GREATEST(' Pa' ,' Ma' ,' Ca' ); +--------------------------+ | GREATEST('Pa','Ma','Ca') | +--------------------------+ | Pa | +--------------------------+ LEAST( ) Kthen si rezultat argumentin me vler m t vogl. mysql> SELECT LEAST(-3,-4,5); +----------------+ | LEAST(-3,-4,5) | +----------------+ | -4 | +----------------+ 165

BAZAT E T DHNAVE mysql> SELECT LEAST(' Pa' ,' Ma' ,' Ca' ); +-----------------------+ | LEAST('Pa','Ma','Ca') | +-----------------------+ | Ca | +-----------------------+ Funksionet aggregate Funksionet aggregate jan funksione q bjn grupimin e t dhnave( duke supozuar q sht prdor fjala kye GROUP BY). AVG( ) Kthen vlern mesatare t ndonj shprehje. Kthen vlern 0 nse shprehja nuk sht tip i t dhnave numerik. mysql> SELECT AVG(Shuma) FROM Kredite; +-------------+ | AVG(Shuma) | +-------------+ | 6948.8889 | +-------------+ mysql> SELECT AVG(Shuma) FROM Kredite WHERE Shuma>1000; +-------------+ | AVG(Shuma) | +-------------+ | 12056.0000| +-------------+ COUNT( ) Kthen numrin e vlerave jo-boshe n nj fush. mysql> SELECT COUNT(Emri) FROM Klientet; +-------------+ | COUNT(Emri) | +-------------+ | 6 | +-------------+ mysql> SELECT COUNT(Emri) FROM Klientet WHERE Emri LIKE B%; +-------------+ | COUNT(Emri) | +-------------+ | 2 | +-------------+ 166

BAZAT E T DHNAVE MAX( ) Kthen vlern maksimale t nj shprehje. Shprehja mund t jet numerike dhe string. mysql> SELECT MAX(Shuma) FROM Kredite; +-------------+ | MAX(Shuma) | +-------------+ | 45000 | +-------------+ mysql> SELECT MAX(Emri) FROM Klientet; +-------------+ | MAX(Emri) | +-------------+ | Valbona | +-------------+ MIN( ) Kthen vlern m t vogl t nj shprehje, shprehja mund t jet numerike dhe string. mysql> SELECT MIN(Shuma) FROM Kredite; +-------------+ | MIN(Shuma) | +-------------+ | 420 | +-------------+ mysql> SELECT MIN(Perqindja) FROM Kredite; +--------------+ |MIN(Perqindja)| +--------------+ | 3 | +--------------+ STD( ) Kthen devijimin standard pr vlerat n shprehje. mysql> SELECT STD(Shuma) FROM Kredite; +-------------+ | STD(Shuma) | +-------------+ | 13634.8862 | +-------------+ 167

BAZAT E T DHNAVE mysql> SELECT STD(Perqindja) FROM Kredite; +--------------+ |STD(Perqindja)| +--------------+ | 1.6330 | +--------------+ SUM( ) Kthen si rezultat shumn e vlerave t nj fushe ose shprehje. mysql> SELECT SUM(Shuma) FROM Kredite; +-------------+ | SUM(Shuma) | +-------------+ | 62540 | +-------------+ mysql> SELECT SUM(Shuma) FROM Kredite WHERE Perqindja>6; +-------------+ | SUM(Shuma) | +-------------+ | 7390 | +-------------+

168

BAZAT E T DHNAVE

PROCEDURAT E RUAJTURA (STORED PROCEDURES)


Procedurat e ruajtura jan nj tip i programit t ruajtur, t cilat jan t prgjithshme q ekzekutohen n krkes t klientit dhe mund t marrin vlera hyrse dhe t japin vlera dalse. Prdorimi i procedurave t ruajtura e bn nj baz t t dhnave m t sigurt, ofrojn mekanizma pr mirmbajtjen e bazs s t dhnave, bjn zvoglimin e trafikut n rrjet sepse programi punon me t dhna n server se sa transferi i tyre npr rrjet etj. Kodi pr t gjitha procedurat e ruajtura shkruhet n MySQL Query Browser i cili mund t mirret nga http://dev.mysql.com . Krijimi i procedurs s ruajtur Hapim MySQL Query Browser shkojm t File New Script tab dhe shkruajm kodin pr at procedur. Pr krijimin e nj procedure prdoret urdhri CREATE PROCEDURE< emri_i_procedurs> ( [<argumenti> <tipi_i_t_dhnave [{, <argumenti> <tipi_i_t_dhnave }...]]) Pastaj fillojm me bllokun BEGIN , brenda ktij blloku shkruajm kodin dhe e mbyllim me END. Kjo ka nj ngjashmri me gjuhn programuese PASCAL.

Shembull: Shkruajm nj procedur q si rezultat do t jap shprehjen Tungjatjeta bot . DELIMITER $$ CREATE PROCEDURE ` TUNG` () begin SELECT ' TUNGJATJETA BOT' ; end $$ DELIMITER; E ruajm kt procedur me TUNG.sql pra emri i njjt si i procedurs, dhe e ekzekutojm. Ekzekutimi i procedurs s ruajtur bhet kshtu: 169

BAZAT E T DHNAVE CALL <emri_i_procedurs>([parametrat]); Pra CALL TUNG( ); dhe rezultati do t jet: mysql> CALL TUNG( ); +-----------------+ |TUNGJATJETA BOT | +-----------------+ |TUNGJATJETA BOT | +-----------------+ 1 row in set (0.01 sec) Tani krijojm nj procedur me an t cils do ti shohim t dhnat nga tabela Klientt. DELIMITER $$ CREATE PROCEDURE ` TE_DHENAT` () begin SELECT * FROM klientet; end $$ DELIMITER; E ruajm gjithmon me emrin e procedurs TE_DHENAT.sql dhe e ekzekutojm. Do t fitojm t gjitha t dhnat e tabels Klientt. Procedurat si u cek n fillim mund t marrin parametra, kjo gj sigurohet gjat shkruarjes s kodit. Krijojm nj procedur q merr si parametra vlera q do t shtohen n nj tabel. Tani krijojm nj procedur pr shtimin e t dhnave n tabeln Klientt. DELIMITER $$ CREATE PROCEDURE ` SHTO_TE_DHENAT` (Numri VARCHAR(10), Emri VARCHAR(20),Mbiemri VARCHAR(20),Qyteti VARCHAR(20), Adresa VARCHAR(20),Tel VARCHAR(15) ) begin INSERT INTO Klientet VALUES (Numri,Emri,Mbiemri,Qyteti,Adresa,Tel); end $$ DELIMITER ; E ruajm me emrin SHTO_TE_DHENAT.sql dhe e ekzekutojm. Tani ekzekutimi i ksaj procedure bhet kshtu: CALL SHTO_TE_DHENAT(140207,ARSIM,BAJRAMAJ,BURIM,rr.A, 044/123-789); Pas ekzekutimit t ksaj procedure do t shohim se n tabeln Klientt sht shtuar nj e dhn, pikrisht parametrat e procedurs.

170

BAZAT E T DHNAVE Brenda kodit t procedurs mund t thrrasim procedur tjetr. Ja nj shembull si kombinim i shembujve t mparshm. Shembull: Krijojm procedurn q do t shtoj t dhna n tabeln Klientt por edhe do t thrret procedurn TE_DHENAT me an t s cils do ti shohim t dhnat nga tabela Klientt. DELIMITER $$ CREATE PROCEDURE ` SHTO_SHIKO_TE_DHENAT` (Numri VARCHAR(10), Emri VARCHAR(20),Mbiemri VARCHAR(20),Qyteti VARCHAR(20), Adresa VARCHAR(20),Tel VARCHAR(15) ) begin INSERT INTO Klientet VALUES (Numri,Emri,Mbiemri,Qyteti,Adresa,Tel); CALL TE_DHENAT(); end $$ DELIMITER ; Pra brenda kodit t procedurs u thirr procedura TE_DHENAT( ). CALL TE_DHENAT(); Tani pas ekzekutimit t ksaj procedure do t shtohet e dhna q procedura e merr si parametr dhe ekzektohet procedura TE_DHENAT( ) q mundson shikimin e t dhnave nga tabela Klientt.

171

BAZAT E T DHNAVE

PHP, APACHE, MySQL n WEB


PHP, APACHE dhe MySQL jan pjes e grupit t programeve open source. Kuptimi i rolit t secilit prej ktyre programeve n krijimin e nj WEB faqeje Apache sht nj WEB server, puna e tij kryesore sht t analizoj do datotek q sht krkuar nga shfrytzuesi dhe t paraqes rezultatin duke u bazuar n kodin brenda asaj datoteke. Apache sht mjaft i fuqishm dhe mund t prmbush do krkes q i shtroni. Mund ta shkarkoni n adresn http://httpd.apache.org . PHP sht gjuh skriptuese, pjes e serverit q mundson WEB faqja t jet dinamike. PHP (Hypertext Preprocessor) sht fleksibil dhe i leht pr tu msuar sidomos pr ata q kan njohuri n C, Java ose Perl. sht nj nga gjuht skriptuese m t popullarizuara. Mund ta shkarkoni n adresn http://www.php.net . MySQL sht baza e t dhnave e ndrtuar n at mnyr q mundson PHP-n dhe Apache-in t punojn s bashku pr qasjen dhe shikimin e t dhnave n nj WEB browser. Mund ta shkarkoni n adresn http://www.mysql.com . Instalimi dhe konfigurimi i PHP, Apache dhe MySQL Instaluesit AMP Nse nuk dshirojm q t bjm instalimin e t tri komponenteve nj nga nj atehre mund t bjm instalimin e ktyre komponenteve me nj datotek instaluese. Datoteka instaluese jan disa por ne do t shkarkojm instaluesin WAMP5 nga adresa http://www.wampserver.com/en ose n ftp://comp-253 . Me an t WAMP5 bjm instalimin e t tri komponenteve dhe poashtu bhet konfigurimi i tyre. Klikojm n datotekn instaluese dhe hapet dritarja:

172

BAZAT E T DHNAVE Shtypim pulln Next dhe n dritaren vijuese zgjedhim opsionin: I accept the agreement pastaj shtypim srish pulln Next. N dritaren e re mund t ndryshojm shtegun e instalimit t komponenteve por ne e lm ashtu si sht C:\wamp dhe shtypim pulln Next. N dritaren tjetr veprojm njsoj vetm shtypim pulln Next dhe n dritaren vijuese zgjedhim opsionin pr startim automatik t WAMP5 dhe shtypim Next dhe n fund Install.

Gjat instalimit paraqitet dritarja:

173

BAZAT E T DHNAVE ku duhet t zgjedhim vendin ku do t ruhen datotekat q do t krkohen nga serveri (gjuh skriptuese). Pastaj zgjedhim SMTP serverin ose e lm localhost dhe shtypim Next. Pastaj shkruajm e-mail adresn p.sh. admin@localhost dhe shtypim Next. Pastaj prfundon instalimi i ktyre komponenteve shtypim Finish dhe do t startoj WAMP serveri. Q kto tri komponenete t punojn s bashku duhet br konfigurimi i tyre, i cili bhet n datotekat httpd.conf pr Apache, php.ini pr PHP dhe my.ini pr MySQL. Konfigurimet e tyre mund ti gjeni n ftp://comp-253 n datotekat prkatse. Tani shkruajm datotekat pr krijmin e bazs s t dhnave, krijimin e tabelave dhe shtimin e t dhnave n ato tabela, e gjitha kjo bhet me an t gjuhs skriptuese PHP. Hapim NOTEPAD-in dhe shkruajm kodin e mposhtm: <html> <head> <title>PHP_TESTUES</title> </head> <body> <?php echo "Ora sht ".time(); ?> </body> </html> E ruajm kt me emrin test.php n shtegun C:/wamp/www, pra n vendin ku serveri do t krkoj datotekat. Hapim INTERNET EXPLORER dhe krkojm adresn http://localhost/test.php dhe paraqitet:

Krijojm tani tabeln Klientet n bazn e t dhnave Banka. 174

BAZAT E T DHNAVE

<html> <body> <h1>PHP</h1> <?php $lidhja = mysql_connect("localhost","root",""); mysql_select_db("banka"); $pyetesor="CREATE TABLE Klientet ( Numri INT NOT NULL PRIMARY KEY, Emri VARCHAR(20) NOT NULL, Mbiemri VARCHAR(20) NOT NULL, Qyteti VARCHAR(15) NOT NULL, Adresa VARCHAR(20) NOT NULL, Tel VARCHAR(20) NOT NULL )"; $rezultati=mysql_query($pyetesor); echo "Rezultati i krijimit t tabels sht $rezultati<br>\n"; ?> </body> </html> E ruajm kt me emrin Test1.php n C:/wamp/www. Kyemi tani n server, shohim se aty sht baza Banka por ne t nuk ka t krijuar asnj tabel.

Kur t krkojm n adresn http://localhost/Test1.php do t krijojm tabeln Klientet n bazn e t dhnave Banka.

175

BAZAT E T DHNAVE

Por n tabeln Klientet nuk asnj t dhn, bjm shtimin e t dhnave n tabeln Klientt. <html> <body> <h1>PROVA</h1> <?php $lidhja = mysql_connect("localhost","root",""); $Baza = mysql_select_db ("banka"); $pyetesor = "INSERT INTO Klientet VALUES (' 140201' ,' Bujar' ,' Shulemaja' ,' Prishtin' ,' Bregu i diellit' ,' 044/123-456' ), (' 140202' ,' Amir' ,' Simnica' ,' Fush Kosov' ,' rr.Agim Ramadani' ,' 044/321-654' ), (' 140203' ,' Valbona' ,' Krasniqi' ,' Dardan' ,' rr.Adem Jashari' ,' 044/213-546' ), (' 140204' ,' Gani' ,' Thaqi' ,' Besian' ,' rr.Zahir Pajaziti' ,' 044/312-645' ), (' 140205' ,' Lavdim' ,' Kastrati' ,' Prishtin' ,' Tophane' ,' 044/132-465' )"; $rezultati = mysql_query ($pyetesor); echo "Rezultati i shtimit te te dhenave eshte $rezultati<br>\n"; ?> </body> </html> 176

BAZAT E T DHNAVE E ruajm kt me emrin Test2.php n C:/wamp/www dhe kur t krkojm n adresn http://localhost/Test2.php do t bjm shtimin e t dhnave n tabeln Klientet.

177

You might also like