Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Gjuha SQL. Qëllimi i gjuhës SQL

Programet e klientëve

Protokolli TFTP

TFTP- gjithashtu protokollin FTP, por në krye të protokollit UDP (d.m.th., një protokoll pa dorëzim të garantuar). Mund të përdoret në një rrjet lokal ku shpejtësia e transmetimit është më e rëndësishme. Në praktikë përdoret rrallë.

FTP- programi niset nga linja e komandës.

Komandanti i Windows- mund të punojë si klient FTP. Ju lejon të punoni me drejtoritë në distancë në të njëjtën mënyrë si me ato lokale.

NetVampire - Një klient i specializuar FTP që ju lejon të shkarkoni skedarë të mëdhenj dhe të shkarkoni përmes kanaleve të këqija.

SQL (Structured Query Language) është një gjuhë e strukturuar e pyetjeve për bazat e të dhënave relacionale. Në këtë gjuhë, ju mund të formuloni shprehje (pyetje) që marrin të dhënat e kërkuara, modifikojnë ato, krijojnë tabela dhe ndryshojnë strukturat e tyre, përcaktojnë të drejtat e aksesit në të dhëna dhe shumë më tepër.

Pyetjet ekzekutohen nga një sistem i menaxhimit të bazës së të dhënave (DBMS). Nëse nuk jeni specialist në zhvillimin dhe administrimin e bazës së të dhënave, atëherë mund të jeni një përdorues i bazës së të dhënave që shikon dhe/ose ndryshon të dhënat në tabelat ekzistuese. Në shumë raste, këto dhe operacione të tjera të bazës së të dhënave kryhen duke përdorur aplikacione speciale që i ofrojnë përdoruesit një ndërfaqe të përshtatshme. Në mënyrë tipike, aplikacionet shkruhen në gjuhë të veçanta programimi (C, Pascal, Visual Basic, etj.) dhe më së shpeshti krijohen duke përdorur mjedise të integruara zhvillimi, për shembull, Delphi, C++ Builder, etj. Megjithatë, qasja në bazën e të dhënave mund të jetë të marra pa to - duke përdorur vetëm SQL. Duhet gjithashtu të theksohet se aplikacionet e specializuara zakonisht përdorin fragmente të kodit SQL kur hyjnë në bazën e të dhënave.

Kështu, SQL është një gjuhë standarde e përdorur gjerësisht për të punuar me bazat e të dhënave relacionale. Sintaksa e kësaj gjuhe është mjaft e thjeshtë saqë mund të përdoret nga përdoruesit e zakonshëm, jo ​​vetëm nga programuesit. Në ditët e sotme, përdoruesi mesatar i kompjuterit duhet të paktën të jetë i aftë në një përpunues teksti (siç është Microsoft Word) dhe një program spreadsheet (siç është Microsoft Excel). Është mirë nëse di të përdorë edhe bazat e të dhënave. Ka shumë DBMS të ndryshme, por ekziston vetëm një mjet universal për të punuar me bazat e të dhënave - SQL. Njohja e SQL, të paktën bazat e saj, dhe aftësia për ta përdorur atë për të kërkuar dhe analizuar të dhënat është një pjesë themelore e njohurive kompjuterike, madje edhe për përdoruesit e zakonshëm.

Zhvillimet e para të sistemeve të menaxhimit të bazës së të dhënave relacionale (DBMS relacionale) u kryen në IBM në fillim të viteve 1970. Në të njëjtën kohë, u krijua një gjuhë e të dhënave për të punuar në këto sisteme. Versioni eksperimental i kësaj gjuhe u quajt SEQUEL - nga anglishtja. Gjuhë e strukturuar në anglisht QUEry (gjuhë e strukturuar e pyetjeve angleze). Sidoqoftë, versioni zyrtar u quajt më i shkurtër - SQL (Structured Query Language). Më saktësisht, SQL është një nëngjuhë e të dhënave, pasi DBMS përmban mjete të tjera gjuhësore.

Në 1981, IBM lëshoi ​​​​DBMS relacionale SQL/DS. Në këtë kohë, Relation Software Inc. (sot është Oracle Corporation) tashmë ka lëshuar DBMS-në e saj relacionale. Këto produkte u bënë menjëherë standardi për sistemet e menaxhimit të bazës së të dhënave. Këto produkte përfshinin gjithashtu SQL, i cili u bë standardi de facto për nëngjuhët e të dhënave. Prodhuesit e DBMS-ve të tjera kanë lëshuar versionet e tyre të SQL. Ato përfshinin më shumë se vetëm aftësitë thelbësore të produkteve të IBM. Për të fituar disa avantazhe për DBMS "të tyre", prodhuesit prezantuan disa shtesa SQL. Në të njëjtën kohë, filloi puna për krijimin e një standardi SQL të pranuar përgjithësisht.

Në vitin 1986, Instituti Kombëtar Amerikan i Standardeve (ANSI) lëshoi ​​standardin zyrtar SQL-86, i cili u përditësua në 1989 dhe u quajt SQL-89. Në vitin 1992, ky standard u emërua SQL-92 (ISO/IEC 9075:1992). Versioni i fundit i standardit SQL është SQL:2003 (ISO/IEC 9075X:2003).

Çdo zbatim i SQL në një DBMS specifike është disi i ndryshëm nga standardi me të cilin prodhuesi deklaron pajtueshmërinë. Kështu, shumë DBMS (për shembull, Microsoft Access 2003, PostgreSQL 7.3) nuk mbështesin plotësisht SQL-92, por vetëm me një nivel të caktuar përputhshmërie. Përveç kësaj, ata gjithashtu mbështesin elementë që nuk përfshihen në standard. Sidoqoftë, zhvilluesit e DBMS përpiqen të sigurojnë që versionet e reja të produkteve të tyre të përputhen sa më afër që të jetë e mundur me standardin SQL.

Kujdes. Ky udhëzues përshkruan elementet SQL2003, jo të gjithë janë të mbështetur nga DBMS-të ekzistuese. Përpara se t'i vini në praktikë, duhet të siguroheni që ato do të funksionojnë në DBMS-në tuaj. Ju mund të mësoni për këtë nga dokumentacioni teknik. Shumica e elementeve të përshkruara korrespondojnë me versionet e mëparshme të SQL, në veçanti me SQL-92 të përdorur gjerësisht.

SQL u konceptua si një gjuhë e thjeshtë pyetjesh për një bazë të dhënash relacionale, afër gjuhës natyrore (më saktë, me anglishten). Shpresohej që afërsia në formë me gjuhën natyrore do ta bënte SQL një mjet që mund të përdoret gjerësisht nga përdoruesit e zakonshëm të bazës së të dhënave, jo vetëm nga programuesit. Fillimisht, SQL nuk përmbante asnjë nga strukturat e kontrollit që gjenden në gjuhët konvencionale të programimit. Kërkesat, sintaksa e të cilave është mjaft e thjeshtë, u futën drejtpërdrejt nga tastiera në mënyrë sekuenciale njëra pas tjetrës dhe u ekzekutuan në të njëjtën sekuencë. Megjithatë, SQL nuk u bë kurrë një mjet për punonjësit e bankave, shitësit e biletave ajrore dhe treni, ekonomistët dhe punonjësit e tjerë të kompanive të ndryshme që përdorin informacionin e ruajtur në bazat e të dhënave. Për ta, SQL e thjeshtë doli të ishte shumë komplekse dhe e papërshtatshme, pavarësisht afërsisë së saj me gjuhën natyrore të pyetjeve.

Në praktikë, me një bazë të dhënash zakonisht punohet përmes aplikacioneve të shkruara nga programuesit në gjuhë procedurale, për shembull, C, Visual Basic, Pascal, Java, etj. Aplikimet shpesh krijohen në mjedise të veçanta zhvillimi vizual, si Delphi, Microsoft Access, Visual. dBase, etj. Në të njëjtën kohë, zhvilluesi i aplikacionit praktikisht nuk duhet të shkruajë kodet e programit, pasi sistemi i zhvillimit e bën atë. Në çdo rast, puna me kodin e programit rezulton të jetë minimale. Këto aplikacione kanë një ndërfaqe grafike miqësore për përdoruesit që nuk e detyron përdoruesin të fusë drejtpërdrejt pyetje në SQL. Aplikacioni e bën këtë në vend të kësaj. Megjithatë, aplikacioni mund ose nuk mund të përdorë SQL për të hyrë në bazën e të dhënave. SQL nuk është i vetmi, megjithëse është një mjet shumë efektiv për marrjen, shtimin dhe ndryshimin e të dhënave, dhe nëse është e mundur të përdoret në një aplikacion, atëherë duhet bërë.

Bazat e të dhënave relacionale mund dhe ekzistojnë pavarësisht nga aplikacionet që ofrojnë ndërfaqen e përdoruesit. Nëse për ndonjë arsye nuk ka një ndërfaqe të tillë, atëherë baza e të dhënave mund të aksesohet duke përdorur SQL, duke përdorur tastierën ose ndonjë aplikacion me të cilin mund të lidheni me bazën e të dhënave, të futni dhe dërgoni një pyetje SQL (për shembull, Borland SQL Explorer ).

Gjuha SQL konsiderohet një gjuhë deklarative (përshkruese), në ndryshim nga gjuhët në të cilat shkruhen programet. Kjo do të thotë që shprehjet SQL përshkruajnë atë që duhet bërë, jo si.

Për shembull, për të zgjedhur informacionin në lidhje me emrat dhe pozicionet e punonjësve të departamentit 102 nga tabela e punonjësve, thjesht ekzekutoni pyetjen e mëposhtme:

SELECT Mbiemri, Pozicioni FROM Punonjësit WHERE Departamenti=102;

Në rusisht kjo shprehje tingëllon si kjo:

ZGJIDHNI Mbiemri, pozicioni NGA Punonjësit me kusht që Departamenti = 102;

Për të ndryshuar vlerën " Ivanov "në" Petrov kolona " Mbiemri , thjesht ekzekutoni pyetjen e mëposhtme:

PËRDITËZIM SET për punonjësit Mbiemri = "Petrov" KU Mbiemri = "Ivanov";

Në rusisht kjo shprehje duket kështu:

PËRDITËSOJE Punonjësit I INSTALUAR Mbiemri E BARABARË " Petrov "KU mbiemri = "Ivanov" ;

Ju nuk keni nevojë të përshkruani në detaje veprimet që duhet të kryejë DBMS për të zgjedhur të dhënat e specifikuara në pyetje nga tabela. Ju thjesht përshkruani atë që dëshironi të merrni. Si rezultat i ekzekutimit të pyetjes, DBMS kthen një tabelë që përmban të dhënat që keni kërkuar. Nëse nuk ka të dhëna në bazën e të dhënave që përputhen me kërkesën, do të kthehet një tabelë bosh.

Sidoqoftë, versionet e fundit të SQL mbështesin deklaratat e kontrollit të llogaritjes vendase në gjuhët e kontrollit procedural (deklaratat e degës së kushtëzuar dhe të ciklit). Prandaj, SQL tani nuk është një gjuhë thjesht deklarative.

Përveç marrjes, shtimit, modifikimit dhe fshirjes së të dhënave nga tabelat, SQL ju lejon të kryeni të gjitha veprimet e nevojshme për të krijuar, modifikuar dhe siguruar bazat e të dhënave. Të gjitha këto aftësi shpërndahen midis tre komponentëve SQL:

· DML (Gjuha e manipulimit të të dhënave - gjuha e manipulimit të të dhënave ) ka për qëllim të mbështesë bazën e të dhënave: përzgjedhja ( ZGJIDH ), shtesat ( INSERT ), ndryshimet ( PËRDITËSOJE ) dhe fshirje ( FSHIJE ) të dhënat nga tabelat. Këta operatorë (komanda) mund të përmbajnë shprehje, duke përfshirë ato të llogaritura, si dhe nënpyetje - pyetje të përfshira në një pyetje tjetër. Në përgjithësi, një shprehje e pyetjes mund të jetë aq komplekse saqë nuk mund të thuash menjëherë se çfarë bën. Megjithatë, një pyetje komplekse mund të ndahet mendërisht në pjesë që janë më të lehta për t'u analizuar. Po kështu, pyetjet komplekse krijohen nga shprehje relativisht të lehta për t'u kuptuar (nënpyetje).

· DDL (Gjuha e përkufizimit të të dhënave - gjuha e përkufizimit të të dhënave ) është krijuar për të krijuar, modifikuar dhe fshirë tabelat dhe të gjithë bazën e të dhënave. Shembuj të deklaratave të përfshira në DDL janë KRIJONI TABELA (krijoni tabelën)," KRIJO PAMJE (krijo pamje), KRIJONI SHEMA (krijoni një diagram), TABELA ALTER (ndryshoni tabelën), RËZË (fshij), etj.

· DCL (Gjuha e kontrollit të të dhënave - gjuha e menaxhimit të të dhënave ) është krijuar për të mbrojtur bazën e të dhënave nga lloje të ndryshme dëmtimesh. DBMS siguron disa mbrojtje të të dhënave automatikisht. Megjithatë, në disa raste duhet të merren parasysh masa shtesë të parashikuara nga DCL.

Përkthimi: Alexandr Piramidin

Ky artikull ju prezanton me strukturën e gjuhës SQL, si dhe me disa koncepte të përgjithshme siç janë llojet e fushave të të dhënave që mund të përmbajnë dhe disa nga paqartësitë që ekzistojnë në SQL. Nuk është e nevojshme të mbani mend çdo detaj të përmendur në këtë artikull. Kjo është vetëm një pasqyrë e shkurtër; jepen shumë detaje në mënyrë që të mund t'u referoheni më vonë ndërsa zotëroni gjuhën.

Si funksionon SQL?

SQL është një gjuhë e krijuar posaçërisht për bazat e të dhënave relacionale (RDB). Ai kryen shumë punë që do t'ju duhej të bënit nëse do të përdornit një gjuhë programimi për qëllime të përgjithshme si C. Për të formuar një RDB në C, duhet të filloni nga e para. Ju do të përcaktoni një objekt të quajtur tabelë që mund të rritet për të pasur çdo numër rreshtash dhe më pas të krijoni procedura shtesë për të futur dhe marrë vlerat.

Nëse dëshironi të gjeni disa vargje specifike, do t'ju duhet të ndiqni një procedurë hap pas hapi si më poshtë:

  • Konsideroni një rresht tabele.
  • Kontrolloni për të parë nëse ky varg është një nga vargjet që ju nevojiten.
  • Nëse po, ruajeni diku derisa të kontrollohet e gjithë tabela.
  • Kontrolloni nëse ka rreshta të tjerë në tabelë.
  • Nëse ka, kthehuni në hapin 1.
  • Nëse nuk ka më rreshta, printoni të gjitha vlerat e ruajtura në hapin 3.

(Sigurisht, ky nuk është grupi aktual i komandave C, vetëm logjika e hapave që do të përfshiheshin në një program real.) SQL do t'i bëjë të gjitha këto për ju. Komandat në SQL mund të funksionojnë në të gjitha grupet e tabelave si një entitet i vetëm dhe mund të përpunojnë çdo sasi informacioni të nxjerrë ose të nxjerrë prej tyre si një njësi e vetme.

Çfarë bën ANSI?

Siç thamë në hyrje, standardi SQL përcaktohet duke përdorur kodin ANSI (Instituti Kombëtar i Standardeve Amerikane). SQL nuk u shpik nga ANSI. Kjo është në thelb një shpikje e IBM. Por kompanitë e tjera u hodhën në SQL menjëherë. Të paktën një kompani (Oracle) ka fituar të drejtën për të tregtuar produkte SQL nga IBM.

Pasi një numër i programeve konkurruese SQL u shfaqën në treg, ANSI përcaktoi standardin me të cilin ato duhet të përshtaten. (Përcaktimi i standardeve të tilla është funksion i ANSI.) Megjithatë, pas kësaj u shfaqën disa probleme. Ato u ngritën si rezultat i standardizimit ANSI, në formën e disa kufizimeve. Meqenëse ANSI nuk përcakton gjithmonë atë që është më e dobishme, programet përpiqen të përputhen me standardin ANSI pa e lejuar atë t'i kufizojë ato shumë. Kjo, nga ana tjetër, çon në mospërputhje të rastësishme. Programet e bazës së të dhënave zakonisht shtojnë veçori shtesë në ANSI SQL dhe shpesh relaksojnë shumë nga kufizimet. Prandaj, do të merren parasysh edhe variantet e zakonshme ANSI. Edhe pse padyshim që nuk mund të mbulojmë çdo përjashtim apo variacion, idetë e mira priren të miratohen dhe përdoren në një sërë programesh, edhe kur ato nuk janë të përcaktuara nga standardi ANSI. ANSI është një lloj standardi minimal dhe ju mund të bëni më shumë se sa lejon, megjithëse duhet të ndiqni udhëzimet e tij kur kryeni detyrat që ai specifikon.

SQL interaktive dhe e mbivendosur

Ka dy SQL: Interaktive dhe Nested. Në pjesën më të madhe, të dy format funksionojnë njësoj, por përdoren ndryshe. SQL interaktive përdoret për të ekzekutuar drejtpërdrejt në bazën e të dhënave për të prodhuar rezultate për përdorim nga klienti. Në këtë SQL - kur futni një komandë, ajo do të ekzekutohet menjëherë, dhe ju mund të shihni menjëherë daljen (nëse ka).

SQL e ndërlidhur përbëhet nga komanda SQL të vendosura brenda programeve që zakonisht shkruhen në një gjuhë tjetër (si COBOL ose PASCAL). Kjo i bën programe të tilla më të fuqishme dhe efektive.

Sidoqoftë, lejimi i këtyre gjuhëve vjen me një strukturë SQL dhe stil të menaxhimit të të dhënave që kërkon disa shtesa interaktive SQL. Kalimi i komandave SQL në SQL të ndërthurur "kalohet" për variablat ose parametrat e përdorur nga programi në të cilin ato janë futur.

Në këtë libër, ne do të prezantojmë SQL në një mënyrë interaktive. Kjo do të na japë mundësinë për të diskutuar komandat dhe veprimet e tyre pa u shqetësuar se si ato ndërlidhen me gjuhët e tjera. SQL interaktive është forma më e dobishme për jo-programuesit. Gjithçka që mësoni rreth SQL interaktive në përgjithësi zbatohet për një formë të mbivendosur. Ndryshimet e nevojshme për të përdorur një formë të ndërthurur do të trajtohen në kapitullin e fundit të këtij libri.

Nënseksionet SQL

Të dyja format ndërvepruese dhe të mbivendosura të SQL kanë pjesë ose nënseksione të shumta. Meqenëse ka të ngjarë të hasni në këtë terminologji kur lexoni SQL, ne do të ofrojmë disa sqarime. Fatkeqësisht, këto terma nuk përdoren universalisht në të gjitha implementimet. Ato janë të specifikuara nga ANSI dhe janë të dobishme në një nivel konceptual, por shumica e programeve SQL bëjnë pak për t'i trajtuar ato veçmas, kështu që ato në thelb bëhen kategori funksionale të komandave SQL.

  • DDL (Gjuha e përkufizimit të të dhënave) - e quajtur Gjuha e përshkrimit të skemës në ANSI - përbëhet nga komanda që krijojnë objekte (tabela, indekse, pamje etj.) në një bazë të dhënash.
  • DML (Data Manipulation Language) është një grup komandash që përcaktojnë se cilat vlera përfaqësohen në tabela në çdo kohë të caktuar.
  • DCD (Data Control Language) përbëhet nga mjete që përcaktojnë nëse do të lejojnë një përdorues të kryejë veprime të caktuara apo jo. Ata janë pjesë e ANSI DDL.

Mos harroni këta emra. Këto nuk janë gjuhë të ndryshme, por seksione të komandave SQL të grupuara sipas funksioneve të tyre.

Lloje të ndryshme të të dhënave

Jo të gjitha llojet e vlerave që mund të gjenden në fushat e tabelës janë logjikisht të njëjta. Dallimi më i dukshëm është midis numrave dhe tekstit. Ju nuk mund të vendosni numra sipas rendit alfabetik ose të zbrisni një emër nga një tjetër.

Meqenëse sistemet DDB bazohen në marrëdhëniet ndërmjet pjesëve të informacionit, lloje të ndryshme të të dhënave duhet të diferencohen nga njëra-tjetra në mënyrë që të mund të bëhen procese dhe krahasime të përshtatshme ndërmjet tyre. Në SQL, kjo bëhet duke i caktuar secilës fushë një lloj të dhënash që tregon llojin e vlerës që mund të mbajë ajo fushë. Të gjitha vlerat në këtë fushë duhet të jenë të të njëjtit lloj. Në tabelën "Klientët", për shembull, cname dhe qyteti përmbajnë rreshta teksti për t'u vlerësuar, dhe snum dhe cnum janë numra. Për këtë arsye, nuk mund të futni një vlerë më të lartë ose një vlerë Asnjë në fushën e vlerësimit, që është një lloj i të dhënave numerike. Ky kufizim është i mirë sepse imponon një strukturë në të dhënat tuaja. Shpesh do të krahasoni disa ose të gjitha vlerat në një fushë të caktuar, kështu që mund të dëshironi të kryeni një veprim vetëm në rreshta të caktuar dhe jo në të gjitha. Ju nuk mund ta bëni këtë nëse vlerat e fushës ishin të një lloji të përzier të të dhënave.

Fatkeqësisht, përcaktimi i këtyre llojeve të të dhënave është një fushë kryesore ku shumica e programeve komerciale të bazës së të dhënave dhe standardi zyrtar SQL nuk pajtohen gjithmonë. Standardi ANSI SQL njeh vetëm tekstin dhe numrin, ndërsa shumica e programeve komerciale përdorin lloje të tjera të veçanta. Të tilla si DATA dhe TIME janë, në fakt, lloje pothuajse standarde (megjithëse formati i tyre i saktë ndryshon). Disa paketa mbështesin gjithashtu lloje të tilla si PARAJA dhe BINARI. (PARAJA është një sistem i veçantë "monedhe" i përdorur nga kompjuterët.)

I gjithë informacioni në një kompjuter transmetohet në numra binar dhe më pas konvertohet në sisteme të tjera në mënyrë që ne t'i përdorim dhe t'i kuptojmë lehtësisht.

ANSI përcakton disa lloje numerike, ndryshimet midis të cilave janë mjaft delikate dhe ndonjëherë të ngatërruara. Llojet e lejuara të të dhënave ANSI janë renditur në Shtojcën B. Kompleksiteti i llojeve numerike ANSI mund t'i atribuohet, të paktën pjesërisht, përpjekjes për ta bërë SQL të mbivendosur të përputhshme me një sërë gjuhësh të tjera. Dy llojet e numrave ANSI, INTEGER dhe DECIMAL (të cilat mund të shkurtohen si INT dhe DEC, përkatësisht), do të jenë të përshtatshme për qëllimet tona, si dhe për qëllimet e shumicës së aplikacioneve praktike të biznesit. Natyrisht, lloji INTEGER mund të përfaqësohet si NUMËR DHJETOR, i cili nuk përmban asnjë shifër në të djathtë të pikës dhjetore.

Lloji i tekstit është CHAR (ose CHAR), duke iu referuar një vargu teksti. Një fushë CHAR ka një gjatësi të përcaktuar nga numri maksimal i karaktereve që mund të futen në fushë. Shumica e implementimeve kanë gjithashtu një tip jo standard të quajtur VARCHAR, i cili është një varg teksti dhe mund të jetë i çdo gjatësie deri në një maksimum të përcaktuar nga zbatimi (zakonisht 254 karaktere). Vlerat CHARACTER dhe VARCHAR përfshihen në thonjëza të vetme si "tekst". Dallimi midis CHAR dhe VARCHAR është se CHAR duhet të rezervojë memorie të mjaftueshme për gjatësinë maksimale të vargut, ndërsa VARCHAR shpërndan memorie sipas nevojës.

Llojet e karaktereve përbëhen nga të gjitha karakteret e printueshme, duke përfshirë numrat. Megjithatë, numri 1 nuk është i njëjtë me simbolin "1". Karakteri "1" është vetëm një pjesë e printuar e tekstit, e pa përcaktuar nga sistemi si vlera numerike 1. Për shembull, 1 + 1 = 2, por "1" + "1" nuk është e barabartë me "2". Vlerat e karaktereve ruhen në kompjuter si vlera binare, por i shfaqen përdoruesit si tekst i printuar.

Konvertimi bëhet në një format të përcaktuar nga sistemi që po përdorni. Ky format konvertimi do të jetë një nga dy llojet standarde (ndoshta me shtesa) të përdorura në sistemet kompjuterike: kodi ASCII (përdoret në të gjithë kompjuterët personalë dhe të vegjël) dhe kodi EBCDIC (Kodi i Zgjeruar Binar i Shkëmbimit të Informacionit Decimal) (i përdorur në kompjuterë të mëdhenj). Disa operacione, të tilla si alfabetizimi i vlerave të fushës, do të ndryshojnë me formatin.

Ne duhet të ndjekim tregun, jo ANSI, në përdorimin e tipit DATE. (Në një sistem që nuk njeh llojin DATE, sigurisht që mund ta deklaroni datën si karakter ose fushë numerike, por kjo do t'i bëjë shumicën e operacioneve më intensive.)

Ju duhet të rishikoni dokumentacionin tuaj për paketën e softuerit që do të përdorni për të zbuluar saktësisht se cilat lloje të të dhënave mbështet.

SQL. Mospërputhjet.

Ju mund të kuptoni nga diskutimi i mëparshëm se ka mospërputhje të veçanta midis produkteve të botës SQL. SQL doli nga bota komerciale e bazës së të dhënave si një mjet dhe më vonë u zhvillua në një standard ANSI. Fatkeqësisht, ANSI jo gjithmonë përcakton se çfarë është më e dobishme, kështu që programet përpiqen të përputhen me standardin ANSI pa e lënë atë t'i kufizojë shumë ato. ANSI është një lloj standardi minimal - ju mund të bëni më shumë sesa lejon, por duhet të jeni në gjendje të merrni të njëjtat rezultate kur kryeni të njëjtën detyrë.

ÇFARË ËSHTË NJË "Përdorues"?

SQL zakonisht qëndron në sistemet kompjuterike që kanë më shumë se një përdorues dhe për këtë arsye duhet të bëjë dallimin midis tyre (familja juaj e PC-së mund të ketë çdo numër përdoruesish, por zakonisht nuk ka një mënyrë për të dalluar një përdorues nga tjetri).

Në mënyrë tipike, në një sistem të tillë, çdo përdorues ka një lloj kodi verifikimi të të drejtave që e identifikon atë (terminologjia ndryshon). Në fillim të një sesioni me një kompjuter, përdoruesi regjistrohet (regjistrohet), duke i treguar kompjuterit se kush është përdoruesi duke e identifikuar veten duke përdorur një ID specifike. Çdo numër i njerëzve që përdorin një ID të aksesit janë përdorues individualë; dhe në mënyrë të ngjashme, një person mund të përfaqësojë një numër të madh përdoruesish (në kohë të ndryshme) duke përdorur ID të ndryshme aksesi SQL. Veprimet në shumicën e mjediseve SQL janë hartuar në një identifikues të veçantë të aksesit që përputhet saktësisht me një përdorues specifik. Një tabelë ose objekt tjetër është në pronësi të një përdoruesi që ka kontroll të plotë mbi të. Përdoruesi mund ose nuk mund të ketë privilegjin për të kryer një veprim në objekt. Për qëllimet tona, ne do të biem dakord që çdo përdorues të ketë privilegjet e nevojshme për të kryer çdo veprim derisa të kthehemi në mënyrë specifike në diskutimin e privilegjeve në Kapitullin 22. Vlera e veçantë USER mund të përdoret si argument në një komandë. Ai tregon ID-në e disponueshme të përdoruesit që lëshon komandën.

Konventat dhe terminologjia

Fjalët kyçe janë fjalë që kanë kuptim të veçantë në SQL. Ato mund të jenë komanda, por jo emra teksti ose objektesh. Fjalët kyçe do t'i theksojmë duke i shtypur me SHKRONJA KRYESORE. Duhet të keni kujdes që të mos ngatërroni fjalë kyçe me terma.

SQL ka disa terma të veçantë që përdoren për ta përshkruar atë. Midis tyre janë fjalë të tilla si "pyetje", "klauzolë" dhe "kallëzues", të cilat janë më të rëndësishmet në përshkrimin dhe kuptimin e gjuhës, por nuk nënkuptojnë asgjë të pavarur për SQL.

Komandat ose deklaratat janë udhëzime me të cilat ju aksesoni një bazë të dhënash SQL.

Komandat përbëhen nga një ose më shumë pjesë logjike të veçanta të quajtura klauzola.

Fjalitë fillojnë me një fjalë kyçe dhe përbëhen nga fjalë kyçe dhe argumente. Për shembull, klauzolat që mund të hasni janë "FROM Shitës" dhe "WHERE city = "London"". Argumentet plotësojnë ose ndryshojnë kuptimin e një fjalie. Në shembujt e mësipërm, Shitësit është argumenti dhe FROM është fjala kyçe e klauzolës FROM. Në mënyrë të ngjashme, "qytet = "Londër"" është një argument për klauzolën WHERE.

Objektet janë struktura të bazës së të dhënave që u jepen emra dhe ruhen në memorie. Kjo përfshin tabelat bazë, pamjet dhe indekset.

Për t'ju treguar se si formohen ekipet, ne do ta bëjmë këtë me shembuj. Megjithatë, ekziston një metodë më formale e përshkrimit të komandave që përdor konventa të standardizuara. Ne do ta përdorim atë në kapitujt e mëvonshëm si një lehtësi për të kuptuar këto konventa në rast se i hasni në dokumente të tjera SQL.

Kllapat katrore () do të tregojnë pjesë që mund të mos përdoren, dhe elipset (...) tregojnë se gjithçka para tyre mund të përsëritet çdo herë. Fjalët në kllapa këndore () janë terma të veçantë që shpjegojnë se çfarë janë. Ne kemi thjeshtuar shumë terminologjinë standarde SQL pa e bërë të vështirë për t'u kuptuar.

Përmbledhje

Ne trajtuam shkurtimisht bazat në këtë kapitull. Por qëllimi ynë ishte që të mbulonim shpejt bazat e SQL në mënyrë që të mund të mbulonit të gjithë hapësirën e informacionit.

Tani ju dini disa gjëra rreth SQL: cila është struktura e saj, si përdoret, si përfaqëson të dhënat dhe si përkufizohen (dhe disa mospërputhje që vijnë me të), disa konventa dhe terma të përdorur për t'i përshkruar ato. E gjithë kjo është shumë informacion për një kapitull; Ne nuk presim që ju të mbani mend të gjitha këto detaje, por ju mund t'u referoheni atyre më vonë nëse keni nevojë.

GJUHA SQL: MANIPULIMI I TË DHËNAVE

NË KËTË LEKTORË...

· Qëllimi i Strukturës Query Language (SQL) dhe roli i saj i veçantë gjatë punës me bazat e të dhënave.

· Historia e shfaqjes dhe zhvillimit të gjuhës SQL.

· Shkrimi i deklaratave SQL.

· Marrja e informacionit nga bazat e të dhënave duke përdorur deklaratën SELECT.

· ndërtimi i deklaratave SQL të karakterizuara nga karakteristikat e mëposhtme:

· duke përdorur konstruktin WHERE për të zgjedhur rreshta që plotësojnë kushte të ndryshme;

· renditja e rezultateve të pyetjeve duke përdorur konstruktin ORDER BY;

· përdorimi i funksioneve të grumbullimit SQL;

· grupimi i të dhënave të përzgjedhura duke përdorur konstruktin GROUP BY;

· përdorimi i nënpyetjeve;

· përdorimi i lidhjeve të tabelave;

· aplikimi i operacioneve me grupe (UNION, INTERSECT, EXCEPT).

· Bërja e ndryshimeve në bazën e të dhënave duke përdorur deklaratat INSERT, UPDATE dhe DELETE.

Një nga gjuhët që u shfaq si rezultat i zhvillimit të modelit të të dhënave relacionale është SQL, e cila tani është bërë shumë e përhapur dhe në fakt është bërë gjuha standarde për bazat e të dhënave relacionale. Standardi i gjuhës SQL u lëshua nga Instituti Kombëtar i Standardeve të SHBA (ANSI) në 1986, dhe në 1987 Organizata Ndërkombëtare për Standardizim (ISO) e miratoi këtë standard si një standard ndërkombëtar. Aktualisht, gjuha SQL mbështetet nga qindra lloje të ndryshme të DBMS-ve, të zhvilluara për një shumëllojshmëri të gjerë platformash kompjuterike, duke filluar nga kompjuterët personalë tek kompjuterët kryesorë.

Ky leksion përdor përkufizimin ISO të SQL.

Hyrje në SQL

Në këtë pjesë, do të shikojmë qëllimin e gjuhës SQL, do të njihemi me historinë e saj dhe do të analizojmë arsyet pse ajo tani është bërë kaq e rëndësishme për aplikacionet e bazës së të dhënave.

Qëllimi i gjuhës SQL

Çdo gjuhë e krijuar për të punuar me bazat e të dhënave duhet t'i sigurojë përdoruesit aftësitë e mëposhtme:

· të krijojë baza të të dhënave dhe tabela me një përshkrim të plotë të strukturës së tyre;



· Kryen operacione bazë të manipulimit të të dhënave, si futja, modifikimi dhe fshirja e të dhënave nga tabelat;

· Kryen pyetje të thjeshta dhe komplekse.

Përveç kësaj, gjuha e bazës së të dhënave duhet të zgjidhë të gjitha problemet e mësipërme me përpjekje minimale nga ana e përdoruesit, dhe struktura dhe sintaksa e komandave të saj duhet të jetë mjaft e thjeshtë dhe e lehtë për t'u mësuar.

Dhe së fundi, gjuha duhet të jetë universale, d.m.th. plotësojnë disa standarde të njohura, të cilat do të lejojnë përdorimin e së njëjtës strukturë sintakse dhe komanduese kur lëvizni nga një DBMS në tjetrën. Standardi modern i gjuhës SQL plotëson pothuajse të gjitha këto kërkesa.

SQL është një shembull i një gjuhe të transformimit të të dhënave, ose një gjuhë e krijuar për të punuar me tabela për të transformuar të dhënat hyrëse në formën e dëshiruar të daljes. Gjuha SQL, e cila përcaktohet nga standardi ISO, ka dy komponentë kryesorë:

· Gjuha e përkufizimit të të dhënave (DDL), e krijuar për të përcaktuar strukturat e bazës së të dhënave dhe për të kontrolluar aksesin në të dhëna;

· Gjuha e manipulimit të të dhënave (DML), e krijuar për marrjen dhe përditësimin e të dhënave.

Para ardhjes së standardit SQL3, SQL përfshinte vetëm komanda për përcaktimin dhe manipulimin e të dhënave; i mungonte ndonjë urdhër për të kontrolluar ecurinë e llogaritjeve. Me fjalë të tjera, kjo gjuhë nuk kishte IF ... THEN ... TJETËR, GO TO, DO ... WHILE dhe çdo komandë tjetër të krijuar për të kontrolluar ecurinë e procesit llogaritës. Detyra të tilla duhej të zgjidheshin në mënyrë programore, duke përdorur gjuhë programimi ose kontrolli të detyrave, ose në mënyrë interaktive, si rezultat i veprimeve të kryera nga vetë përdoruesi. Për shkak të kësaj paplotësie, nga pikëpamja e organizimit të procesit kompjuterik, gjuha SQL mund të përdoret në dy mënyra. E para përfshinte punë interaktive, që konsistonte në futjen e deklaratave individuale SQL nga përdoruesi nga terminali. E dyta ishte futja e deklaratave SQL në programet gjuhësore procedurale.

Përparësitë e gjuhës SQL3, përkufizimi zyrtar i së cilës u miratua në 1999:

· Gjuha SQL është relativisht e lehtë për t'u mësuar.

· Është një gjuhë jo-procedurale, prandaj duhet të specifikojë se çfarë informacioni duhet të merret, jo si mund të merret. Me fjalë të tjera, gjuha SQL nuk kërkon specifikimin e metodave të aksesit të të dhënave.

· Si shumica e gjuhëve moderne, SQL mbështet një format falas për të shkruar deklarata. Kjo do të thotë që elementët individualë të operatorit nuk shoqërohen me pozicione fikse në ekran ndërsa shkruani.

· Struktura e komandës përcaktohet nga një grup fjalësh kyçe, të cilat janë fjalë të zakonshme angleze, si për shembull CREATE TABLE - Create a table, INSERT - Insert, SELECT - Select.

Për shembull:

KRIJO TABELA [Shitjet] ( (S), [Emri i objektit] VARCHAR(15), [Kostoja] DECIMAL (7,2));

INSERT INTO [Object] VALUES ("SG16", "Brown", 8300);

SELECT , [Emri i objektit], [Kosto];

NGA [Shitjet]

KU [Kosto] > 10000;

· Gjuha SQL mund të përdoret nga një gamë e gjerë përdoruesish, duke përfshirë administratorët e bazës së të dhënave (DBA), personelin e menaxhimit të kompanisë, programuesit e aplikacioneve dhe shumë përdorues të tjerë fundorë të kategorive të ndryshme.

Aktualisht, ekzistojnë standarde ndërkombëtare për gjuhën SQL që e përcaktojnë zyrtarisht atë si gjuhë standarde për krijimin dhe manipulimin e bazave të të dhënave relacionale, siç është në të vërtetë.

Historia e gjuhës SQL

Historia e modelit të të dhënave relacionale, dhe indirekt gjuhës SQL, filloi në vitin 1970 me botimin e një artikulli themelor nga E. F. Codd, i cili në atë kohë punonte në laboratorin kërkimor të IBM në San Jose. Në vitin 1974, D. Chamberlain, i cili punonte në të njëjtin laborator, botoi një përkufizim të një gjuhe të quajtur "Gjuha e strukturuar e pyetjeve angleze", ose SEQUEL. Një version i rishikuar i kësaj gjuhe, SEQUEL/2, doli në 1976; më pas emri i saj duhej të ndryshohej në SQL për arsye ligjore - shkurtesa SEQUEL ishte tashmë në përdorim nga filologët. Por edhe sot e kësaj dite, shumë njerëz ende e shqiptojnë akronimin SQL si "vazhdim", megjithëse zyrtarisht rekomandohet ta lexoni atë si "es-qu-el".

Në vitin 1976, IBM lëshoi ​​​​një prototip DBMS bazuar në gjuhën SEQUEL/2, të quajtur "System R". Qëllimi i kësaj prove ishte të testonte fizibilitetin e zbatimit të modelit relacional. Ndër aspektet e tjera pozitive, rezultati më i rëndësishëm i këtij projekti mund të konsiderohet zhvillimi i vetë gjuhës SQL, megjithatë, rrënjët e kësaj gjuhe shkojnë prapa në gjuhën SQUARE (Specifying Queries as Rational Expressions), e cila ishte paraardhësi i gjuhës SQUARE. Projekti System R Gjuha SQUARE u zhvillua si një mjet kërkimor për zbatimin e algjebrës relacionale përmes frazave të përbëra në anglisht.

Në fund të viteve 1970, kompania që tani është bërë Oracle Corporation lëshoi ​​Oracle DBMS. Ndoshta ky është zbatimi i parë komercial i një DBMS relacionale të ndërtuar duke përdorur gjuhën SQL.

Pak më vonë, u shfaq INGRES DBMS, duke përdorur gjuhën e pyetjeve QUEL.

Kjo gjuhë ishte më e strukturuar se SQL, por semantika e saj ishte më pak e afërt me anglishten e zakonshme. Më vonë, kur SQL u miratua si gjuhë standarde për bazat e të dhënave relacionale, DBMS INGRES u konvertua plotësisht për ta përdorur atë. Në 1981, IBM lëshoi ​​​​DBMS-në e saj të parë relacionale tregtare, të quajtur SQL/DS (për mjedisin DOS/VSE). Në 1982, një version i këtij sistemi u lëshua për mjedisin VM/CMS, dhe në 1983 - për mjedisin MVS, por tashmë me emrin DB2.

Në vitin 1982, Instituti Kombëtar i Standardeve të SHBA (ANSI) filloi punën në gjuhën e bazës së të dhënave të marrëdhënieve (RDL), e udhëhequr nga dokumentet konceptuale të marra nga IBM Corporation. Në vitin 1983, Organizata Ndërkombëtare për Standardizim (ISO) u përfshi në këtë punë. Përpjekjet e përbashkëta të të dy organizatave arritën kulmin me lëshimin e standardit të gjuhës SQL. Emri RDL u braktis në 1984 dhe gjuha e draftit u ridizajnua për të qenë më afër zbatimeve ekzistuese të gjuhës SQL.

Versioni origjinal i standardit, i cili u lëshua nga ISO në 1987, tërhoqi një valë kritikash. Në veçanti, Date, një studiues i mirënjohur në këtë fushë, vuri në dukje se standardi i hoqi funksionet kritike, duke përfshirë kontrollet e integritetit referencial dhe disa operatorë relacionalë.

Përveç kësaj, ai vuri në dukje tepricën e tepërt të gjuhës - e njëjta kërkesë mund të shkruhet në disa versione të ndryshme. Shumica e kritikave u njohën si të drejta dhe standardi u bë rregullimet e nevojshme përpara publikimit të tij. Megjithatë, u vendos që ishte më e rëndësishme të lëshohej standardi sa më shpejt që të ishte e mundur, në mënyrë që të mund të shërbente si një bazë e përbashkët mbi të cilën vetë gjuha dhe zbatimet e saj mund të zhvilloheshin më tej, në vend që të prisnin deri në të gjitha tiparet që janë të ndryshme. ekspertët e konsideruar të detyrueshëm u përcaktuan dhe ranë dakord për një gjuhë të ngjashme.

Në 1989, ISO publikoi një ndryshim në standardin që përcaktoi funksionet e integritetit të të dhënave. Në vitin 1992, u lëshua versioni i parë i rishikuar thelbësisht i standardit ISO, i quajtur ndonjëherë SQL2 ose SQL-92. Megjithëse disa nga funksionet u përcaktuan për herë të parë në këtë standard, shumë prej tyre tashmë janë zbatuar tërësisht ose pjesërisht në një ose më shumë zbatime komerciale të gjuhës SQL.

Dhe versioni tjetër i standardit, i cili zakonisht quhet SQL3, u lëshua vetëm në 1999. Ky version ofron mbështetje shtesë për veçoritë e menaxhimit të të dhënave të orientuara nga objekti.

Funksionet që i shtohen standardit të gjuhës nga zhvilluesit e implementimeve komerciale quhen zgjerime. Për shembull, standardi i gjuhës SQL përcakton gjashtë lloje të ndryshme të dhënash që mund të ruhen në bazat e të dhënave. Në shumë zbatime, kjo listë plotësohet nga shtesa të ndryshme. Çdo zbatim i një gjuhe quhet dialekt. Nuk ka dy dialekte që janë plotësisht identike dhe aktualisht nuk ka asnjë dialekt që përputhet plotësisht me standardin ISO.

Për më tepër, ndërsa zhvilluesit e bazës së të dhënave shtojnë funksionalitete të reja në sistemet e tyre, ata vazhdimisht zgjerojnë dialektet e tyre të SQL, duke bërë që dialektet individuale të bëhen gjithnjë e më të ndryshme nga njëra-tjetra. Megjithatë, thelbi bazë i gjuhës SQL mbetet pak a shumë i standardizuar në të gjitha implementimet.

Megjithëse konceptet origjinale të gjuhës SQL u zhvilluan nga IBM, rëndësia e saj shpejt nxiti zhvilluesit e tjerë të krijonin implementimet e tyre. Aktualisht, ka qindra produkte të disponueshme në treg të ndërtuara duke përdorur gjuhën SQL dhe ne vazhdimisht dëgjojmë për lëshimin e gjithnjë e më shumë versioneve të reja,

Funksionaliteti i gjuhës SQL

Funksionaliteti kryesor i gjuhës SQL është dhënë më poshtë.

Përkufizimi i të dhënave. Ky funksion SQL është një përshkrim i strukturës së të dhënave të mbështetura dhe organizimit të marrëdhënieve relacionale (tabelave). Operatorët për krijimin e një baze të dhënash, krijimin e tabelave dhe aksesin e të dhënave synojnë ta zbatojnë atë.

Krijimi i bazës së të dhënave. Për të krijuar një bazë të dhënash të re, përdorni deklaratën CREATE DATABASE. Struktura e deklaratës specifikon emrin e bazës së të dhënave që do të krijohet.

Krijimi i tabelave. Tabela bazë krijohet duke përdorur deklaratën CREATE TABLE. Kjo deklaratë specifikon emrat e fushave, llojet e të dhënave për to dhe gjatësinë (për disa lloje të dhënash). SQL përdor llojet e mëposhtme të të dhënave:

INTEGER – numër i plotë;

CHAR – vlera e karakterit;

VARCHAR – vlera e karakterit, ruhen vetëm karaktere jo bosh;

DECIMAL – numër dhjetor;

FLOAT – numër me pikë lundruese;

DOUBLE PRECISION – pikë lundruese me saktësi të dyfishtë;

DATETIME – data dhe ora;

BOOL – Vlera Boolean.

Deklarata e krijimit të tabelës specifikon kufizime në vlerat e kolonës dhe në tabelë. Kufizimet e mundshme janë paraqitur në tabelë. 4.8

Tabela 4.8 Kufizimet në të dhënat e përcaktuara

Për një model të të dhënave relacionale, specifikimi i një çelësi të huaj (FOREIGNKEY) është thelbësor. Kur deklaroni çelësat e huaj, duhet të vendosni kufizime të përshtatshme në kolonë, si NOT NULL.

Në një deklaratë SQL, CHECK tregon kufizime semantike që sigurojnë integritetin e të dhënave, siç është kufizimi i grupit të vlerave të vlefshme për një kolonë të veçantë.

Ju nuk mund të përdorni deklaratën e krijimit të tabelës më shumë se një herë në të njëjtën tabelë. Nëse pas krijimit të tij zbulohen pasaktësi në përkufizimin e tij, atëherë ndryshimet mund të bëhen duke përdorur deklaratën ALTER TABLE. Kjo deklaratë është krijuar për të ndryshuar strukturën e një tabele ekzistuese: ju mund të hiqni ose shtoni një fushë në një tabelë ekzistuese.

Manipulimi i të dhënave. SQL lejon një përdorues ose program aplikimi të ndryshojë përmbajtjen e një baze të dhënash duke futur të dhëna të reja, duke fshirë ose modifikuar të dhënat ekzistuese.

Futja e të dhënave të rejaështë një procedurë për shtimin e rreshtave në një bazë të dhënash dhe kryhet duke përdorur deklaratën INSERT.

Modifikimi i të dhënave përfshin ndryshime në vlerat në një ose më shumë kolona të një tabele dhe kryhet duke përdorur një deklaratë UPDATE. Shembull:

SET shuma=shuma+1000,00

KU shuma>0

Heqja e rreshtave nga një tabelë duke përdorur deklaratën DELETE. Sintaksa e operatorit është:

NGA tavolina

Klauzola WHERE është fakultative, por nëse nuk përfshihet, të gjitha shënimet në tabelë do të fshihen. Është e dobishme të përdorni deklaratën SELECT me të njëjtën sintaksë si deklarata DELETE për të kontrolluar paraprakisht se cilat regjistrime do të fshihen.

Sigurimi i integritetit të të dhënave. Gjuha SQL ju lejon të përcaktoni kufizime mjaft komplekse të integritetit, kënaqësia e të cilave do të kontrollohet për të gjitha modifikimet e bazës së të dhënave. Monitorimi i rezultateve të transaksioneve, përpunimi i gabimeve që ndodhin dhe koordinimi i punës paralele me bazën e të dhënave të disa aplikacioneve ose përdoruesve sigurohet nga COMMIT (shënon përfundimin me sukses të transaksionit aktual dhe fillimin e një të ri) dhe ROLLBACK (nevoja për një rikthim - rikthim automatik i gjendjes së bazës së të dhënave në fillim të transaksionit) operatorët.

Kampionimi i të dhënaveështë një nga funksionet më të rëndësishme të bazës së të dhënave që korrespondon me deklaratën SELECT. Një shembull i përdorimit të operatorit u diskutua në seksionin e mëparshëm.

Në SQL, ju mund të krijoni sekuenca të mbivendosura të pyetjeve (nënpyetjeve). Ekzistojnë disa lloje të pyetjeve që zbatohen më së miri duke përdorur nënpyetje. Këto pyetje përfshijnë të ashtuquajturat kontrolle të ekzistencës. Le të supozojmë se dëshironi të merrni të dhëna për studentët që nuk kanë notë me shtatë pikë. Nëse kthehet një grup bosh, atëherë kjo do të thotë vetëm një gjë - secili student ka të paktën një notë të tillë.

Lidhja e tabelave. Deklaratat SQL ju lejojnë të merrni të dhëna nga më shumë se një tabelë. Një mënyrë për ta bërë këtë është lidhja e tabelave duke përdorur një fushë të përbashkët.

Deklarata SELECT duhet të përmbajë një kufizim për përputhjen e vlerave të një kolone (fushe) specifike. Pastaj vetëm ato rreshta në të cilat përputhen vlerat e kolonës së specifikuar do të merren nga tabelat përkatëse. Emri i kolonës tregohet vetëm së bashku me emrin e tabelës; përndryshe deklarata do të jetë e paqartë.

Ju mund të përdorni lloje të tjera të lidhjeve të tabelave: operatori INTER JOIN (bashkimi i brendshëm) siguron që grupi i rekordeve që rezulton përmban vlera që përputhen në fushat përkatëse. Lidhjet e jashtme (OUTER JOIN) ju lejojnë të përfshini në rezultatin e pyetjes të gjitha rreshtat nga një tabelë dhe rreshtat përkatës nga një tjetër

Kontrolli i aksesit. SQL siguron sinkronizimin e përpunimit të bazës së të dhënave nga programe të ndryshme aplikative dhe mbrojtjen e të dhënave nga aksesi i paautorizuar.

Qasja e të dhënave në një mjedis me shumë përdorues kontrollohet duke përdorur deklaratat GRANT dhe REVOKE. Në çdo deklaratë është e nevojshme të specifikoni përdoruesin, objektin (tabelën, pamjen) në lidhje me të cilin janë vendosur lejet dhe vetë lejet. Për shembull, deklarata GRANT i jep përdoruesit X mundësinë për të marrë të dhëna nga tabela PRODUCT:

GRANT PERZGJEDHJE TE PRODUKTIT TE X

Deklarata REVOKE revokon të gjitha lejet e dhëna më parë.

Përfshirja e SQL në programet e aplikimit. Aplikacionet reale zakonisht shkruhen në gjuhë të tjera që gjenerojnë kodin SQL dhe e kalojnë atë në DBMS si tekst ASCII.

Standardi IBM për produktet SQL rregullon përdorimin e gjuhës së integruar SQL. Kur shkruani një program aplikacioni, teksti i tij është një përzierje komandash nga gjuha kryesore e programimit (për shembull, C, Pascal, Cobol, Fortran, Assembler) dhe komandat SQL me një parashtesë të veçantë, për shembull. ExecSQL. Struktura e deklaratave SQL është zgjeruar për të akomoduar variablat e gjuhës pritës në një konstrukt SQL.



Procesori SQL modifikon llojin e programit në përputhje me kërkesat e përpiluesit të gjuhës kryesore të programimit. Funksioni i përpiluesit është të përkthejë (përkthejë) një program nga gjuha e programimit burim në një gjuhë afër gjuhës së makinës. Pas përpilimit, programi i aplikimit (aplikacioni) është një modul i pavarur.

dialektet SQL

DBMS-të relacionale moderne përdorin dialekte të gjuhës SQL për të përshkruar dhe manipuluar të dhënat. Një nëngrup i gjuhës SQL që ju lejon të krijoni dhe përshkruani një bazë të dhënash quhet DDL (Data Definition Language).

Fillimisht, gjuha SQL u quajt SEQUEL (Structured English Query Language), më pas SEQUEL/2 dhe më pas thjesht SQL. Sot, SQL është standardi de fakto për DBMS-të relacionale.

Standardi i parë i gjuhës u shfaq në 1989 - SQL-89 dhe u mbështet nga pothuajse të gjitha DBMS-të relacionale tregtare. Ai kishte natyrë të përgjithshme dhe i nënshtrohej një interpretimi të gjerë. Përparësitë e SQL-89 mund të konsiderohen standardizimi i sintaksës dhe semantikës së operatorëve për marrjen e mostrave dhe manipulimin e të dhënave, si dhe fiksimi i mjeteve për kufizimin e integritetit të bazës së të dhënave. Megjithatë, i mungonte një seksion kaq i rëndësishëm si manipulimi i skemës së bazës së të dhënave. Paplotësia e standardit SQL-89 çoi në shfaqjen në 1992. versioni tjetër i gjuhës SQL.

SQL2 (ose SQL-92) mbulon pothuajse të gjitha çështjet e nevojshme: manipulimin e skemës së bazës së të dhënave, menaxhimin e transaksioneve dhe sesioneve, mbështetjen për arkitekturat klient-server ose mjetet e zhvillimit të aplikacioneve.

Hapi tjetër në zhvillimin e gjuhës është versioni SQL 3 Ky version i gjuhës plotësohet nga një mekanizëm nxitës, përkufizimi i një lloji arbitrar të të dhënave dhe një shtrirje objekti.

Aktualisht ekzistojnë tre nivele të gjuhës: fillestar, i mesëm dhe i plotë. Shumë prodhues të DBMS-ve të tyre përdorin implementimet e tyre SQL, bazuar të paktën në nivelin fillestar të standardit përkatës ANSI, dhe që përmbajnë disa shtesa specifike për një DBMS të veçantë. Në tabelë 4.9 jep shembuj të dialekteve SQL.

Tabela 4.9 Dialektet SQL

DBMS Gjuha e pyetjes
Sistemi R DBMS SQL
DB2 SQL
Qasja SQL
SYBASE SQL Kudo Watcom-SQL
Serveri SYBASE SQL Transact_SQL
SQL-ja ime SQL
Orakulli PL/SQL

Bazat e të dhënave të orientuara nga objekti përdorin gjuhën e pyetjes së objektit OQL (Object Query Language). Gjuha OQL u bazua në komandën SELECT të gjuhës SQL2 dhe shtoi aftësinë për të drejtuar një pyetje në një objekt ose koleksion objektesh, si dhe aftësinë për të thirrur metoda brenda një pyetjeje të vetme.

Përputhshmëria e shumë dialekteve të përdorura SQL përcakton përputhshmërinë e DBMS. Kështu, SYBASE SQL Anywhere DBMS është sa më e pajtueshme për një DBMS të kësaj klase me SYBASE SQL Server DBMS. Një nga aspektet e kësaj përputhshmërie është mbështetja në SYBASE SQL Kudo e një dialekti të tillë të gjuhës SQL si Transact-SQL. Ky dialekt përdoret në SYBASE SQL Server dhe mund të përdoret në SYBASE SQL Anywhere së bashku me dialektin vendas SQL - Watcom-SQL.

Pyetje kontrolli

1. Si mund të klasifikohet një DBMS?

2. Cilat modele të bazës së të dhënave ekzistojnë?

3. Cilët janë elementët kryesorë të modeleve të informacionit?

4. Cilat lloje të marrëdhënieve ekzistojnë ndërmjet subjekteve?

5. Çfarë janë diagramet ER dhe për çfarë përdoren?

6. Çfarë ju lejon të bëni procedura e normalizimit të tabelës?

7. Cilat janë mjetet gjuhësore dhe softuerike të DBMS?

8. Çfarë lloji i MS Access DBMS është?

9. Cilat janë objektet kryesore të MS Access DBMS?

10. Për çfarë përdoren operatorët kryesorë SQL?

Struktura Query Language (SQL) u krijua si rezultat i zhvillimit të modelit të të dhënave relacionale dhe aktualisht është gjuha standarde de facto për DBMS-të relacionale. Gjuha SQL sot mbështetet nga një numër i madh DBMS të llojeve të ndryshme.

Emri i gjuhës SQL zakonisht shqiptohet "es-qu-el". Ndonjëherë përdoret emri mnemonik "See-Quel".

Gjuha SQL i ofron përdoruesit (me përpjekje minimale nga ana e tij) aftësitë e mëposhtme:

Krijoni baza të të dhënave dhe tabela me një përshkrim të plotë të strukturës së tyre

Kryeni operacionet bazë të manipulimit të të dhënave: futja, ndryshimi, fshirja e të dhënave

Drejtoni pyetje të thjeshta dhe komplekse.

Gjuha SQL është relacionalisht e plotë.

Struktura dhe sintaksa e komandave të saj janë mjaft të thjeshta, dhe vetë gjuha është universale, d.m.th. sintaksa dhe struktura e komandave të saj nuk ndryshon kur lëviz nga një DBMS në tjetrën.

Gjuha SQL ka dy komponentë kryesorë:

DDL (Data Definition Language) për përcaktimin e strukturave të bazës së të dhënave dhe kontrollin e aksesit në të dhëna

Gjuhë DML (Data Manipulation Language) e krijuar për marrjen dhe përditësimin e të dhënave.

SQL është një gjuhë jo-procedurale, që do të thotë se kur e përdorni, duhet të specifikoni se çfarë informacioni duhet të merret, jo se si mund të merret. Komandat SQL janë fjalë të zakonshme angleze (SELECT, INSERT, etj.). Le të shohim së pari deklaratat SQL DML:

SELECT - zgjedhja e të dhënave nga baza e të dhënave

INSERT - futja e të dhënave në një tabelë

UPDATE - përditësimi i të dhënave në një tabelë

DELETE - fshirja e të dhënave nga një tabelë

ZGJIDH deklaratën

Operatori SELECT kryen veprime ekuivalente me operacionet e mëposhtme të algjebrës relacionale: përzgjedhje, projeksion dhe bashkim.

Pyetja më e thjeshtë SQL duke e përdorur atë duket si kjo:

ZGJIDH col_name NGA tbl

Fjala kyçe e përzgjedhjes ndiqet nga një listë kolonash e ndarë me presje, të dhënat e të cilave do të kthehen nga pyetësori. Fjala kyçe from specifikon nga cila tabelë (ose pamje) merren të dhënat.

Rezultati i një pyetjeje të përzgjedhur është gjithmonë një tabelë e quajtur tabela e rezultateve. Për më tepër, rezultatet e një pyetjeje të ekzekutuar duke përdorur deklaratën select mund të përdoren për të krijuar një tabelë të re. Nëse rezultatet e dy pyetjeve në tabela të ndryshme kanë të njëjtin format, mund t'i kombinoni ato në një tabelë. Gjithashtu, tabela e marrë si rezultat i një pyetjeje mund të jetë objekt i pyetjeve të mëtejshme.

Për të zgjedhur të gjitha kolonat dhe të gjitha rreshtat e një tabele, thjesht lëshoni një SELECT * FROM tbl;

Konsideroni tabelën e produkteve, e cila përmban informacione për çmimet për lloje të ndryshme produktesh:

Kërkoni rezultat

ZGJIDH * NGA Produkti;

do të jetë e gjithë tabela e produktit.

Ju mund të zgjidhni kolona specifike të tabelës duke përdorur një pyetje

SELECT col1, col2, … , coln FROM tbl;

Pra, rezultati i kërkesës

SELECT Lloji, Çmimi NGA Produkti;

do të ketë një tryezë

Lista e kolonave në deklaratën e përzgjedhjes përdoret gjithashtu nëse është e nevojshme të ndryshoni renditjen e kolonave në tabelën që rezulton:

Për të zgjedhur vetëm ato rreshta të tabelës që plotësojnë kufizime të caktuara, përdoret një fjalë kyçe e veçantë, e ndjekur nga një kusht logjik. Nëse një rekord e plotëson këtë kusht, ai përfshihet në rezultat. Përndryshe, hyrja hidhet poshtë.

Për shembull, zgjedhja e atyre produkteve nga tabela e produkteve, çmimi i të cilave plotëson kushtin e Çmimit<3200, можно осуществить, используя запрос

ZGJEDHNI * NGA Produkti ku Çmimi<3200;

Rezultati i tij:

Kushti mund të jetë i përbërë dhe i kombinuar duke përdorur operatorët logjik NOT , AND, OR, XOR, për shembull: ku id_ Çmimi>500 DHE Çmimi<3500. Допускается также использование выражений в условии: where Price>(1+1) dhe konstantet e vargut: ku emri= "autoweights".

Përdorimi i konstruksionit BETWEEN var1 AND var2 ju lejon të kontrolloni nëse vlerat e ndonjë shprehjeje bien brenda intervalit nga var1 në var2 (duke përfshirë këto vlera):

ZGJEDH * NGA produkti ku Çmimi MES 3000 DHE 3500;

Ngjashëm me operatorin NOT BETWEEN, ekziston operatori NOT IN.

Emrat e kolonave të specifikuara në klauzolën SELECT mund të riemërohen. Për këtë përdoret fjala kyçe AS, e cila, megjithatë, mund të hiqet, pasi nënkuptohet në mënyrë implicite. Për shembull, kërkesa

SELECT Lloji model AS, Type_id AS num FROM Produkt ku Type_id =3

do të kthehet (emrat e pseudonimit duhet të shkruhen pa thonjëza):

Operatori LIKE është krijuar për të krahasuar një varg me një model:

SELECT * NGA tbl ku col_name LIKE "abc"

Ky pyetje kthen vetëm ato rekorde që përmbajnë vlerën e vargut abc në kolonën col_name.

Mostra lejohet të përdorë dy shkronja të egra: "_" dhe "%". E para prej tyre zëvendëson një karakter arbitrar në shabllon, dhe e dyta zëvendëson një sekuencë karakteresh arbitrare. Pra, "abc%" përputhet me çdo varg që fillon me abc, "abc_" përputhet me një varg 4 karakteresh që fillon me abc, "%z" përputhet me çdo varg që mbaron me z dhe së fundi, "%z%" - sekuenca karakteresh që përmbajnë z.

Ju mund t'i gjeni të gjitha regjistrimet e tabelës së produktit në të cilën vlera e tipit fillon me shkronjën "a" si kjo:

SELECT * NGA Produkti ku Shkruani LIKE "a%";

peshore kamioni

Nëse vargu i kërkimit përmban një karakter wildcard, atëherë duhet të specifikoni karakterin e ikjes në klauzolën ESCAPE. Ky karakter kontrolli duhet të përdoret në modelin përpara karakterit të shkrepjes, duke treguar se karakteri i shkronjës duhet të trajtohet si një karakter i rregullt. Për shembull, nëse do të kërkonit të gjitha vlerat në një fushë që përmban karakterin "_", atëherë modeli "%_%" do të rezultonte që të gjitha të dhënat nga tabela të kthehen. Në këtë rast, shablloni duhet të shkruhet si më poshtë:

"%|_%" SHKAT "|"

Për të kontrolluar vlerën për pajtueshmërinë me vargun "20%", mund të përdorni operatorin e mëposhtëm:

Pëlqej "20#%" IKË "#"

Operatori IS NULL ju lejon të kontrolloni mungesën (prezencën) e një vlere NULL në fushat e një tabele. Përdorimi i operatorëve të rregullt të krahasimit në këto raste mund të prodhojë rezultate të pasakta, sepse krahasimi me NULL rezulton në PANJOHUR. Kështu, gjendja e përzgjedhjes duhet të duket si kjo:

ku emri_col ËSHTË NULL, në vend të ku col_name=NULL.

Rezultati i përzgjedhjes së paracaktuar kthen të dhënat në të njëjtin rend në të cilin ato ruhen në bazën e të dhënave. Nëse dëshironi të renditni regjistrimet sipas njërës prej kolonave, duhet të përdorni klauzolën ORDER BY, e ndjekur nga emri i asaj kolone:

ZGJIDH * NGA tbl ORDER BY col_name;

Ky pyetje do të kthejë të dhënat në rend rritës të vlerës së atributit col_name.

Ju gjithashtu mund të renditni regjistrimet sipas kolonave të shumta. Për ta bërë këtë, emrat e tyre duhet të specifikohen pas ORDER BY të ndarë me presje:

ZGJIDH * NGA tbl ORDER BY col_name1, col_name2.

Të dhënat do të renditen sipas fushës col_name1; nëse ka disa regjistrime me një vlerë që përputhet në kolonën col_name1, ato do të renditen sipas fushës col_name2.

Nëse dëshironi t'i renditni regjistrimet në rend të kundërt (për shembull, duke zbritur sipas datës), duhet të specifikoni ORDER BY col_name DESC.

Për renditjen e drejtpërdrejtë, ekziston fjala kyçe ASC, e cila pranohet si vlera e paracaktuar.

Nëse rezultati i mostrës përmban qindra ose mijëra regjistrime, prodhimi dhe përpunimi i tyre kërkon kohë të konsiderueshme.

Prandaj, informacioni shpesh ndahet në faqe dhe i paraqitet përdoruesit në pjesë. Fletëzimi përdoret duke përdorur fjalën kyçe limit e ndjekur nga numri i hyrjeve për t'u shfaqur. Kërkesa e mëposhtme merr 10 rekordet e para, ndërkohë që renditet mbrapsht në fushën col_name1:

ZGJIDH * NGA tbl RENDI SIPAS col_emrit1 KUFIZIMI I DESC 10

Për të rikuperuar 10 rekordet e ardhshme, përdorni fjalën kyçe limit me dy vlera: e para specifikon pozicionin nga i cili duhet të printohet rezultati dhe e dyta specifikon numrin e rekordeve për t'u marrë:

ZGJIDH * NGA tbl RENDOSJE SIPAS col_name1 KUFIZIMI I ZBRITJES 10,10

Për të tërhequr 10 regjistrimet e ardhshme, duhet të përdorni konstruksionin LIMIT 20, 10.

Artikujt më të mirë mbi këtë temë