SQL Shqip
SQL Shqip
00 - Permbajtja 01 - Hyrja 02 - SELECT 03 - WHERE 04 - INSERT INTO 05 - UPDATE 06 - ORDERED BY 07 - AND & OR 08 - BETWEEN .. AND 09 - Aliases 10 - JOIN 11 - CREATE 12 - ALTER 13 - Agregate Functions 14 - GROUP BY 15 - SELECT INTO
SQL eshte nje gjuhe standarde programuese e kompjutereve per qasje dhe manipulim me bazat e te dhenave
Tabela sic shihet permban tre rekorde (nje per secilin person) dhe kater kolona (Mbiemri, Emri, Adresa, dhe Qyteti).
SQL Pytesoret
Me SQL pytesoret,ne mund a te arrijme deri te rezultatet e deshiruar te cilat na nevojiten. Pytesori si kjo:
SELECT - ekstrakton te dhenat nga tabela e bazave te dhenave UPDATE - ndryshon te dhenat ne tabelat e bazave te dhenave DELETE - fshin te dhenat nga tabelat ne baza te dhenave INSERT INTO - vendos te dhena te reja ne tabela te bazave te dhenave
CREATE TABLE - krijon nje tabele te re ne bazen e te dhenave ALTER TABLE - nderprerjet (per ndryshime) tabelave ne bazen e te dhenave
DROP TABLE - fshin tabelen nga baza e te dhenave CREATE INDEX - krijon nje indeks (qelesin kerkues) DROP INDEX - fshin indeksin
Komanda - SELECT
Komanda SELECT perdoret per te I selektuar shenimet ne tabele. Rezultati tabular eshte I ruajtur ne tabelat rezultuese (quhet pjesa-rezultat).
Resulton ne tabelen e re siq eshte kjo me poshte Mbiemri Hoti Ademi Hasani Emri Valon Gzim Mimoza
Rezultati rang
Rezultati prej SQL pyetesoreve eshte I ruajtur ne rang-rezultat. Shumica e sistemeve softuerike te bazave te dhenave lejon navigimin neper rang-rezultate me funksionet te programuara si p.sh.: Move-To-First-Record(shko ne fillim te rekordit te pare), Get-Record-Content(lexo permbajtjen e rekordit), Move-To-Next-Record(shko te tjetri record me radhe), etj. Per te mesuar rreth ketyre funksioneve se si thirren nga gjuhet programuese e kemi ne tutoriale te programimit.
Kompanite IT Department BRK IT Department Shtepia Mallrave Lux Rezultati eshte : Kompanite IT Department BRK IT Department Shtepia Mallrave Lux
Vereni kete se "IT Department" eshte listuar dy here : Keshtu qe te selektohen vetem vlera e ndryshme prej kolones "Kompanite" ne do te perdorim komanden SELECT DISTINCT siq eshte kjo qe vijon :
Klauzula WHERE
Per te selektuar shenimet nga baza e te dhenave nga nje tabele ne baze te nje kushti te caktuar ,atehere e shtojm klauzulen WHERE gjate perdorimit te komandes SELECT .
Rezultati do te jete Mbiemri Hoti Ademi Emri Valon Gzim Adresa 7 Shtatori no.12 Shipol no.2 Qyteti Mitrovice Mitrovice Viti 1951 1978
Perdorimi I thojzave
Vereni se ne kemi perdorur thojza te thjeshta te nje fishte . SQL per vlerat text perdore thojza te thjeshta (shume sisteme te bazave te dhenave mund te perdorin edhe thojza te dyfishta ). Ndersa vlerat numerike nuk kan nevoje te futen ne thojza. Per vlerat text:
Mire : SELECT * FROM Personet WHERE Emri='Valon' Keq: SELECT * FROM Personet WHERE Emri=Valon
Per vlera numerike:
Mire: SELECT * FROM Personet WHERE Viti>1965 Keq: SELECT * FROM Personet WHERE Viti>'1965'
kushti LIKE
Kushti LIKE perdoret per te kerkuar dicka te perafert .
perdorimi LIKE
Perdorimi i kesaj komandet kthen si rezulat emrat qe fillojn me 'O':
Komanda UPDATE
Komanda UPDATE perdoret per te modifikuar shenimet
Tabela Personet: Mbiemri Hoti Arifi Emri Valon Adresa 7 Shtatori no.12 Soliteri tjegullorja Qyeti Mitrovice
UPDATE Personet SET Adresa = 'Soliteri kalter ', Qyteti = 'Prishtine' WHERE Mbiemri = 'Arifi'
Rezultaton tabelen si vijon: Mbiemri Hoti Arifi Emri Valon Aferdita Adresa 7 Shtatori no.12 Soliteri kalter Qyteti Mitrovice Prishtine
Komanda DELETE
Komanda Delete perdoret per te fshire rreshtin
Tabela Personet: Mbiemri Hoti Milaimi Emri Valon Milot Adresa 7 Shtatori no.12 2 Korriku Qyteti Mitrovice Mitrovice
Fshirja e rreshtit
Deshirojm te fshijme rreshtin ne te cilen eshte Milot Milaimi:
Renditja e rreshtave
Klauzula ORDER BY perdoret per rrenditjen ose sortimin e tabeles apo me saktesisht te kolones Porosite: Kompanite BRK Ardi IT Department IT Department NumriPorosise 3412 5678 2312 6798
Shembull
Nese deshirojme te i paraqesim kompani te renditura sipa alfabetit:
Shembull 2:
Te paraqiten Kompanite sipas renditje me alphabet dhe numrit te porosive ne renditje numerike:
Shembull 3
Te paraqitet renditja reverze e renditjes alfabetike
Shembull 4
Te paraqitet renditja reverze e renditjes alfabetike dhe numerike ne rregull:
SELECT Kompanite, NumriPorosises FROM Porosite ORDER BY Kompanite DESC, NumriPorosise ASC
Rezulton tabelen: Kompanite IT Department IT Department BRK Ardi NumriPorosise 2312 6798 3412 5678
Shembull
Perdorimi i operatorit AND per te paraqitur te gjithe personat qe e kan emrin kan mbiemrin "Doroci": "Adnan",si dhe qe e
Shembull 2
Perdorimi i operatorit OR secilin person qe ka emrin "Tove", ose mbiemrin "Hoti":
Shembull
Ju gjithashtu munde ti kombinoni operatoret AND dhe OR (duke i perdorur kllapat per format komplekse te operacioneve):
SELECT emri_kolones FROM emri_tabeles WHERE emri_kolones BETWEEN vlera1 AND vlera2
Shembull 1
Per te I paraqitur ne menyre alfabetike personet prej(duke I perfshi edhe ata) "Hoti" dhe eksluzivisht "Hoxha", perdoren komandat e SQL siq vijojn me poshte :
Me Rendesi! Operatoret BETWEEN...AND perdoren ne menyra te ndryshme ne bazat e te dhenave te ndryshme. Ne disa baza te dhenave personi me mbiemrin "Hoti" ose "Hoxha" nuk do te listohen (ne mes dhe vetem te selektuarat mund te paraqiten). Ne disa baza te dhenave personi me mbiemer "Hoti" ose "Hoxha" do te listohen (ne mess i dhe fushat e selektuara jane te perfshira). Ndersa ne baza e te dhenave tjera personi me mbiemer "Hoti" do te listohet, po jo edhe personi me mbiemrin "Hoxha" (ne mes dhe vetem te selektuarat duke perfshi larguar te fundit nga lista) Keshtu paraprakisht :Bazen e te dhenave tuaj se si I perdor keto BETWEEN... .AND operatoret!
Shembull 2
Per te e paraqitur listen jasht rangut ne mes te Hoti dhe Hoxha
SELECT * FROM Personet WHERE Mbiemri NOT BETWEEN 'Hoti' AND 'Hoxha'
Rezulton: Mbiemri Morina Arifi Emri Nexhat Luljeta Adresa Tregu Mbyllur no.4 Tjegullorja 8/2 Qyteti Mitrovice Mitrovice
Ne SQL mund te perdorem aliaset pseudonimet e tabelave {te cilave mund te ju japim cfaredo emra per nga emrat e tyre origjinale}
Puntoret: Puntori_ID 01 02 03 04 Porosite: Prodh_ID 234 657 865 Produket Printeri Tabela Karrige Puntori_ID 01 03 03 Emri Hoti, Valon Ademi,Gzim Arifi,Luljeta Jonuzi,Ilir
Referimi te dy tabelat
Ne munde te i lexojme shenimet prej dy tabelave duke u referuar ne te dy tabelat , keshtu:
Shembull
Kush ,cka ka marre?
Shembull
Kush ka marre printerin?
SELECT fusha1, fusha2, fusha3 FROM tabela_pare INNER JOIN tabela_dyte ON tabela_pare.fusha_kotrolluese = tabela_dyte.fusha_referuar
Kush ka porositur dhe cka kan porositur ata?
Fjala rezervuar RIGHT JOIN te gjitha rreshtat nga tabela e dyte(Porosite), vetem nese ato nuk perputhen me rreshtat e tabeles (Puntoret). Nese ka ndonje rreshte ne tabelen Porosite dhe nuk perputhet me ate ne tabelen Puntoret, ato rreshta gjithashtu do te listohen. Rezulton tabelen Emri Hoti,Valon Arifi,Luljeta Arifi,Luljeta Produkti Printeri Tabele Karrige
Shembull
Kush e ka marr printerin?
SELECT Puntoret.Emri FROM Puntoret INNER JOIN Porosite ON Puntoret.Puntori_ID=Porosite.Puntori_ID WHERE Porosite.Produkti = 'Printer'
Rezulton Emri Hoti,Valon
Krijimi i tabeles
Per te krijuar tabele perdorim si me poshte:
CREATE TABLE Personet ( Mbiemri varchar, Emri varchar, Adresa varchar, Mosha int )
Ndersa ky shembull tregon se mund te caktoni gjatesin maksimale per secilen fushe:
CREATE TABLE Personet ( Mbiemri varchar(30), Emri varchar, Adresa varchar, Mosha int(3) )
Tipi I te dhenave tregon se cfare shenimesh do te mbaj kolona. Tabela si vijon tregon se cfare tipesh me se shumti perdoren ne SQL: Tipi I te dhenave integer(madhesia) int(madhesia) smallint(madhesia) tinyint(madhesia) decimal(madhesia,d) numeric(madhesia,d) char(madhesia) varchar(madhesia) date(yyyymmdd) Pershkrimi Permban tipet e te dhenave integjer dhe numri ne kllapa tregon sa shifror.
Tregon numrat me pike dhjetor. Sa shifror definohet ne madhesin e saj. Sa shifra pas pikes dhjetore shenohet ne "d". Tregon gjatesin fikse te stringut (mund te permbaj shkronja,numra si dhe karaktere speciale). Madhesia fikse definohet ne kllapa. Permban variablen e tipit string (mund te permbaj shkronja,numra si dhe karaktere speciale). Madhesia fikse definohet ne kllapa. Shenon daten yyyy - viti,mm - muaji , dd - dita
Krijimi i indekseve
Indekset krijohen ne tabele per arsye qe ti gjej rreshta ne tabele shume me shpejt. Eshte e mundeshme qe te krijohen indekset ne nje a me shume kolonat te tabeles, dhe secili indeks mund te kete emerin e vet. Ata qe I perdorin nuk munde te I shohin indekset por mund te I perdorin per ta shpejtuar punen gjate punimit me pyetesoret Verejte: Ndryshimi freskimi shenimve ne tabelen me indeksa merr kohe me shume se sa tabela pa indeksa, kjo eshte per arsye se ndrrimi behet ne te gjitha indekset. Keshtu , te krijohet indekset veten ne ato kolona ne te cilen do te behet kerkesat per kriteriume. Indeksi unik Krijimi i indekseve unike. Indeksi unik nenkupton qe dy rreshta nuk munde te kene vler te njejte.
Indeksi thjeshte Krijimi I nje indeksi te thjeshte. Kur perdorimi I fjales se rezervuar UNIQUE nuk eshte bere, indeksat me vlerat te perseritura jan te lejuara.
Shembull
Krijimi i indeksit te thjesht, emertuar "PersonIndex", ne fushen Mbiemri ne tabelen Personet:
Fshirja indeksit
Ju mund te fshini indekset permes komandes DROP.
Ndryshimi i tabeles
Komanda ALTER TABLE perdoret per shtimin apo largimin e kolonave nga tabela.
Shtimi i nje kolone: ALTER TABLE emri_tabeles ADD emri_kolones tipi_i_te_dhenave Largimi i nje kolone: ALTER TABLE emri_tabeles DROP COLUMN emri_kolones
Verejtej: Disa sisteme te baza te dhenave nuk lejojn fshirjen e kolonave ne tabelat e bazave te dhenave(DROP COLUMN emri_kolones).
Shembull
Te shtohet kolona me emrin "Qyteti" ne tabelen "Personet":
Shembull
Te largohet kolona "Adresa" nga tabela "Personet":
Sintaksa e funksioneve
Sintaksa e funksioneve te ndertuara ne SQL eshte:
Tipet e funksioneve
Ka disa tipe themelore te funksioneve ne Funksionet Agregate Funksionet Skalare SQL. Tipet themelore jane siq vijon:
Funksionet Agregate
Funksionet Agregate punojne me vlera te kolektuara , por si rezultat e kthejne vetem nje vlere. Verejtej: Nese perdoret me shume artikuj tjere net abele permes komandes SELECT, atehere SELECT duhe te kete klauzulen GROUP BY!!
Tabela "Personet"
Emri Hoti,Valon Beqiri,Agim Dauti,Bekim Mosha 34 45 19
Funksionet Skalare
Funksionet skalare jane funksionet qe punojn me nje vlere te caktuar, dhe kthejn rezultat bazuar nga vlera hyres.
GROUP BY...
GROUP BY... eshte shtuar ne SQL sepse funksionet agregate (sikurse SUM) kthen vlera aggregate nga kolona sa here te thirret , si dhe pa funksionin GROUP BY eshte e pa mundur te gjendet shuma per secilin grup individual per vlerat e kolones. Sintaksa e funksionit GROUP BY eshte:
Shembull GROUP BY
Tabela "Shitjet": Kompanite IT Department Ardi IT Department Sasia 5500 4500 7100
Rezultati permbi eshte I pakuptueshem dhe nuk eshte me pjese e funksioneve agregate.Prandaj duhet te perdoret klauzula GROUP BY per te zgjedhur kete problem:
HAVING...
HAVING... i eshte shtuar SQL sepse fjala e rezervuar WHERE nuk perdoret gjate thirrjeve te funksionve agregate (sikurse SUM), si dhe pa fjalen e rezervuar HAVING... eshte e pamundur qe te thirren kushtet per rezultat. Sintaksa per funksionin HAVING eshte:
emri_tabeles
Personet_kopjarezerver
Ju gjithashtu mund te perdorni klauzulen WHERE. Shikoni kete shembull p.sh. tabela "Personet_kopjarezerve" me dy kolona (Emri dhe Mbiemri) duke I nxjerr vetem personet qe jetojn ne "Mitrovice" nga tabela "Personet":
SELECT Puntoret.Emri,Porosite.Produkti INTO Porosite_e_puntoreve_kopja FROM Puntoret INNER JOIN Porosite ON Puntoret.Puntori_ID=Porosite.Puntori_ID