Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 10
  • Struktura e komandës SQL. Hyrje në menaxhimin e bazës së të dhënave relacionale

Struktura e komandës SQL. Hyrje në menaxhimin e bazës së të dhënave relacionale

Gjuhe pyetje të strukturuara Struktura Query Language (SQL) u krijua si rezultat i zhvillimit modeli relacional të dhëna dhe aktualisht është standardi de facto për gjuhën e DBMS-ve relacionale. Gjuha SQL mbështetet sot një sasi të madhe 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 siguron përdoruesit (me përpjekje minimale nga ana e tij) mundësitë e mëposhtme:

Krijoni baza të të dhënave dhe tabela me përshkrim i plotë strukturat e 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

Gjuha 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 "select" pasohet 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 tavoline e re. Nëse rezultatet e dy pyetjeve për të tabela të ndryshme kanë të njëjtin format, ato mund të kombinohen 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 bëni ZGJIDH pyetjen* NGA tbl;

Konsideroni tabelën e produktit, e cila përmban informacione rreth çmimit të lloje te ndryshme produkte:

Kërkoni rezultat

SELECT * 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ë

Në listën e kolonave në zgjidhni deklaratën Ata gjithashtu përdorin 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, një speciale fjalë kyçe ku pasohet nga 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):

ZGJIDH * 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ë:

"%|_%" IKUR "|"

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 i 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 të dhënat 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ë tërhequr 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 RENDI SIPAS col_emrit1 KUFIZIMI I ZBRITJES 10,10

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

SQL është një gjuhë e strukturuar e pyetjeve. SQL nuk ekziston pa baza të të dhënave - nuk mund të shkruash programe në të, dhe në këtë kuptim nuk është një gjuhë programimi si PHP, por kur duhet të merresh me një DBMS specifike, nuk mund të bësh më pa njohuri për SQL. Ju mund të shkruani pyetje të thjeshta mbi të, ose mund të kryeni transaksione të mëdha që përbëhen nga disa pyetje komplekse. Një pyetje SQL është një lloj komande për një bazë të dhënash. Një komandë e tillë mund të kërkojë kthimin e informacionit që plotëson kriteret specifike, ose të japë udhëzime për të fshirë çdo regjistrim, etj. Një komandë SQL është një varg i thjeshtë, për shembull:

SELECT * NGA Stafi WHERE departamenti

Pyetjet SQL zakonisht janë afër një shprehjeje të thjeshtë në gjuhe angleze. Komanda e mësipërme mund të përkthehet në Rusisht si më poshtë

ZGJIDH TË GJITHA NGA Stafi WHERE clwjiertme"

Është një komandë plotësisht e kuptueshme, është vetëm për të ardhur keq që është shkruar ekskluzivisht në anglisht. Si rezultat i ekzekutimit të një pyetjeje të tillë, DBMS do të kthejë të gjitha të dhënat nga tabela Staff në të cilën fusha e nisjes* Mit_id është e barabartë me tre. Në shembullin tonë, kjo pyetje në fakt zgjedh vetëm programuesit nga e gjithë baza e punonjësve.

Nëse nuk keni punuar më parë me një DBMS, atëherë mund të keni një pyetje të arsyeshme: ku dhe si mund ta ekzekutoni këtë pyetje? Ekzistojnë tre mënyra për të ekzekutuar pyetjet SQL.

1. Mjedis interaktiv për ndërveprim me DBMS. Për shumicën e serverëve DBMS, ekzistojnë programe klientësh (të integruar ose të furnizuar nga palë të treta), në mjedisin e punës të të cilëve mund të shkruani pyetje SQL, t'i ekzekutoni ato dhe të merrni rezultatin. Në mënyrë tipike, mjete të tilla përdoren nga administratorët e bazës së të dhënave dhe nuk lidhen drejtpërdrejt me programimin PHP. Një shembull i një programi klient për të punuar me MySQL është programi MySQL Administrator (http: /www.mysgl.coin/product-s/administratoT/) ose sistemi shumë i popullarizuar PHP phpMyAdmin (http: / /www. phpmyadi'ln. r»et /itummjiage/index.php). Për të filluar, një komplet shpërndarjeje i instaluar tashmë që ka një ndërfaqe konsole do të jetë i mjaftueshëm. Në Linux, duhet të shkruani komandën mysql nga linja e komandës për të hapur një dritare që ju kërkon të futni pyetjet SQL, dhe në Windows, për të nisur të njëjtën ndërfaqe, duhet të ekzekutoni skedarin mysql. exe nga direktoria bin.

2. Pyetjet statike SQL. Në mënyrë tipike, pyetje të tilla shkruhen brenda procedurave të ruajtura në vetë bazat e të dhënave ose të koduara në vetë aplikacionet. Një pyetje statike SQL është e paracaktuar dhe ndryshon vetëm nëse programi ose kodi i procedurës së ruajtur rishkruhet manualisht. Nga PHP, një pyetje e tillë SQL ekzekutohet duke përdorur funksione speciale, të cilat do të diskutohen më vonë.

3. Pyetjet dinamike SQL. Ky lloj përfshin pyetje që nuk mund të përcaktohen plotësisht kur shkruani një aplikacion. i" shembull, kur shkruan një program për të marrë një listë të punonjësve" mt divizione të ndryshme të ndërmarrjes, programuesi nuk di, ci "> për divizionet në kompani dhe cilët punonjës do të përfshihen në to i". Sigurisht , këto të dhëna mund të shkruhen në program në mënyrë strikte, por kur ndryshimi i parë në strukturën e kompanisë, programi mund të hidhet jashtë ose do të duhet të rishkruhet. Pyetjet dinamike ju lejon të krijoni po-gram që janë fleksibël ndaj ndryshimeve të të dhënave. Në PHP, kërkesa të tilla kryhen nga pothuajse të njëjtat funksione si ato statike, vetëm se ato kanë aftësinë të kalojnë disa parametra.

Si një përmbledhje e tre pikave të përshkruara më sipër, mund të themi se pyetjet SQL ekzekutohen nga programe të veçanta administrative ose në mënyra të ndryshme nga skriptet PHP.

Meqenëse një DBMS zgjidh shumë probleme, SQL gjithashtu detyrohet të jetë një gjuhë shumëfunksionale. Ka disa lloje operacionesh që mund të bëhen< \ ществлять с помощью SQL.

1. Përkufizimi i strukturës së bazës së të dhënave. Ky lloj përfshin pyetje që krijojnë dhe modifikojnë tabela dhe indekse. Këto janë zakonisht komanda CRE; “E TA’ LE, ALI’R TA’ LE, ‘ ” ’.INDEKSI TE etj.

2. Manipulimi i të dhënave. Ky lloj përfshin pyetje për të futur (lëvizur), fshirë ose ndryshuar të dhënat në tabela. Këto janë tre komandat kryesore: INSERT. FSHI DHE PËRDITËSOJE.

3. Zgjedhja e të dhënave Kjo përfshin vetëm një komandë SELECT. Ai nuk bën ndryshime në vetë të dhënat, por ju lejon t'i merrni ato nga baza e të dhënave. Edhe pse vetëm një komandë përdoret për të marrë të dhëna, ajo ka një shumë mundësi të mëdha dhe përdoret shumë shpesh në aplikacione.

4. Menaxhimi i serverit DBMS. Ky lloj përfshin kryesisht pyetje për të menaxhuar përdoruesit dhe të drejtat e tyre të aksesit (për shembull, komanda GRANT).

Njohja e mirë e SQL lehtëson shumë punën e një programuesi kur punon me një bazë të dhënash. Aplikacionet mund të jenë të vogla, por kanë funksionalitet të madh vetëm për faktin se SQL merr përsipër shumë detyra.

Si në çdo fushë tjetër të IT, ka standarde në SQL - këto janë ANSI SQL. Shkurtesa ANSI qëndron për Institutin Kombëtar të Standardeve Amrikane. Sidoqoftë, jo më pak për shkak të dallimeve në funksionalitetin e vetë DBMS-ve SQL për të ndryshme

DBMS-të janë ende të ndryshme nga njëra-tjetra. Aktiv ky moment Pothuajse çdo DBMS ka dialektin e vet, i cili zakonisht nuk ndryshon shumë nga standardi i përgjithshëm, por ka karakteristikat e veta. Për shembull, gjuha PL/SQL është e pajtueshme me Oracle dhe PostgreSQL dhe për të punuar me MS SQL Server Përdoret T-SQL.

Për punën e mëvonshme me bazat e të dhënave, ju rekomandojmë të studioni menjëherë standardin me të cilin planifikoni të punoni në të ardhmen. Për shumicën e zhvilluesve të Uebit për momentin, funksionaliteti i MySQL DBMS është i mjaftueshëm (dhe mund të përdoret falas), kështu që në këtë libër do të jepen të gjithë shembujt me MySQL, në përputhje me rrethanat, në dialektin e kësaj DBMS. Dokumentacioni mbi gjuhën e pyetjes për MySQL mund të gjendet në www.mysql.com.

Jeni i ri në programim apo thjesht e keni shmangur mësimin e SQL në të kaluarën? Pastaj ju keni hasur në adresën e duhur, pasi çdo zhvillues përfundimisht përballet me nevojën për të ditur këtë gjuhë të pyetjes. Ju mund të mos jeni projektuesi kryesor i bazës së të dhënave, por është pothuajse e pamundur të shmangni punën me ta. shpresoj rishikim i shkurtër sintaksa e pyetjeve bazë SQL do të ndihmojë zhvilluesin e interesuar dhe këdo që ka nevojë për të.

Çfarë është një bazë të dhënash SQL?

Gjuha e strukturuar e pyetjeve ( S strukturuar P uery L anguage) është një standard komunikimi i bazës së të dhënave që mbështetet nga ANSI. Më së shumti Versioni i fundit– Megjithatë, SQL-99 standard i riështë tashmë në zhvillim. Shumica e bazave të të dhënave i përmbahen fort standardit ANSI-92. Ka pasur shumë diskutime për prezantimin e më shumë standardet moderne, por shitësit e bazës së të dhënave komerciale po largohen nga kjo me koncepte të reja për ruajtjen e të dhënave të ruajtura. Pothuajse çdo bazë e të dhënave përdor disa set unik sintaksë, edhe pse shumë e ngjashme me standardin ANSI. Në shumicën e rasteve, kjo sintaksë është një zgjatim i standardit bazë, megjithëse ka raste kur kjo sintaksë prodhon rezultate të ndryshme për baza të të dhënave të ndryshme. Është gjithmonë një ide e mirë të rishikoni dokumentacionin e bazës së të dhënave, veçanërisht nëse po merrni rezultate të papritura.

Nëse jeni i ri në SQL, ka disa koncepte bazë që duhet të kuptoni.

Në terma të përgjithshëm, "baza e të dhënave" është emri i përgjithshëm për sistemi i menaxhimit të bazës së të dhënave relacionale(RDBMS). Për disa sisteme, "baza e të dhënave" i referohet gjithashtu një grupi tabelash, të dhënash, informacioni konfigurimi që është në thelb pjesë e veçantë nga dizajne të tjera të ngjashme. Në këtë rast, çdo instalim Baza e të dhënave SQL të dhënat mund të përbëhen nga disa baza të dhënash. Në sisteme të tjera, ato quhen tabela.

Një tabelë është një strukturë e bazës së të dhënave që përbëhet nga kolonat që përmban linjat të dhëna. Zakonisht tabelat krijohen për të përmbajtur informacione të lidhura. Mund të krijohen tabela të shumta brenda së njëjtës bazë të dhënash.

Çdo kolonë përfaqëson një atribut ose grup atributesh të objekteve, të tilla si numrat e identifikimit të punonjësve, lartësia, ngjyra e makinës, etj. Termi që përdoret shpesh për t'iu referuar një kolone është fushë duke treguar emrin, për shembull "në fushën Emri". Fusha e vargut është element minimal tabelat. Çdo kolonë në një tabelë ka një emër specifik, lloj të dhënash dhe madhësi. Emrat e kolonave duhet të jenë unikë brenda tabelës.

Çdo rresht (ose rekord) është një koleksion atributesh objekt specifik, për shembull, rreshti mund të përmbajë një numër identifikimi punonjësi, shuma e pagës së tij, viti i lindjes etj. Rreshtat e tabelës nuk kanë emra. Për të hyrë në një rresht të caktuar, përdoruesi duhet të specifikojë një atribut (ose grup atributesh) që e identifikon atë në mënyrë unike.

Nje nga operacionet kritike, të cilat kryhen gjatë punës me të dhëna, është përzgjedhja e informacionit të ruajtur në bazën e të dhënave. Për ta bërë këtë, përdoruesi duhet të ekzekutojë kërkesë(pyetje).

Tani le të shohim llojet kryesore të pyetjeve të bazës së të dhënave që fokusohen në manipulimin e të dhënave brenda bazës së të dhënave. Për qëllimet tona, të gjithë shembujt janë dhënë në SQL standarde për t'iu përshtatur çdo mjedisi.

Llojet e pyetjeve të të dhënave

Ekzistojnë katër lloje kryesore të pyetjeve të të dhënave në SQL, të cilat referohen si gjuha e manipulimit të të dhënave(Gjuha e manipulimit të të dhënave ose DML):

  • ZGJIDH– zgjidhni rreshtat nga tabelat;
  • INSERT- shtoni rreshta në tabelë;
  • PËRDITËSOJE– ndryshoni rreshtat në tabelë;
  • FSHIJE– fshini rreshtat në tabelë;

Secila prej këtyre pyetjeve ka operatorë të ndryshëm dhe funksionet që përdoren për të kryer disa veprime me të dhënat. Pyetja SELECT ka më shumë nje numer i madh i opsione. Ekzistojnë gjithashtu lloje shtesë të pyetjeve të përdorura në lidhje me SELECT, të tilla si JOIN dhe UNION. Por tani për tani, ne do të përqendrohemi vetëm në pyetjet themelore.

Duke përdorur një pyetje SELECT për të zgjedhur të dhënat që dëshironi

Për të tërhequr informacionin e ruajtur në bazën e të dhënave, përdoret një pyetje SELECT. Veprimi Bazë Ky pyetje është i kufizuar në një tabelë, megjithëse ka modele që lejojnë marrjen e mostrave nga tabela të shumta njëkohësisht. Për të marrë të gjitha rreshtat e të dhënave për kolona specifike, përdoret një pyetje si kjo:

ZGJIDH kolonën1, kolonën2 NGA emri_tabelës;

Gjithashtu, mund të merrni të gjitha kolonat nga një tabelë duke përdorur wildcard *:

SELECT * NGA emri_tabelës;

Kjo mund të jetë e dobishme nëse do të zgjidhni të dhëna me një të caktuar KU gjendja. Pyetja e mëposhtme do të kthejë të gjitha kolonat nga të gjitha rreshtat ku "kolona1" përmban vlerën "3":

Përveç = (e barabartë), ekzistojnë operatorët e mëposhtëm të kushtëzuar:

Për më tepër, mund të përdorni kushtet BITWEEN dhe LIKE për të krahasuar me kushtin WHERE, si dhe kombinime të operatorëve AND dhe OR.

Që, e përkthyer në Rusisht, do të thotë: zgjidhni të gjitha rreshtat nga tabela emri_tabela, ku vlera e kolonës së moshës është më e madhe ose e barabartë me 18, dhe vlera e kolonës LastName është në intervalin alfabetik nga Ivanov në Sidorov përfshirëse, ose vlera e kolonës Kompania është Motorola.

Përdorimi i një pyetje INSERT për të futur të dhëna të reja

Pyetja INSERT përdoret për të krijim linjë e re të dhëna. Për të përditësuar të dhënat ekzistuese ose fushat e rreshtave bosh, duhet të përdorni Kërkesa për PËRDITËSIM.

Shembull INSERT sintaksës së pyetjes:

INSERT INTO në emrin e tabelës (kolona1, kolona 2, kolona 3) VLERAT ("të dhënat1", "të dhënat2", "të dhënat3");

Nëse do të futni të gjitha vlerat në rendin në të cilin shfaqen kolonat e tabelës, mund të hiqni emrat e kolonave, megjithëse kjo është e preferueshme për lexueshmëri. Gjithashtu, nëse listoni kolona, ​​nuk keni pse t'i renditni sipas renditjes që shfaqen në bazën e të dhënave, për sa kohë që vlerat që vendosni përputhen me atë renditje. Ju nuk duhet të listoni kolonat që nuk përmbajnë informacion.

Tashmë po ndryshon informacionin ekzistues në bazën e të dhënave në një mënyrë shumë të ngjashme.

Përditëso pyetjen dhe kushtin WHERE

UPDATE përdoret për të ndryshuar vlerat ekzistuese ose lironi një fushë në varg, kështu që vlerat e reja duhet të përputhen lloji ekzistues të dhëna dhe ofrojnë vlera të pranueshme. Nëse nuk dëshironi të ndryshoni vlerat në të gjitha rreshtat, atëherë duhet të përdorni klauzolën WHERE.

Mund të përdorni WHERE në çdo kolonë, përfshirë atë që dëshironi të ndryshoni. Kjo përdoret kur është e nevojshme të zëvendësohet një vlerë specifike me një tjetër.

Bej kujdes! Pyetja DELETE fshin rreshta të tëra

Një pyetje DELETE fshin plotësisht një rresht nga baza e të dhënave. Nëse dëshironi të fshini një fushë të vetme, atëherë duhet të përdorni një kërkesë UPDATE dhe ta vendosni këtë fushë në një vlerë që do të jetë analoge me NULL në programin tuaj. Jini të kujdesshëm dhe kufizoni tuajin Fshij kërkesën Klauzola WHERE, përndryshe mund të humbni të gjithë përmbajtjen e tabelës.

Pasi një rresht të jetë fshirë nga databaza juaj, ai nuk mund të rikthehet, kështu që këshillohet që të keni një kolonë me emrin "IsActive", ose diçka të tillë, të cilën mund ta ndryshoni në null, e cila do të tregojë se pamja e të dhënave nga ai rresht është i kyçur.

Tani ju i dini bazat e pyetjeve SQL

SQL është një gjuhë bazë të dhënash, dhe ne kemi mbuluar më të rëndësishmet dhe komandat bazë, përdoret në pyetjet e të dhënave. Ka shumë koncepte thelbësore që nuk janë mbuluar (SUM dhe COUNT, për shembull), por ato pak komanda që arritëm të rendisim më sipër duhet t'ju inkurajojnë të aktivizoheni dhe të gërmoni më thellë në gjuhën e mrekullueshme të pyetjeve të quajtur SQL.

SQL yavl. mjet i synuar për përpunimin dhe leximin e të dhënave që gjenden në kompjuter. DB. SQL është, para së gjithash, informacion-logjik. gjuha, e synuar për të përshkruar, modifikuar dhe marrë të dhënat e ruajtura në bazat e të dhënave relacionale. SQL është shkurtesa për Gjuha e strukturuar e pyetjeve) . SQL përdoret për të organizuar ndërveprimin e përdoruesit me bazën e të dhënave. Në fakt, SQL punon vetëm me bazat e të dhënave relacionale lloji . Programi kompjuterik që menaxhon bazën e të dhënave quhet sistemi i menaxhimit të bazës së të dhënave, ose DBMS . Nëse përdoruesi ka nevojë lexoni të dhënat nga baza e të dhënave, ai i kërkon nga DBMS me pom. SQL. DBMS përpunon kërkesën, gjen të dhënat e kërkuara dhe ia dërgon përdoruesit. Procesi i kërkimit të të dhënave dhe marrjes së një rezultati quhet kërkesë në bazën e të dhënave: prandaj emri - gjuha e strukturuar e pyetjeve. Pavarësisht se leximi i të dhënave është ende një nga më të rëndësishmet. e rëndësishme Funksionet SQL, tani kjo gjuhë përdoret për të zbatuar të gjitha funksionalitetin, Mace. DBMS i siguron përdoruesit, përkatësisht:

Organizimi i të dhënave. SQL i jep përdoruesit mundësinë për të ndryshuar strukturën e prezantimit të të dhënave, si dhe për të vendosur marrëdhënie midis elementeve të bazës së të dhënave.

Leximi i të dhënave. SQL i jep një përdoruesi ose aplikacioni mundësinë për të lexuar dhe përdorur të dhënat e përfshira në një bazë të dhënash.

Përpunimin e të dhënave. SQL i jep përdoruesit ose aplikacionit mundësinë për të... ndryshoni bazën e të dhënave, d.m.th. shtoni të dhëna të reja në të, si dhe fshini ose përditësoni të dhënat ekzistuese.

Kontrolli i aksesit. Me asistent SQL mund të kufizojë aftësinë e përdoruesit për të lexuar dhe ndryshuar të dhënat dhe për ta mbrojtur atë nga aksesi i paautorizuar.

Ndarja të dhëna. SQL koordinon ndarjen e të dhënave midis përdoruesve dhe punonjësve të njëkohshëm në mënyrë që ata të mos ndërhyjnë me njëri-tjetrin.

Integriteti i të dhënave. SQL ju lejon të siguroni integritetin e bazave të të dhënave, duke i mbrojtur ato nga shkatërrimi për shkak të ndryshimeve të paqëndrueshme ose dështimit të sistemit.

Kështu, SQL është një gjuhë mjaft e fuqishme për të bashkëvepruar me DBMS.

Avantazhet e SQL.

SQL është një gjuhë e lehtë për t'u kuptuar dhe në të njëjtën kohë një mjet softuerësh i gjithanshëm për menaxhimin e të dhënave.

Karakteristikat e mëposhtme sollën sukses në gjuhën SQL:

Pavarësia nga DBMS specifike;

Transportueshmëria nga një sistem kompjuterik në tjetrin;

Disponueshmëria e standardeve;

Korniza relacionale;

Struktura e nivelit të lartë;

Aftësia për të kryer pyetje të veçanta interaktive:

Siguria aksesi i softuerit në bazat e të dhënave;

Mundësia e paraqitjes së të dhënave të ndryshme;

Plotësia si gjuhë e krijuar për të punuar me bazat e të dhënave;

Mundësia e përcaktimit dinamik të të dhënave;

Mbështetje për arkitekturën e klientit/serverit.

Të gjithë faktorët e mësipërm janë arsyeja pse SQL është bërë mjeti standard për menaxhimin e të dhënave në kompjuterët personalë.

37 Strukturat themelore të fjalisë gjuhësore në pyetje

Çdo deklaratë SQL është kërkesë ose akses në bazën e të dhënave, që çon në një ndryshim në bazën e të dhënave. Në varësi të ndryshimeve që ndodhin në bazën e të dhënave, dallohen llojet e mëposhtme të pyetjeve:

Kërkesat për të krijuar ose ndryshuar objekte të reja ose ekzistuese në bazën e të dhënave (në këtë rast, kërkesa përshkruan llojin dhe strukturën e objektit që krijohet ose ndryshohet);

Kërkesat për të dhëna;

Kërkesat për të shtuar të dhëna të reja (regjistra)

Kërkesat për fshirje të të dhënave;

Thirrjet në DBMS.

Çdo kërkesë është një program i shkruar në gjuhën e strukturuar të pyetjeve SQL. Në fakt, një program SQL është një frazë pyetëse për një mostër të dhënash në anglisht, e shkruar në një strukturë specifike, të cilën DBMS më pas e konverton në rezultatin e kërkuar.

Në shumicën e DBMS-ve, fjalia përfundon me ";" dhe DBMS nuk e përpunon informacionin derisa të ndeshet me ";". Fjalitë përbëhen nga fraza dhe fillojnë me një fjalë të regjistruar. Çdo frazë ka një emër.

Emërimet e disave operatorët bazë SQL:

ZGJIDH(zgjedh) - (zgjidh) të dhënat nga kolonat e specifikuara dhe (nëse është e nevojshme) kryejnë transformimin e tyre në përputhje me shprehjet dhe (ose) funksionet e specifikuara përpara daljes; NGA– tregon tabelën nga e cila janë përzgjedhur fushat; KU– krijon një kusht për zgjedhjen e të dhënave në regjistra; URDHËR NGA– rendit të dhënat sipas një radhe të caktuar; GRUP NGA– grupet që përputhen me të dhënat gjatë ekzekutimit të pyetjeve përmbledhëse; DALLIM– përjashton të dhënat e kopjuara nga grupi i rezultateve; TRANSFORMIMI– vlerëson shprehjet në pyetje të kryqëzuara; PIVOT– Përcakton titujt e kolonave në tabelën e pyetjeve të kryqëzuara.

Rreth propozimit ZGJIDH. Të gjitha kërkesat për marrjen e pothuajse çdo sasie të dhënash nga një ose më shumë. tabelat kryhen duke përdorur një klauzolë të vetme SELECT. NË rast i përgjithshëm Rezultati i zbatimit të klauzolës SELECT është një tabelë tjetër. Operacioni SELECT mund të aplikohet sërish në këtë tabelë të re (punuese), etj., d.m.th. operacione të tilla mund të futen brenda njëri-tjetrit. Është me interes historik se është mundësia e përfshirë. një klauzolë SELECT brenda një tjetri ishte motivimi për të përdorur. mbiemri "strukturuar" në emër të gjuhës SQL. Në dizajnet e përdorura. simbolet: ylli (*) për të treguar "të gjitha" - përdoret. në kuptimin e zakonshëm për programim, d.m.th. "të gjitha rastet që plotësojnë përkufizimin"; (,) - Spanjisht për të ndarë elementët e listës; () - do të thotë se ndërtimet, përfundimi. në kllapa, yavl. opsionale ; vijë e drejtë (|) – para të gatshme. zgjedhje nga dy ose më shumë mundësi, etj.

36-37. E veçanta - stili i gjuhës SQL . Strukturat bazë fjali gjuhësore në pyetje (a/c)

SQL - Gjuha e strukturuar e pyetjeve. Prodhimi i informacionit - më i unifikuar. Kjo çoi në nevojën për të krijuar një gjuhë standarde që mund

SELECT në SQL (për një tabelë): ZGJIDH(zgjidh) fushat e specifikuara

NGA(nga) tabela e specifikuar

KU(ku) disa kushte të specifikuara janë të vërteta

ZGJIDH listën e_elementeve (fushat) për t'u zgjedhur

NGA lista_tabele (ose pamje)

]

Duke përdorur kualifikuesin AS

Ky kualifikues zëvendëson emrin ekzistues të kolonës në tabelën që rezulton me atë të specifikuar.

Funksionet agregate

Funksionet e grumbullimit përfshijnë funksionet shuma (SUM), max (SUM) dhe min (MIN). vlerat e kolonës, mesatarja e aritmit (AVG) dhe numri i rreshtave që plotësojnë një kusht të caktuar (COUNT).

ZGJIDH numrin (*), shumën (buxhetin), mesataren (buxhetin),

min (buxheti), maksimumi (buxheti)

WHERE kreu_dept = 100

llogaritni: numrin e departamenteve që janë nënndarje të departamentit 100 (Marketing dhe Shitjet), buxhetet totale, mesatare, minimale dhe maksimale të tyre COUNT SUM AVG MIN MAX

5 3800000.00 760000.00 500000.00 1500000.00

Klauzola FROM e komandës SELECT

Klauzola FROM liston të gjitha objektet (një ose më shumë) nga të cilat merren të dhënat. Çdo tabelë ose pamje e referuar në pyetje duhet të renditet në klauzolën FROM.

Llojet e kallëzuesve të përdorur në fjalinë WHERE :

krahasimi duke përdorur operatorë relacionalë

Të barabartë<>jo i barabartë!= jo i barabartë > më i madh se< меньше

>= më i madh ose i barabartë me<= меньше или равно

NDËRMJET NË LIKE PËRMBAJTJA ËSHTË NULL

Operacionet Krahasuese Nëse domenet janë të përcaktuara në bazën e të dhënave, atëherë artikujt që krahasohen duhet t'i përkasin të njëjtit domen.

ZGJIDH emrin, mbiemrin, nr.

KU vendi_punë<>"SHBA"

NDËRMJET

Kallëzuesi BETWEEN specifikon gamën e vlerave për të cilat shprehja vlerësohet si e vërtetë. Lejohet gjithashtu përdorimi i konstruksionit NOT BETWEEN.

KU rroga MES 20000 DHE 30000

merrni një listë të punonjësve, paga vjetore e të cilëve është më shumë se 20,000 dhe më pak se 30,000 FIRST_NAME LAST_NAME SALARY

Ann Bennet 22935,00

Kelly Brown 27000,00

Vlerat që përcaktojnë kufijtë e poshtëm dhe të sipërm mund të mos jenë vlerat aktuale në bazën e të dhënave. Dhe kjo është shumë e përshtatshme - sepse ne nuk mund të tregojmë gjithmonë vlerat e sakta të diapazonit!

ZGJIDH emrin, mbiemrin, rrogën

KU mbiemri MES "Nel" DHE "Osb"

merrni një listë të punonjësve, mbiemrat e të cilëve janë midis "Nel" dhe "Osb" FIRST_NAME LAST_NAME SALARY

Robert Nelson 105900.00

Carol Nordstrom 42742,50

Sue Anne O'Brien 31275.00

ZGJIDH emrin, mbiemrin, datën e punësimit

Kallëzuesi IN kontrollon nëse vlera e specifikuar që i paraprin fjalës kyçe "IN" (për shembull, një vlerë kolone ose një funksion i një kolone) është përfshirë në listën e specifikuar në kllapa. Nëse vlera e dhënë që testohet është e barabartë me çdo element në listë, atëherë kallëzuesi vlerësohet si i vërtetë. Lejohet gjithashtu përdorimi i konstruksionit NOT IN.

ZGJIDH emrin, mbiemrin, kodin e punës

WHERE job_code IN ("VP", "Admin", "Finan")

LIKE Kallëzuesi LIKE përdoret vetëm me të dhënat e karaktereve. Kontrollon nëse vlera e dhënë e karakterit përputhet me vargun me maskën e specifikuar. Të gjithë karakteret e lejuara (duke përfshirë shkronjat e mëdha dhe të vogla), si dhe karakteret speciale, përdoren si maskë:

% - zëvendëson çdo numër karakteresh (përfshirë 0),

Zëvendëson vetëm një karakter.

Lejohet gjithashtu përdorimi i konstruksionit NOT LIKE.

ZGJIDH emrin, mbiemrin

WHERE mbiemri LIKE "F%"

merrni një listë të punonjësve, mbiemrat e të cilëve fillojnë me shkronjën "F" FIRST_NAME LAST_NAME

Operatorët logjikë Operatorët logjikë përfshijnë operatorët e mirënjohur AND, OR, NOT, të cilët ju lejojnë të kryeni operacione të ndryshme logjike: shumëzim logjik (AND, "prerje e kushteve"), mbledhje logjike (OR, "bashkim i kushteve"), mohim logjik ( JO, "mohim i kushteve"). Në shembujt tanë ne kemi përdorur tashmë operatorin AND. Përdorimi i këtyre operatorëve ju lejon të "përshtatni" në mënyrë fleksibël kushtet për zgjedhjen e regjistrimeve.

Lidhje ( BASHKOHU ) Operacioni i bashkimit përdoret në SQL për të shfaqur informacionin përkatës të ruajtur në tabela të shumta në një pyetje të vetme. Lidhja zakonisht bëhet duke përdorur çelësin kryesor të një tabele dhe çelësin e huaj të një tabele tjetër - për secilën palë tabelash. Është shumë e rëndësishme të merren parasysh të gjitha fushat e çelësit të huaj, përndryshe rezultati do të shtrembërohet. Fushat që do të bashkohen mund (por nuk kërkohen!) të jenë të pranishme në listën e elementeve të përzgjedhur. Klauzola WHERE mund të përmbajë kushte të shumta bashkimi. Kushti i bashkimit mund të kombinohet edhe me kallëzues të tjerë në fjalinë WHERE.

02/07/07 11.6K

Hyrje në menaxhimin e bazës së të dhënave relacionale

sql shpesh quhet gjuha esperanto për sistemet e menaxhimit të bazës së të dhënave (DBMS). Në të vërtetë, nuk ka asnjë gjuhë tjetër në botë për të punuar me bazat e të dhënave që do të përdorej kaq gjerësisht në programe. Standardi i parë sol u shfaq në 1986 dhe tani ka fituar njohje universale. Mund të përdoret edhe kur punoni me DBMS jo-relacionale. Ndryshe nga mjetet e tjera softuerike, të tilla si gjuhët C dhe Cobol, të cilat janë prerogativë e programuesve profesionistë, sql përdoret nga specialistë të fushave të ndryshme. Programuesit, administratorët e DBMS, analistët e biznesit - ata të gjithë përpunojnë me sukses të dhënat duke përdorur sql. Njohja e kësaj gjuhe është e dobishme për këdo që duhet të merret me bazën e të dhënave.

Në këtë artikull do të shikojmë konceptet themelore të sql. Le të tregojmë historinë e tij (dhe të hedhim poshtë disa mite gjatë rrugës). Do të njiheni me modelin relacional dhe do të mund të fitoni aftësitë e para në punën me sql, gjë që do të ndihmojë në zotërimin e mëtejshëm të gjuhës.

A është e vështirë të mësosh sql? Varet nga sa thellë do të shkoni. Për t'u bërë profesionist, duhet të studiosh shumë. Gjuha sql filloi jetën në 1974 si subjekt i një punimi të shkurtër kërkimor prej 23 faqesh dhe ka bërë një rrugë të gjatë që atëherë. Teksti i standardit aktual - dokumenti zyrtar "gjuha standarde ndërkombëtare e bazës së të dhënave sql" (zakonisht i quajtur sql-92) - përmban mbi gjashtëqind faqe, por nuk thotë asgjë për veçoritë specifike të versioneve të sol të zbatuara në DBMS nga Microsoft, Oracle, Sybase etj. Gjuha është aq e zhvilluar dhe e larmishme sa që thjesht të listosh aftësitë e saj do të kërkonte disa artikuj në revistë dhe nëse mbledhësh gjithçka që është shkruar në temën sol, do të marrësh një bibliotekë me shumë vëllime.

Sidoqoftë, për përdoruesin mesatar nuk është aspak e nevojshme të njohë plotësisht sql. Ashtu si një turist që e gjen veten në një vend ku flasin një gjuhë të pakuptueshme duhet vetëm të mësojë disa shprehje të zakonshme dhe rregulla gramatikore, ashtu edhe në SQL - duke ditur pak, mund të marrësh shumë rezultate të dobishme. Në këtë artikull do të shikojmë komandat bazë sql, rregullat për vendosjen e kritereve për zgjedhjen e të dhënave dhe ne do të tregojmë se si të marrim rezultate. Si rezultat, ju do të jeni në gjendje të krijoni vetë tabela dhe të futni informacione në to, të krijoni pyetje dhe të punoni me raporte. Kjo njohuri mund të bëhet bazë për zhvillimin e mëtejshëm të pavarur të sql.

Çfarë është sql?

sql është një gjuhë e specializuar jo-procedurale që ju lejon të përshkruani të dhëna, të merrni dhe të përpunoni informacione nga DBMS-të relacionale. Specializimi do të thotë që sol është menduar vetëm për të punuar me bazën e të dhënave; Ju nuk mund të krijoni një sistem aplikimi të plotë duke përdorur vetëm këtë gjuhë - kjo do të kërkojë përdorimin e gjuhëve të tjera në të cilat mund të futni komandat SQL. Prandaj, sql quhet edhe një mjet gjuhësor ndihmës për përpunimin e të dhënave. Një gjuhë ndihmëse përdoret vetëm në lidhje me gjuhë të tjera.

Një gjuhë aplikimi për qëllime të përgjithshme zakonisht ka lehtësira për krijimin e procedurave, por SQL jo. Me ndihmën e tij, nuk mund të specifikoni se si duhet të kryhet një detyrë e caktuar, por mund të përcaktoni vetëm se çfarë është saktësisht. Me fjalë të tjera, kur punojmë me sql, na interesojnë rezultatet, jo procedurat për marrjen e tyre.

Vetia më e rëndësishme e sql është aftësia për të hyrë në bazat e të dhënave relacionale. Shumë madje besojnë se shprehjet "baza e të dhënave e përpunuar duke përdorur sql" dhe "data e të dhënave relacionale" janë sinonime. Megjithatë, së shpejti do të shihni se ka një ndryshim mes tyre. Standardi sql-92 nuk e ka as termin relacion.

Çfarë është një DBMS relacionale?

Pa hyrë në detaje, një DBMS relacionale është një sistem i bazuar në një model të menaxhimit të të dhënave relacionale.

Koncepti i një modeli relacional u propozua për herë të parë në veprën e Dr. E. F. Codd, botuar në vitin 1970. Ai përshkruante një aparat matematikor për strukturimin dhe manipulimin e të dhënave, dhe gjithashtu propozoi një model abstrakt për përfaqësimin e çdo informacioni të botës reale. Më parë, kur përdorni një bazë të dhënash, ishte e nevojshme të merren parasysh veçoritë specifike të ruajtjes së informacionit në të. Nëse struktura e brendshme e bazës së të dhënave ndryshonte (për shembull, për të përmirësuar performancën), ishte e nevojshme të ripunoheshin programet e aplikimit, edhe nëse nuk kishte ndryshime në nivelin logjik. Modeli relacional bëri të mundur ndarjen e veçorive private të ruajtjes së të dhënave nga niveli i programit të aplikacionit. Në fakt, modeli nuk përshkruan në asnjë mënyrë se si ruhet dhe aksesohet informacioni. Ajo që merret parasysh është se si ky informacion perceptohet nga përdoruesi. Falë shfaqjes së modelit relacional, qasja ndaj menaxhimit të të dhënave ka ndryshuar cilësisht: nga një art u kthye në shkencë, e cila çoi në zhvillimin revolucionar të industrisë.

Konceptet bazë të modelit relacional

Sipas modelit relacional, një relacion është një tabelë me të dhëna. Një relacion mund të ketë një ose më shumë atribute (karakteristika) që korrespondojnë me kolonat e kësaj tabele, dhe disa grupe (ndoshta boshe) të dhënash, të cilat janë grupe të këtyre atributeve (ato quhen tuples n-ar, ose rekorde) dhe që korrespondojnë me rreshtat e tabelës.

Për çdo tuple, vlerat e atributeve duhet t'i përkasin të ashtuquajturave domene. Në fakt, një domen është një grup i caktuar të dhënash që përcakton grupin e të gjitha vlerave të vlefshme.

Le të shohim një shembull. Le të ketë një domen Ditët e Javës që përmban vlera nga e hëna deri të dielën. Nëse një lidhje ka një atribut WeekDay që korrespondon me këtë domen, atëherë çdo tufë në lidhje duhet të ketë një nga vlerat e listuara në kolonën WeekDay. Vlerat Janar ose Cat nuk lejohen të shfaqen.

Ju lutemi vini re: atributi duhet të ketë një nga vlerat e vlefshme. Specifikimi i vlerave të shumta në të njëjtën kohë është i ndaluar. Kështu, përveç kërkesës që vlerat e atributeve t'i përkasin një domeni të caktuar, duhet të plotësohet kushti i atomicitetit të tij. Kjo do të thotë se këto kuptime nuk mund të zbërthehen, d.m.th., ato nuk mund të zbërthehen në pjesë më të vogla pa humbur kuptimin themelor. Për shembull, nëse vlera e atributit përmban njëkohësisht të hënën dhe të martën, atëherë mund të dallohen dy pjesë, duke ruajtur kuptimin origjinal - Dita e Javës; prandaj, kjo vlerë e atributit nuk është atomike. Sidoqoftë, nëse përpiqeni të ndani kuptimin "e hënë" në pjesë, do të merrni një grup shkronjash individuale - nga "P" në "K"; kuptimi origjinal humbet, prandaj kuptimi i "e hënës" është atomik.

Marrëdhëniet kanë edhe veti të tjera. Më e rëndësishmja prej tyre është vetia matematikore e operacioneve të mbyllura. Kjo do të thotë se si rezultat i kryerjes së ndonjë operacioni në një relacion, duhet të shfaqet një relacion i ri. Kjo veti ju lejon të merrni rezultate të parashikueshme kur kryeni operacione matematikore në marrëdhënie. Përveç kësaj, bëhet e mundur të përfaqësohen operacionet në formën e shprehjeve abstrakte me nivele të ndryshme foleje.

Në punën e tij origjinale, Dr. Codd përcaktoi një grup prej tetë operatorësh të quajtur algjebër relacionale. Katër operatorë - bashkimi, shumëzimi logjik, ndryshimi dhe prodhimi kartezian - u mbartën nga teoria tradicionale e grupeve; operatorët e mbetur u krijuan posaçërisht për të trajtuar marrëdhëniet. Puna pasuese nga Dr. Codd, Chris Date dhe studiues të tjerë propozuan operatorë shtesë. Më vonë në këtë artikull, ne do të shikojmë tre operatorë relacionalë - projektoni, zgjidhni ose kufizoni dhe bashkohuni.

sql dhe modeli relacional

Tani që jeni njohur me modelin relacional, le ta harrojmë atë. Sigurisht, jo përgjithmonë, por vetëm për të shpjeguar sa vijon: megjithëse ishte modeli relacional i propozuar nga Dr. Codd ai që u përdor në zhvillimin e sql, nuk ka asnjë korrespodencë të plotë apo fjalë për fjalë midis të dyve (kjo është një nga arsyet pse standardi sql-92 nuk e ka termin qëndrim). Për shembull, konceptet e një tabele sql dhe një relacioni nuk janë ekuivalente, sepse tabelat mund të kenë disa rreshta identikë në të njëjtën kohë, ndërsa tuples identikë nuk lejohen të shfaqen në marrëdhënie. Për më tepër, SQL nuk parashikon përdorimin e domeneve relacionale, megjithëse llojet e të dhënave luajnë një rol në një farë mase (disa mbështetës me ndikim të modelit relacional tani po përpiqen të shtyjnë për përfshirjen e domeneve relacionale në standardin e ardhshëm SQL).

Fatkeqësisht, mospërputhja midis sql dhe modelit relacional ka shkaktuar shumë keqkuptime dhe mosmarrëveshje gjatë viteve. Por meqenëse tema kryesore e artikullit është studimi i sql, dhe jo modeli relacional, këto probleme nuk diskutohen këtu. Vetëm mos harroni se ka dallime midis termave të përdorur në sql dhe modelit relacional. Më tej në artikull do të përdoren vetëm termat e pranuar në sql. Në vend të marrëdhënieve, atributeve dhe tupleve, ne do të përdorim analogët e tyre sql: tabela, kolona dhe rreshta.

SQL statike dhe dinamike

Ju tashmë mund të jeni njohur me terma të tillë si sql statike dhe dinamike. Një pyetje sql është statike nëse përpilohet dhe optimizohet në një fazë përpara ekzekutimit të programit. Ne kemi përmendur tashmë një formë të sql statike kur folëm për futjen e komandave sql në programet C ose Cobol (ka një emër tjetër për shprehje të tilla - embedded sql). Siç mund ta merrni me mend, një pyetje dinamike SQL përpilohet dhe optimizohet gjatë ekzekutimit të programit. Si rregull, përdoruesit e zakonshëm përdorin sql dinamike, e cila u lejon atyre të krijojnë pyetje në përputhje me nevojat e tyre imediate. Një nga opsionet për përdorimin e pyetjeve dinamike SQL është thirrja e tyre interaktive ose direkte (madje ekziston një term i veçantë - directsql), kur pyetjet e dërguara për përpunim futen në mënyrë interaktive nga terminali. Ekzistojnë disa dallime midis SQL statike dhe dinamike në sintaksën e konstrukteve të përdorura dhe veçoritë e ekzekutimit, por këto çështje janë përtej qëllimit të artikullit. Vëmë re vetëm se për qartësi të të kuptuarit, shembujt janë dhënë në formën e pyetjeve të drejtpërdrejta sql, pasi kjo lejon jo vetëm programuesit, por edhe shumicën e përdoruesve fundorë, të mësojnë se si të përdorin sql.

Si të mësoni sql

Tani jeni gati të shkruani pyetjet tuaja të para sql. Nëse keni akses në bazën e të dhënave përmes sql dhe dëshironi të përdorni shembujt tanë në praktikë, atëherë merrni parasysh sa vijon: duhet të identifikoheni si përdorues me të drejta të pakufizuara dhe do t'ju nevojiten mjete softuerike për përpunimin interaktiv të pyetjeve sql (nëse jemi duke folur për një bazë të dhënash rrjeti, duhet të flisni me administratorin e bazës së të dhënave për t'ju dhënë të drejtat e duhura). Nëse nuk keni akses në bazën e të dhënave përmes sql, mos u shqetësoni: të gjithë shembujt janë shumë të thjeshtë dhe mund t'i kuptoni "të thatë", pa shkuar në makinë.

Për të kryer ndonjë veprim në sql, duhet të ekzekutoni një shprehje në gjuhën sql. Ekzistojnë disa lloje të shprehjeve, por midis tyre mund të dallohen tre grupe kryesore: komandat ddl (gjuha e përcaktimit të të dhënave), komandat dml (gjuha e manipulimit të të dhënave) dhe mjetet e kontrollit të të dhënave. Kështu, në një farë kuptimi, sql kombinon tre gjuhë të ndryshme.

Përshkrimi i të dhënave Komandat e gjuhës

Le të fillojmë me një nga komandat kryesore ddl - krijimin e tabelës. Ekzistojnë disa lloje tabelash në sql, kryesoret janë dy lloje: themelore (bazë) dhe selektive (pamje). Tabelat bazë janë ato që lidhen me të dhënat e jetës reale; selektive janë tabelat “virtuale” që krijohen në bazë të informacionit të marrë nga tabelat bazë; por për përdoruesit format duken si tabela të rregullta. Komanda krijimi i tabelës është krijuar për të krijuar tabela bazë.

Në komandën e krijimit të tabelës, duhet të specifikoni emrin e tabelës, të specifikoni listën e kolonave dhe llojet e të dhënave që ato përmbajnë. Elementë të tjerë opsionalë mund të jenë gjithashtu të pranishëm si parametra, por së pari le të shohim vetëm parametrat bazë. Le të tregojmë formën më të thjeshtë sintaksore për këtë komandë:

krijimi i tabelës Emri i tabelës (Typi i të dhënave të kolonës) ;

krijimi dhe tabela janë fjalë kyçe sql; Emri i tabelës, kolona dhe lloji i të dhënave janë parametra formalë, në vend të të cilave përdoruesi fut çdo herë vlerat aktuale. Parametrat Column dhe DataType janë të mbyllura në kllapa. Në sql, kllapat përdoren zakonisht për të grupuar elementë individualë. Në këtë rast, ato ju lejojnë të kombinoni përkufizimet për një kolonë. Pikëpresja e mbarimit është një ndarës komande. Duhet të përfundojë çdo shprehje në gjuhën sql.

Le të shohim një shembull. Le të themi se duhet të krijoni një tabelë për të ruajtur të dhënat për të gjitha takimet. Për ta bërë këtë, futni komandën në sql:

krijoni takime në tabelë (data e takimit);

Pas ekzekutimit të kësaj komande, do të krijohet një tabelë me emrin takime, ku është një kolonë, data_caktimi, në të cilën mund të shënohen të dhënat e tipit data. Meqenëse nuk është futur ende asnjë e dhënë, numri i rreshtave në tabelë është zero (komandimi i krijimit të tabelës përcakton vetëm tabelën; vlerat aktuale futen me komandën insert, e cila do të diskutohet më vonë).

Parametrat appointments dhe appointment_date quhen identifikues sepse ato specifikojnë emrat për objekte specifike të bazës së të dhënave, në këtë rast emrat për një tabelë dhe një kolonë, respektivisht. Ekzistojnë dy lloje identifikuesish në sql: të rregullt dhe të kufizuar. Identifikuesit e theksuar janë të mbyllur në thonjëza të dyfishta dhe janë të ndjeshme ndaj shkronjave të vogla. Identifikuesit e rregullt nuk dallohen nga ndonjë karakter i kufizuar dhe shkrimi i tyre nuk është i ndjeshëm ndaj shkronjave të vogla. Ky artikull përdor vetëm identifikues të rregullt.

Karakteret e përdorura për të ndërtuar identifikues duhet të plotësojnë disa rregulla. Identifikuesit e rregullt mund të përdorin vetëm shkronja (jo domosdoshmërisht latinisht, por edhe alfabete të tjera), numra dhe karakterin e nënvizimit. Identifikuesi nuk duhet të përmbajë shenja pikësimi, hapësira ose karaktere speciale (#, @, % ose!); përveç kësaj, ai nuk mund të fillojë me një numër ose një nënvizim. Ju mund të përdorni fjalë kyçe të veçanta sql për identifikues, por kjo nuk rekomandohet. Një identifikues synon të përcaktojë një objekt, kështu që duhet të ketë një emër unik (brenda një konteksti të caktuar): nuk mund të krijoni një tabelë me një emër që gjendet tashmë në bazën e të dhënave; Nuk mund të keni kolona me emra të njëjtë në të njëjtën tabelë. Meqë ra fjala, mbani në mend se emërimet dhe emërimet janë të njëjtët emra për sql. Ndryshimi vetëm i shkronjave nuk mund të krijojë një identifikues të ri.

Edhe pse një tabelë mund të ketë vetëm një kolonë, në praktikë zakonisht kërkohen tabela me shumë kolona. Komanda për të krijuar një tabelë të tillë në përgjithësi duket si kjo:

krijo tabelaTableName(ColumnDataType[ (, ColumnDataType)]) ;

Kllapat katrore përdoren për të treguar elementë opsionalë, kllapat kaçurrelë përmbajnë elementë që mund të përfaqësojnë një listë të konstrukteve me një shteg (kur futet një komandë reale SQL, nuk vendoset as njëra as kllapat e tjera). Kjo sintaksë ju lejon të specifikoni çdo numër kolonash. Vini re se elementi i dytë paraprihet nga një presje. Nëse ka disa parametra në listë, ato ndahen nga njëri-tjetri me presje.

krijoni takimet e tabelës2 (data e takimit, ora e_caktimit, përshkrimi varchar (256)) ;

Kjo komandë krijon tabelën appointments2 (tabela e re duhet të ketë një emër tjetër, pasi tabela e takimeve është tashmë e pranishme në bazën e të dhënave). Ashtu si tabela e parë, ajo ka një kolonë appointment_date për të regjistruar datat e takimeve; Përveç kësaj, një kolonë appointment_time është shfaqur për të regjistruar kohën e këtyre takimeve. Parametri i përshkrimit është një varg teksti që mund të përmbajë deri në 256 karaktere. Ky parametër është specifikuar si varchar (shkurt për ndryshimin e karaktereve) sepse nuk dihet paraprakisht se sa hapësirë ​​do të kërkohet për hyrjen, por është e qartë se përshkrimi nuk do të marrë më shumë se 256 karaktere. Kur përshkruani një parametër të llojit të vargut të karakterit (dhe disa lloje të tjera), tregohet gjatësia e parametrit. Vlera e tij specifikohet në kllapa në të djathtë të emrit të tipit.

Ju mund të keni vënë re se në dy shembujt e diskutuar, hyrja e komandës është formatuar ndryshe. Nëse në rastin e parë komanda vendoset plotësisht në një rresht, atëherë në të dytën pas kllapave të para të hapura hyrja vazhdon në një rresht të ri dhe përcaktimi i secilës kolonë pasuese fillon në një rresht të ri. Nuk ka kërkesa të veçanta për formatimin e rekordeve në sql. Thyerja e një rekordi në rreshta e bën më të lehtë leximin. Kur shkruani komanda, gjuha sql ju lejon jo vetëm të thyeni komandën në rreshta, por edhe të futni indencat në fillim të rreshtave dhe hapësirat midis elementeve të regjistrimit.

Tani që i dini rregullat bazë, le të shohim një shembull më kompleks të krijimit të një tabele me kolona të shumta. Në fillim të artikullit u tregua tabela e punonjësve. Ai përmban kolonat e mëposhtme: mbiemrin, emrin, datën e punësimit, departamentin, kategorinë dhe pagën për vitin. Komanda e mëposhtme sql përdoret për të përcaktuar këtë tabelë:

krijimi i punonjësve të tabelës (karakteri i mbiemrit (13) jo null, karakteri i emrit (10) jo i pavlefshëm, data_data e punësimit, karakteri i zyrës së degës (15), niveli i vogël i klasës, dhjetori i pagës (9, 2));

Ekipi plotëson disa elementë të rinj. Para së gjithash, ekziston shprehja jo null në fund të përkufizimit të kolonave mbiemri dhe emri i parë. Me ndihmën e strukturave të tilla, vendosen kërkesa që duhet të respektohen. Në këtë rast, tregohet se fushat mbiemri dhe emri duhet të plotësohen gjatë hyrjes; Ju nuk mund t'i lini këto kolona bosh (kjo është mjaft logjike: si mund ta identifikoni një punonjës pa e ditur emrin e tij?).

Për më tepër, shembulli përmban tre lloje të reja të dhënash: karaktere, të vogla dhe dhjetore. Deri tani nuk kemi folur shumë për llojet. Edhe pse sql nuk ka domene relacionale, ajo ka një grup të llojeve bazë të të dhënave. Ky informacion përdoret gjatë ndarjes së memories dhe krahasimit të vlerave; në një masë të caktuar ngushton listën e vlerave të mundshme hyrëse, por kontrolli i tipit në sql është më pak i rreptë se në gjuhët e tjera.

Të gjitha llojet e të dhënave të disponueshme në sql mund të ndahen në gjashtë grupe: vargjet e karaktereve, vlerat e sakta numerike, vlerat numerike të përafërta, vargjet e biteve, datat dhe intervalet. Ne kemi renditur të gjitha varietetet, por ky artikull do të diskutojë vetëm disa prej tyre në detaje (vargjet bit, për shembull, nuk janë me interes të veçantë për përdoruesit e zakonshëm).

Meqë ra fjala, nëse menduat se data dhe ora ishin një gabim shtypi, e keni gabuar. Ky grup (datatime) përfshin shumicën e llojeve të të dhënave të lidhura me kohën e përdorur në sql (parametrat si intervalet kohore ndahen në një grup të veçantë). Në shembullin e mëparshëm, ne kemi hasur tashmë dy lloje të dhënash nga grupi data-kohë - data dhe koha.

Lloji tjetër i të dhënave me të cilin jeni njohur tashmë është karakteri që ndryshon (ose thjesht varchar); i përket grupit të vargjeve të karaktereve. Nëse varchar përdoret për të ruajtur vargjet me gjatësi të ndryshueshme, atëherë lloji char i hasur në shembullin e tretë synon të ruajë vargje me një numër të caktuar karakteresh. Për shembull, kolona mbiemri do të përmbajë vargje prej 13 karakteresh, pavarësisht nga mbiemrat aktualë të futur, qofshin ato poe ose penworth-chickering (në rastin e poe, 10 karakteret e mbetura do të mbushen me hapësira).

Nga këndvështrimi i përdoruesit, varchar dhe char kanë të njëjtin kuptim. Pse ishte e nevojshme të futeshin dy lloje? Fakti është se në praktikë zakonisht duhet të kërkoni një kompromis midis performancës dhe kursimit të hapësirës në disk. Si rregull, përdorimi i vargjeve me një gjatësi fikse jep disa përfitime në shpejtësinë e aksesit, por nëse gjatësia e vargut është shumë e gjatë, hapësira në disk humbet. Nëse në takimet2 rezervoni 256 karaktere për çdo rresht komenti, atëherë kjo mund të rezultojë e paarsyeshme; më shpesh linjat do të jenë dukshëm më të shkurtra. Nga ana tjetër, mbiemrat gjithashtu ndryshojnë në gjatësi, por në përgjithësi kërkojnë rreth 13 karaktere; në këtë rast, humbjet do të jenë minimale. Një rregull i mirë i përgjithshëm është: nëse e dini se gjatësia e vargut ndryshon pak ose është relativisht e vogël, atëherë përdorni char; në raste të tjera - varchar.

Dy llojet e reja të të dhënave të ardhshme, të vogla dhe dhjetore, i përkasin grupit të vlerave numerike ekzakte. smallint është shkurt për numër të plotë të vogël. SQL gjithashtu ofron një lloj të dhënash me numër të plotë. Prania e dy llojeve të ngjashme në këtë rast shpjegohet me konsideratat e kursimit të hapësirës. Në shembullin tonë, vlerat e parametrit grade_level mund të përfaqësohen duke përdorur një numër dyshifror, kështu që përdoret lloji smallint; megjithatë, në praktikë nuk dihet gjithmonë se cilat vlera maksimale mund të kenë parametrat. Nëse nuk ka një informacion të tillë, atëherë përdorni numër të plotë. Sasia aktuale e hapësirës së caktuar për ruajtjen e parametrave të vogël dhe të plotë, dhe diapazoni përkatës i vlerave për këto parametra, është specifike për secilën platformë.

Lloji i të dhënave dhjetore, i përdorur zakonisht për kontabilitetin financiar, ju lejon të specifikoni një model me numrin e dëshiruar të numrave dhjetorë. Për shkak se ky lloj përdoret për shënime të sakta numerike, ai garanton saktësi gjatë kryerjes së veprimeve matematikore në të dhënat dhjetore. Nëse përdorni lloje të dhënash nga grupi i përafërt i shënimeve numerike për vlerat dhjetore, për shembull float (numri me pikë lundruese), kjo do të çojë në gabime rrumbullakimi, kështu që ky opsion nuk është i përshtatshëm për llogaritjet financiare. Për të përcaktuar parametrat e tipit dhjetor, përdoret shënimi i mëposhtëm:

ku p është numri i numrave dhjetorë, d është numri i numrave dhjetorë. Në vend të p, shkruani numrin total të shifrave domethënëse në vlerat e përdorura, dhe në vend të d, shkruani numrin e numrave dhjetorë.

Shiriti anësor "Krijimi i një tabele" tregon një përmbledhje të plotë të komandës së krijimit të tabelës. Ai përmban elementë të rinj dhe tregon formatin për të gjitha llojet e të dhënave të konsideruara (Në parim, ka lloje të tjera të dhënash, por ne nuk po i shqyrtojmë ende).

Në fillim, mund të duket se sintaksa e komandave sql është shumë e ndërlikuar. Por mund ta kuptoni lehtësisht nëse studioni me kujdes shembujt e mësipërm. Një element shtesë u shfaq në diagram - një vijë vertikale; shërben për të dalluar dizenjot alternative. Me fjalë të tjera, kur përcaktoni secilën kolonë, duhet të zgjidhni llojin e duhur të të dhënave (siç e mbani mend, parametrat opsionalë janë të mbyllur në kllapa katrore dhe konstruksionet që mund të përsëriten shumë herë janë të mbyllura në kllapa kaçurrelë; këto karaktere të veçanta nuk shkruhen në komandat reale sql). Pjesa e parë e diagramit tregon emrat e plotë për llojet e të dhënave, e dyta përmban emrat e tyre të shkurtuar; në praktikë, secili prej tyre mund të përdoret.

Pjesa e parë e artikullit është përfunduar. E dyta do t'i kushtohet studimit të futjes, zgjedhjes, përditësimit dhe fshirjes së komandave DML. Kushtet e kampionimit të të dhënave, operatorët e krahasimit dhe operatorët logjikë, përdorimi i vlerave null dhe logjika treshe do të mbulohen gjithashtu.

Krijimi i një tabele. Sintaksa e komandës për krijimin e tabelës është si më poshtë: parametrat opsionalë tregohen në kllapa katrore dhe strukturat përsëritëse tregohen në kllapa kaçurrelë.

krijoni tabelën e tabelës (karakteri i kolonës (gjatësia) [ kufizim ] | karakteri i ndryshëm (gjatësia) [ kufizim ] | data [ kufizim ] | koha [ kufizim ] | numër i plotë [ kufizim ] | i vogël [ kufizim ] | dhjetor (përpikëri, shifra dhjetore) kufizim ] | float (përpikëri) [ kufizim ] [( , karakteri i kolonës (gjatësia) [ kufizim ] | varchar (gjatësia) [ kufizim ] | data [ kufizim ] | koha [ kufizim ] | int [ kufizim ] | i vogël [ kufizim ] | dec (saktësia, shifra dhjetore) [kufizim] | float (precision) [kufizim] )]);

Sekreti i emrit sql

Në fillim të viteve 1970. ibm filloi të zbatojë modelin e bazës së të dhënave relacionale të propozuar nga Dr. Codd. Donald Chamberlin dhe një grup të tjerësh në Njësinë e Kërkimeve të Avancuara krijuan një gjuhë prototip të quajtur gjuha e strukturuar e pyetjeve angleze, ose thjesht vazhdim. Më pas u zgjerua dhe u rafinua. Versioni i ri i propozuar nga ibm u quajt vazhdim/2. Është përdorur si një ndërfaqe programimi (api) për dizajnimin e sistemit të parë të bazës së të dhënave relacionale të IBM, system/r. Për arsye që lidhen me nuancat ligjore, ibm vendosi të ndryshojë emrin: në vend të vazhdimit/2, përdorni sql (gjuha e strukturuar e pyetjeve). Kjo shkurtesë shpesh shqiptohet "shih-ku-el".

Ekzistojnë dallime domethënëse midis prototipeve të hershme të vazhdimit dhe standardit sql që njihet tashmë në organizata të ndryshme. Jim Melton, i cili përgatiti standardin sql-92, madje deklaroi se shumë njerëz gabojnë duke menduar se fjala "strukturuar" pasqyron saktë specifikat e kësaj gjuhe (jim melton dhe alan r. simon "të kuptuarit e sql-së së re: një udhëzues i plotë .” san francisko : morgan kaufmann, 1993. isbn: 1-55860-245-3). Prandaj, në fakt, sql është vetëm një emër, një sekuencë shkronjash s-q-l dhe asgjë më shumë.

Mire keq

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