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

Pyetjet Sql zgjidhni nga. Përdorimi i gjatësisë së vargut

Çdo zhvillues i uebit duhet të dijë SQL në mënyrë që të shkruajë pyetjet e bazës së të dhënave. Dhe, megjithëse phpMyAdmin nuk është anuluar, shpesh është e nevojshme të ndotni duart për të shkruar SQL të nivelit të ulët.

Kjo është arsyeja pse ne kemi përgatitur një turne të shkurtër të bazave të SQL. Le të fillojmë!

1. Krijo një tabelë

Deklarata CREATE TABLE përdoret për të krijuar tabela. Argumentet duhet të jenë emri i kolonave, si dhe llojet e tyre të të dhënave.

Le të krijojmë një tabelë të thjeshtë me emrin muaj. Ai përbëhet nga 3 kolona:

  • id– Numri i muajit në vitin kalendarik (numër i plotë).
  • emri– Emri i muajit (vargu, maksimumi 10 karaktere).
  • ditë– Numri i ditëve në këtë muaj (numër i plotë).

Ja se si do të duket pyetja përkatëse SQL:

KRIJO TABELA muaj (id int, emri varchar(10), ditë int);

Gjithashtu, kur krijoni tabela, këshillohet të shtoni një çelës primar për njërën nga kolonat. Kjo do t'i mbajë të dhënat unike dhe do të shpejtojë pyetjet e përzgjedhura. Le të jetë në rastin tonë emri i muajit unik (kolona emri)

KRIJO TABELE muaj (id int, emri varchar(10), ditë int, PRIMARY KEY (emri));

Data dhe ora
Lloji i të dhënavePërshkrim
DATAVlerat e datës
DATA KOHAVlerat e datës dhe kohës me saktësi në minutë
KOHAVlerat kohore

2. Futni rreshta

Tani le të plotësojmë tabelën tonë muaj informacione të dobishme. Shtimi i të dhënave në një tabelë bëhet përmes deklaratës INSERT. Ka dy mënyra për të shkruar këtë udhëzim.

Mënyra e parë nuk është të specifikoni emrat e kolonave ku do të futen të dhënat, por të specifikoni vetëm vlerat.

Ky shënim është i thjeshtë por i pasigurt sepse nuk ka asnjë garanci që ndërsa projekti zgjerohet dhe tabela redaktohet, kolonat do të jenë në të njëjtin rend si më parë. Një mënyrë më e sigurt (dhe në të njëjtën kohë më e rëndë) për të shkruar një deklaratë INSERT kërkon specifikimin e vlerave dhe renditjes së kolonave:

Këtu është vlera e parë në listë VLERAT përputhet me emrin e kolonës së parë të specifikuar, e kështu me radhë.

3. Nxjerrja e të dhënave nga tabelat

Deklarata SELECT është miku ynë më i mirë kur duam të marrim të dhëna nga një bazë të dhënash. Përdoret shumë shpesh, ndaj ju lutemi lexoni me shumë kujdes këtë pjesë.

Përdorimi më i thjeshtë i deklaratës SELECT është një pyetje që kthen të gjitha kolonat dhe rreshtat nga një tabelë (për shembull, një tabelë me emrin personazhet):

ZGJIDH * NGA "personazhet"

Karakteri yll (*) do të thotë që ne duam të marrim të dhëna nga të gjitha kolonat. Meqenëse bazat e të dhënave SQL zakonisht përbëhen nga më shumë se një tabelë, kërkohet fjala kyçe FROM, e ndjekur nga një hapësirë ​​e ndjekur nga emri i tabelës.

Ndonjëherë ne nuk duam të marrim të dhëna nga jo të gjitha kolonat në një tabelë. Për ta bërë këtë, në vend të një ylli (*), duhet të shkruajmë emrat e kolonave të dëshiruara të ndara me presje.

SELECT ID, emri NGA muaji

Gjithashtu, në shumë raste duam që rezultatet të renditen në një rend të caktuar. Në SQL, ne e bëjmë këtë me ORDER BY. Mund të duhet një modifikues opsional - ASC (i parazgjedhur) për të renditur në rend rritës ose DESC për të renditur në rend zbritës:

ZGJIDH ID-në, emrin NGA muaji RENDOSJE SIPAS emrit DESC

Kur përdorni ORDER BY, sigurohuni që të jetë i fundit në deklaratën SELECT. Përndryshe, do të lëshohet një mesazh gabimi.

4. Filtrimi i të dhënave

Ju keni mësuar se si të zgjidhni kolona specifike nga një bazë të dhënash duke përdorur një pyetje SQL, por çfarë nëse duam të marrim edhe rreshta specifikë? Klauzola WHERE vjen në shpëtim këtu, duke na lejuar të filtrojmë të dhënat bazuar në një kusht.

Në këtë pyetje, ne zgjedhim vetëm ata muaj nga tabela muaj që janë më të mëdha se 30 ditë duke përdorur operatorin më të madh se (>).

SELECT ID, emri NGA muaji WHERE ditë > 30

5. Filtrim i avancuar i të dhënave. operatorët AND dhe OR

Më parë, ne filtronim të dhënat duke përdorur një kriter të vetëm. Për filtrim më kompleks të të dhënave, mund të përdorni operatorët AND dhe OR dhe operatorët e krahasimit (=,<,>,<=,>=,<>).

Këtu kemi një tabelë që përmban katër albumet më të shitura të të gjitha kohërave. Le të zgjedhim ato që klasifikohen si rock dhe kanë më pak se 50 milionë kopje të shitura. Kjo mund të bëhet lehtësisht duke vendosur një operator AND midis këtyre dy kushteve.


ZGJIDH * NGA albumet WHERE zhanri = "rock" DHE shitje_në_miliona<= 50 ORDER BY released

6. Në/Midis/Pëlqyer

WHERE gjithashtu mbështet disa komanda speciale, duke ju lejuar të kontrolloni shpejt pyetjet më të përdorura. Këtu ata janë:

  • IN - përdoret për të specifikuar një sërë kushtesh, secila prej të cilave mund të plotësohet
  • BETWEEN - Kontrollon nëse vlera është në intervalin e specifikuar
  • LIKE - kërkon modele të caktuara

Për shembull, nëse duam të zgjedhim albume me pop dhe shpirti muzikë, ne mund të përdorim IN("value1","value2") .

SELECT * NGA albumet WHERE zhanri IN ("pop", "soul");

Nëse duam të marrim të gjitha albumet e lëshuara midis 1975 dhe 1985, do të shkruanim:

ZGJEDHJE * NGA albumet WHERE të publikuara MES VITIT 1975 DHE 1985;

7. Funksionet

SQL është plot me funksione që bëjnë të gjitha llojet e gjërave të dobishme. Këtu janë disa nga më të përdorurat:

  • COUNT() - kthen numrin e rreshtave
  • SUM() - kthen shumën totale të një kolone numerike
  • AVG() - kthen vlerën mesatare nga një grup vlerash
  • MIN() / MAX() - Merr vlerën minimale / maksimale nga një kolonë

Për të marrë vitin më të fundit në tabelën tonë, duhet të shkruajmë pyetjen e mëposhtme SQL:

SELECT MAX (i lëshuar) NGA albumet;

8. Nënpyetje

Në paragrafin e mëparshëm, mësuam se si të bëjmë llogaritje të thjeshta me të dhëna. Nëse duam të përdorim rezultatin nga këto llogaritje, nuk mund të bëjmë pa pyetje të ndërlidhura. Le të themi se duam të prodhojmë artist, album dhe viti i lëshimit për albumin më të vjetër në tabelë.

Ne e dimë se si t'i marrim këto kolona specifike:

SELECT artist, album, i publikuar nga albumet FROM;

Ne gjithashtu dimë se si të marrim vitin më të hershëm:

SELECT MIN (lëshuar) NGA albumi;

Gjithçka që duhet tani është të kombinohen dy pyetjet me një WHERE:

ZGJIDH artistin,albumin,lëshuar NGA albumet WHERE lëshuar = (SELECT MIN(lëshuar) FROM albume);

9. Tabelat e bashkimit

Në bazat e të dhënave më komplekse, ka tabela të shumta që lidhen me njëra-tjetrën. Për shembull, më poshtë janë dy tabela rreth lojërave video ( video_lojëra) dhe zhvilluesit e lojërave video ( zhvilluesit e lojës).


Tabela video_lojëra ka një kolonë zhvilluesi ( ID_ja e zhvilluesit), por ai përmban një numër të plotë, jo emrin e zhvilluesit. Ky numër është një identifikues ( id) të zhvilluesit përkatës nga tabela e zhvilluesve të lojërave ( zhvilluesit e lojës) duke i lidhur dy listat në mënyrë logjike, duke na lejuar të përdorim informacionin e ruajtur në të dyja në të njëjtën kohë.

Nëse duam të krijojmë një pyetje që kthen gjithçka që duhet të dimë për lojërat, mund të përdorim një BASHKIM TË BRENDSHËM për të lidhur kolonat nga të dyja tabelat.

ZGJIDH video_games.name, video_games.zhanri, game_developers.name, game_developers.country NGA video_lojërat BASHKOHUNI INNER lojëra_zhvilluesit ON video_games.developer_id = game_developers.id;

Ky është lloji më i thjeshtë dhe më i zakonshëm JOIN. Ka disa opsione të tjera, por ato zbatohen për rastet më pak të shpeshta.

10. Pseudonimet

Nëse shikoni shembullin e mëparshëm, do të vini re se janë dy kolona të quajtura emri. Kjo është konfuze, kështu që le të vendosim një pseudonim në një nga kolonat e përsëritura, për shembull, emri nga tavolina zhvilluesit e lojës do të thirret zhvilluesi.

Ne gjithashtu mund ta shkurtojmë pyetjen duke emërtuar emrat e tabelës: video_lojëra le të thërrasim lojërat, zhvilluesit e lojës - zhvilluesit:

ZGJIDH lojërat.emri, zhanri i lojërave, emri i devs. AS zhvillues, devs.vend NGA video_lojërat SI lojëra BASHKOHU I BRENDSHËM lojë_zhvilluesit AS zhvillues ON lojërat.zhvilluesi_id = devs.id;

11. Përditësimi i të dhënave

Shpesh na duhet të ndryshojmë të dhënat në disa rreshta. Në SQL, kjo bëhet me deklaratën UPDATE. Deklarata UPDATE përbëhet nga:

  • Tabela që përmban vlerën e zëvendësimit;
  • Emrat e kolonave dhe vlerat e tyre të reja;
  • Rreshtat e zgjedhur me WHERE që duam të përditësojmë. Nëse kjo nuk është bërë, atëherë të gjitha rreshtat në tabelë do të ndryshojnë.

Më poshtë është tabela seri_tv me seritë me vlerësimin e tyre. Sidoqoftë, një gabim i vogël hyri në tabelë: megjithëse seria Loja e froneve dhe përshkruhet si komedi, në të vërtetë nuk është. Le ta rregullojmë këtë!

Të dhënat e tabelës së serive tv PËRDITËSOJ zhanrin e SET të serive tv = "dramë" WHERE id = 2;

12. Fshirja e të dhënave

Fshirja e një rreshti tabele me SQL është një proces shumë i thjeshtë. Gjithçka që duhet të bëni është të zgjidhni tabelën dhe rreshtin që dëshironi të fshini. Le të heqim rreshtin e fundit në tabelë nga shembulli i mëparshëm seri_tv. Kjo bëhet duke përdorur deklaratën >DELETE.

FSHI NGA Seriali_tv WHERE id = 4

Kini kujdes kur shkruani deklaratën DELETE dhe sigurohuni që klauzola WHERE të jetë e pranishme, përndryshe të gjitha rreshtat e tabelës do të fshihen!

13. Fshirja e një tabele

Nëse duam të heqim të gjitha rreshtat, por ta lëmë vetë tabelën, atëherë përdorim komandën TRUNCATE:

TRUNCATE TABLE - emri i tabelës;

Në rastin kur vërtet duam të fshijmë të dhënat dhe vetë tabelën, atëherë komanda DROP do të jetë e dobishme:

HIQ TABLE_emri i tabelës;

Jini shumë të kujdesshëm me këto komanda. Ato nuk mund të zhbëhen!/p>

Kjo përfundon tutorialin tonë SQL! Ne nuk kemi mbuluar shumë, por ajo që ju tashmë dini duhet të jetë e mjaftueshme për t'ju dhënë disa aftësi praktike në karrierën tuaj në internet.

Llojet e të dhënaveSQL(Si nëfq, si në standard)

Llojet e vargjeve

Llojet numerike të të dhënave

Llojet e të dhënave të monedhës, simbolike, binare

Lloji Boolean. Numërimet

Shembuj të pyetjeve më të thjeshta SQL

Pyetjet më të thjeshta SELECT

Deklarata SQL SELECT është deklarata më e rëndësishme dhe më e përdorur. Është krijuar për të marrë informacion nga tabelat e bazës së të dhënave. Sintaksa e thjeshtuar e deklaratës SELECT është si më poshtë.

ZGJIDH [ TË GJITHA | DALUAR] select_item_commalist

NGA tabela_referenca_komalisti

[WHERE_shprehje e kushtëzuar]

[GROUP BY column_name_commalist]

[KANË shprehje_kushtëzuar]

[ ORDER BY order_item_commalist ]

Artikujt në kllapa katrore tregojnë artikujt që mund të mungojnë në pyetje.

Fjala kyçe SELECT i tregon bazës së të dhënave se klauzola e dhënë është një kërkesë për të marrë informacion.

Pas fjalës SELECT, renditen emrat e fushave (një listë atributesh), përmbajtja e të cilave kërkohet, të ndara me presje.

Fjala kyçe e kërkuar në klauzolën SELECT është FROM. Fjala kyçe FROM pasohet nga një listë e emrave të tabelave të ndara me presje nga e cila merret informacioni.

Për shembull, zgjidhni titullin, përshkrimin nga filmi

Çdo pyetje SQL duhet të përfundojë me një ";" (pikëpresje). Rezultati i kësaj pyetje është një tabelë...

Renditja e kolonave në këtë tabelë përputhet me rendin e fushave të specifikuara në pyetje

Nëse keni nevojë të shfaqni vlerat e të gjitha kolonave të tabelës, atëherë në vend që të renditni emrat e tyre, mund të përdorni simbolin "*" (yll).

SELECT * NGA filmi;

Në këtë rast, rezultati i pyetjes do të jetë e gjithë tabela e filmit.

Edhe një herë, le t'i kushtojmë vëmendje faktit që tabelat e marra si rezultat i pyetjes SQL nuk plotësojnë plotësisht përkufizimin e një marrëdhënieje relacionale. Në veçanti, ato mund të përmbajnë tuples (strings) me të njëjtat vlera atribute.

Për shembull, pyetja "lista e emrave të aktorëve" mund të shkruhet në formën e mëposhtme.

zgjidhni emrin e parë nga aktori;

Rezultati i saj do të jetë një tabelë, ka rreshta identikë në tabelë. Për të përjashtuar të dhënat e kopjuara nga rezultati i një pyetjeje SELECT, përdorni fjalën kyçe DISTINCT (shkëlqyeshëm).

Nëse pyetja SELECT merr fusha të shumta, atëherë DISTINCT eliminon rreshtat e kopjuar në të cilat vlerat e të gjitha fushave të zgjedhura janë identike.

Pyetja e mëparshme mund të shkruhet si më poshtë.

zgjidhni emrin e veçantë nga aktori;

Si rezultat, marrim një tabelë në të cilën rreshtat e kopjuara përjashtohen.

Fjala kyçe ALL (të gjitha), ndryshe nga DISTINCT, ka efektin e kundërt, domethënë, kur përdoret, rreshtat dublikatë përfshihen në dalje. Mënyra e specifikuar nga fjala kyçe ALL është e paracaktuar, kështu që praktikisht nuk përdoret për këtë qëllim në pyetje reale.

Përdorimi i një klauzole WHERE (where) në një deklaratë SELECT ju lejon të specifikoni një shprehje të kushtëzuar (kallëzues) që vlerësohet në true ose false për vlerat e fushës së rreshtit të tabelës të aksesuara nga deklarata SELECT. Klauzola WHERE specifikon se cilat rreshta të tabelave të specifikuara duhet të zgjidhen. Tabela që është rezultat i një pyetësori përfshin vetëm ato rreshta për të cilat kushti (kallëzuesi) i specifikuar në klauzolën WHERE vlerësohet si i vërtetë.

Shembull: Shkruani një pyetje që merr mbiemrat e të gjithë aktorëve të quajtur PENELOPE

zgjidhni mbiemrin nga aktori

ku emri i parë = "PENELOPE";

Kushtet e specifikuara në klauzolën WHERE mund të përdorin operatorët e krahasimit të përcaktuar nga operatorët = (e barabartë me), > (më e madhe se),< (меньше), >= (më e madhe se ose e barabartë),<- (меньше или равно), <>(jo të barabartë), si dhe operatorët logjikë AND, OR, dhe NOT.

Për shembull, një pyetje për titujt dhe përshkrimet e filmave të shkurtër (më pak se 60 minuta) që kushtojnë më pak se 3 dollarë me qira, do të duket kështu:

zgjidhni titullin, përshkrimin nga filmi

ku gjatësia< 60 and rental_rate < 3

Rezultati i kësaj pyetje është:

qira - qira

inventar - inventar, stoqe

dyqan- aksion, dyqan

Secili prej nesh has dhe përdor rregullisht baza të të dhënave të ndryshme. Kur zgjedhim një adresë emaili, ne jemi duke punuar me një bazë të dhënash. Bazat e të dhënave përdorin shërbimet e kërkimit, bankat për të ruajtur të dhënat e klientëve, etj.

Por, pavarësisht përdorimit të vazhdueshëm të bazave të të dhënave, edhe për shumë zhvillues të sistemeve softuerike ka shumë "njolla të bardha" për shkak të interpretimeve të ndryshme të të njëjtave terma. Ne do të japim një përkufizim të shkurtër të termave bazë të bazës së të dhënave përpara se të shikojmë gjuhën SQL. Kështu që.

Baza e të dhënave - një skedar ose grup skedarësh për ruajtjen e strukturave të renditura të të dhënave dhe marrëdhëniet e tyre. Shumë shpesh, një bazë të dhënash quhet një sistem menaxhimi.Një bazë e të dhënave është vetëm një depo informacioni në një format të caktuar dhe mund të punojë me DBMS të ndryshme.

Tabela - Le të imagjinojmë një dosje që ruan dokumente të grupuara sipas një atributi të caktuar, për shembull, një listë porosish për muajin e fundit. Kjo është tabela në kompjuter.Një tabelë e veçantë ka emrin e saj unik.

Lloji i të dhënave - lloji i informacionit që lejohet të ruhet në një kolonë ose rresht të caktuar. Mund të jenë numra ose tekst të një formati të caktuar.

Kolona dhe rreshti- të gjithë kemi punuar me fletëllogaritëse që kanë gjithashtu rreshta dhe kolona. Çdo bazë e të dhënave relacionale punon me tabela në të njëjtën mënyrë. Rreshtat nganjëherë quhen rekorde.

çelesi primar- çdo rresht i tabelës mund të ketë një ose më shumë kolona për ta identifikuar atë në mënyrë unike. Pa një çelës primar, është shumë e vështirë të përditësosh, modifikosh dhe fshish rreshtat e dëshiruar.

Çfarë është SQL?

SQL(Anglisht - gjuhë e strukturuar e pyetjeve) u zhvillua vetëm për të punuar me bazat e të dhënave dhe aktualisht është standardi për të gjitha DBMS-të e njohura. Sintaksa e gjuhës përbëhet nga një numër i vogël operatorësh dhe është i lehtë për t'u mësuar. Por, megjithë thjeshtësinë e jashtme, ai lejon krijimin e pyetjeve sql për operacione komplekse me një bazë të dhënash të çdo madhësie.

Që nga viti 1992 ekziston një standard i pranuar përgjithësisht i quajtur ANSI SQL. Ai përcakton sintaksën bazë dhe funksionet e operatorëve dhe mbështetet nga të gjithë drejtuesit e tregut DBMS si ORACLE Është e pamundur të mbulohen të gjitha mundësitë e gjuhës në një artikull të vogël, kështu që ne do të shqyrtojmë shkurtimisht vetëm pyetjet bazë SQL. Shembujt tregojnë qartë thjeshtësinë dhe mundësitë e gjuhës:

  • krijimi i bazave të të dhënave dhe tabelave;
  • kampionimi i të dhënave;
  • shtimi i të dhënave;
  • modifikimi dhe fshirja e informacionit.

Llojet e të dhënave SQL

Të gjitha kolonat në një tabelë të bazës së të dhënave ruajnë të njëjtin lloj të dhënash. Llojet e të dhënave në SQL janë të njëjta si në gjuhët e tjera të programimit.

Krijimi i tabelave dhe bazave të të dhënave

Ekzistojnë dy mënyra për të krijuar baza të dhënash të reja, tabela dhe pyetje të tjera në SQL:

  • Deklaratat SQL përmes tastierës DBMS
  • Përdorimi i mjeteve të administrimit ndërveprues të përfshirë me serverin e bazës së të dhënave.

Një bazë e re e të dhënave krijohet nga operatori KRIJON BAZA E TË DHËNAVE<наименование базы данных>; . Siç mund ta shihni, sintaksa është e thjeshtë dhe koncize.

Ne krijojmë tabela brenda bazës së të dhënave duke përdorur deklaratën CREATE TABLE me parametrat e mëposhtëm:

  • emri i tabelës
  • emrat e kolonave dhe llojet e të dhënave

Si shembull, le të krijojmë një tabelë Mallrash me kolonat e mëposhtme:

Ne krijojmë një tabelë:

KRIJO TABELA Mall

(commodity_id CHAR(15) JO NULL,

shitësi_id CHAR(15) JO NULL,

emri i mallit CHAR(254) NULL,

çmimi_mall DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Tabela ka pesë kolona. Pas emrit vjen lloji i të dhënave, kolonat ndahen me presje. Vlera e një kolone mund të jetë bosh (NULL) ose duhet të plotësohet (NOT NULL), dhe kjo përcaktohet kur krijohet tabela.

Zgjedhja e të dhënave nga një tabelë

Operatori i përzgjedhjes së të dhënave është pyetja SQL më e përdorur. Për të marrë informacion, duhet të specifikoni se çfarë duam të zgjedhim nga një tabelë e tillë. Së pari një shembull i thjeshtë:

ZGJIDHni emrin e mallit NGA Mall

Pas deklaratës SELECT, ne specifikojmë emrin e kolonës për marrjen e informacionit dhe FROM përcakton tabelën.

Rezultati i ekzekutimit të pyetjes do të jenë të gjitha rreshtat e tabelës me vlerat e Commodity_name në rendin në të cilin janë futur në bazën e të dhënave, d.m.th. pa asnjë renditje. Një klauzolë shtesë ORDER BY përdoret për të renditur rezultatin.

Për të kërkuar në fusha të shumta, renditini ato të ndara me presje, si në shembullin e mëposhtëm:

ZGJIDH ID_në e mallit, emri_mall, çmimi_mall NGA malli

Është e mundur të merret vlera e të gjitha kolonave të një rreshti si rezultat i pyetjes. Për këtë, përdoret shenja "*":

ZGJIDH * NGA Mall

  • Për më tepër, SELECT mbështet:
  • Renditja e të dhënave (RENDI SIPAS deklaratës)
  • Zgjidhni sipas kushteve (KU)
  • Termi i grupimit (GROUP BY)

Shtimi i një rreshti

Për të shtuar një rresht në një tabelë, përdoren pyetjet SQL me deklaratën INSERT. Shtimi mund të bëhet në tre mënyra:

  • shtoni një linjë të re të tërë;
  • pjesë e një vargu;
  • rezultatet e pyetjes.

Për të shtuar një rresht të plotë, duhet të specifikoni emrin e tabelës dhe vlerat e kolonave (fushave) të rreshtit të ri. Ja një shembull:

INSERT NË VLERAT E MALLRAVE ("106", "50", "Coca-Cola", "1.68", "Pa alkool ,)

Shembulli shton një produkt të ri në tabelë. Vlerat përcaktohen pas VALUES për secilën kolonë. Nëse nuk ka vlerë përkatëse për kolonën, atëherë duhet të specifikohet NULL. Kolonat janë të mbushura me vlera në rendin e specifikuar kur është krijuar tabela.

Nëse shtoni vetëm një pjesë të një rreshti, duhet të specifikoni në mënyrë eksplicite emrat e kolonave, si në shembullin:

INSERT INTO Commodity (id_i_mallrit, shitësi_id, emri_mallrit)

VALUES ("106 ", '50", "Coca Cola",)

Ne futëm vetëm identifikuesit e produktit, furnizuesin dhe emrin e tij dhe lëmë bosh pjesën tjetër të fushave.

Shtimi i rezultateve të pyetjeve

INSERT përdoret kryesisht për të shtuar rreshta, por mund të përdoret gjithashtu për të shtuar rezultatet e një deklarate SELECT.

Ndryshoni të dhënat

Për të ndryshuar informacionin në fushat e tabelës së bazës së të dhënave, duhet të përdorni deklaratën UPDATE. Operatori mund të përdoret në dy mënyra:

  • Të gjitha rreshtat në tabelë janë përditësuar.
  • Vetëm për një linjë të caktuar.

UPDATE përbëhet nga tre elementë kryesorë:

  • tabelën në të cilën është e nevojshme të bëhen ndryshime;
  • emrat e fushave dhe vlerat e tyre të reja;
  • kushtet për zgjedhjen e rreshtave për të ndryshuar.

Konsideroni një shembull. Le të themi se çmimi i një produkti me ID=106 ka ndryshuar, kështu që ky rresht duhet të përditësohet. Ne shkruajmë deklaratën e mëposhtme:

PËRDITËSONI SETin e mallit commodity_price = "3.2" WHERE commodity_id = "106"

Përcaktuam emrin e tabelës, në rastin tonë Commodity, ku do të kryhet përditësimi, pastaj pas SET - vlerën e re të kolonës dhe gjetëm rekordin e dëshiruar duke specifikuar vlerën e dëshiruar ID në WHERE.

Për të ndryshuar kolona të shumta, specifikoni çifte të shumta kolonash-vlerash të ndara me presje pas deklaratës SET. Le të shohim një shembull në të cilin përditësohet emri dhe çmimi i produktit:

PËRDITËSO KOSOVËN e mallrave commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

Për të fshirë informacionin në një kolonë, mund ta vendosni në NULL nëse struktura e tabelës e lejon atë. Duhet mbajtur mend se NULL është saktësisht vlera "jo" dhe jo zero në formën e tekstit ose një numri. Hiq përshkrimin e produktit:

PËRDITËSO KOSOVËN e mallrave commodity_desc = NULL WHERE commodity_id = "106"

Heqja e rreshtave

Pyetjet SQL për të fshirë rreshtat në një tabelë ekzekutohen me deklaratën DELETE. Ka dy raste përdorimi:

  • disa rreshta në tabelë janë fshirë;
  • të gjitha rreshtat në tabelë janë fshirë.

Një shembull i fshirjes së një rreshti nga një tabelë:

FSHI NGA malli WHERE commodity_id = "106"

Pas DELETE FROM ne specifikojmë emrin e tabelës në të cilën do të fshihen rreshtat. Klauzola WHERE përmban një kusht me të cilin rreshtat do të zgjidhen për fshirje. Në shembull, ne po fshijmë linjën e produktit me ID=106. Specifikimi KU është shumë i rëndësishëm. Heqja e kësaj deklarate do të fshijë të gjitha rreshtat në tabelë. Kjo vlen edhe për ndryshimin e vlerës së fushave.

Deklarata DELETE nuk specifikon emrat e kolonave ose metakarakteret. Ai heq plotësisht rreshtat, por nuk mund të heqë një kolonë të vetme.

Përdorimi i SQL në Microsoft Access

Zakonisht përdoret në mënyrë interaktive për të krijuar tabela, baza të të dhënave, për të menaxhuar, modifikuar, analizuar të dhënat në bazën e të dhënave dhe për të zbatuar pyetje SQL Access përmes një projektuesi të përshtatshëm interaktiv të pyetjeve (Query Designer), duke përdorur të cilin mund të ndërtoni dhe ekzekutoni menjëherë deklarata SQL të çdo kompleksiteti.

Mbështetet gjithashtu modaliteti i aksesit në server, në të cilin Access DBMS mund të përdoret si gjenerues i pyetjeve SQL për çdo burim të dhënash ODBC. Kjo aftësi lejon që aplikacionet Access të ndërveprojnë me çdo format.

Zgjerimet SQL

Meqenëse pyetjet SQL nuk i kanë të gjitha tiparet e gjuhëve të programimit procedural, të tilla si unazat, degët, etj., shitësit e DBMS zhvillojnë versionin e tyre të SQL me veçori të avancuara. Para së gjithash, kjo është mbështetje për procedurat e ruajtura dhe operatorët standardë të gjuhëve procedurale.

Dialektet më të zakonshme të gjuhës:

  • Baza e të dhënave Oracle - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL në ueb

MySQL DBMS shpërndahet nën Licencën e Përgjithshme Publike GNU. Ekziston një licencë tregtare me aftësinë për të zhvilluar module me porosi. Si pjesë integrale, ai përfshihet në asambletë më të njohura të serverëve të Internetit, si XAMPP, WAMP dhe LAMP, dhe është DBMS më i njohur për zhvillimin e aplikacioneve në internet.

Ai u zhvillua nga Sun Microsystems dhe aktualisht mirëmbahet nga Oracle Corporation. Mbështet bazat e të dhënave deri në 64 terabajt, standardin sintaksor SQL:2003, replikimin e bazave të të dhënave dhe shërbimet cloud.

Shënim:
Të gjithë artikujt në kategorinë aktuale të mësimeve SQL përdorin shembuj dhe detyra të bazuara në bazën e të dhënave të mostrës.

Deklarata SELECT është përgjegjëse për zgjedhjen e të dhënave nga tabelat e bazës së të dhënave në SQL. Ky artikull do të mbulojë sintaksën dhe shembujt e tij më të thjeshtë.

Për të ekzekutuar një pyetje të thjeshtë në bazën e të dhënave, mjafton të specifikoni vetëm 2 kushte (sugjerime):

  • Cilat kolona duhet të shkarkohen;
  • Nga cila tabelë dëshironi të shkarkoni kolonat.

Në SQL duket kështu:

ZGJIDH<Перечень столбцов>NGA<Перечень таблиц>

Emrat e kolonave ndahen me presje menjëherë pas fjalës kyçe SELECT. Kjo pasohet nga fjala kyçe FROM me emrat e tabelave. Nëse ka disa tabela, atëherë ato tregohen gjithashtu të ndara me presje.

Shënim:

Pyetjet ndaj tabelave të shumta nuk mbulohen në këtë artikull, pasi kjo temë lidhet me bashkimin e tabelave ose kërkon njohuri për klauzolën WHERE.

Kolonat dhe tabelat mund të renditen në çdo renditje dhe të përsëriten disa herë.

Lidhja me bazën e të dhënave

Shpesh ka më shumë se një bazë të dhënash në një server. Prandaj, përpara se të ekzekutoni kërkesën, do t'ju duhet të lidheni me një bazë të dhënash specifike. Le të mësojmë se si ta bëjmë atë në SQL Server Management Studio:

Tani çdo kërkesë do të ekzekutohet në kontekstin e saj.

Krijimi i një pyetjeje SQL

Le të bëjmë detyrën e parë:

Është e nevojshme të merren mbiemrat, emrat dhe patronimet e të gjithë punonjësve.

Futni kodin e mëposhtëm SQL në fushën e pyetjes:

SELECT Mbiemri, Emri, Emri i mesëm FROM Employees

Rreshti i parë i pyetjes përmban kolonat që do të ngarkohen, rreshti i dytë specifikon tabelën e kolonës. Në fakt, kodi i ngjan fjalisë së zakonshme: "Zgjidhni kolonat Mbiemri, Emri, Emri i mesëm nga tabela Punonjësit".

Klikoni në butonin "Run" në panelin e redaktuesit SQL. Rezultati i ekzekutimit të tij duhet të shfaqet në fund të dritares së pyetjes. Poshtë rezultatit shfaqet statusi dhe kohëzgjatja e kërkesës, si dhe numri i rreshtave të shkarkuar. Nëse bëni gjithçka në mënyrë korrekte, atëherë statusi do të thotë "Kërkesa u krye me sukses", dhe numri i rreshtave do të jetë 39.

Shpjegimet sintaksore

Nuk ka rëndësi se në cilin rast shkruhen fjalët kyçe dhe emrat. Ky opsion është plotësisht identik me atë të mëparshëm:

Zgjidhni mbiemrin, emrin, mbiemrin nga punonjësit

Është gjithashtu e mundur që të mos filloni çdo kusht në një linjë të re.

Opsione të tjera kërkesash

Para se të shkruanim kodin, folëm për nevojën për t'u lidhur me bazën e të dhënave. Por ju mund të bëni pa lidhje në këtë rast të veçantë (në disa programe kjo është një kërkesë e detyrueshme). Mjafton të specifikoni gjithashtu emrin e bazës së të dhënave dhe emrin e skemës në klauzolën FROM (dbo si parazgjedhje):

SELECT Mbiemri, Emri, Emri i mesëm FROM CallCenter.dbo.Employees

Tani le të përshkruajmë sintaksën e një deklarate të thjeshtë SELECT (pjesë opsionale të pyetjes janë në kllapa katrore):

SELECT [Table_name.]Column_name[, [Table_name.]Column_name2 ...] FROM [[Emri_database.]Schema_name.]Table_Emri

Emrat shtesë rrëmojnë kodin e pyetjes, kështu që ju mund të përdorni deklaratën USE. Ai do të kalojë kontekstin në bazën e të dhënave të specifikuar:

PËRDORNI CallCenter SELECT Mbiemri, Emri, Emri i Mesëm FROM Punonjësit

Kjo qasje do të sigurojë një lidhje me bazën e të dhënave të dëshiruar.

Shënim:

Emrat e kolonave dhe tabelave me shumë fjalë mund të përmbajnë hapësira midis fjalëve. Në raste të tilla, emrat e tyre vendosen në kllapa katrore në mënyrë që pyetja të funksionojë siç duhet. Për shembull, [emri i kolonës].

SQL - SELECT Deklaratë

Emri SQL (Structured Query Language) pasqyron faktin se pyetjet janë elementi më i përdorur i SQL. Një pyetje është një deklaratë që dërgon një komandë në një sistem të menaxhimit të bazës së të dhënave (DBMS) për të manipuluar ose shfaqur informacione të caktuara. Të gjitha pyetjet e përzgjedhjes së të dhënave në SQL janë ndërtuar duke përdorur deklaratën SELECT. Kjo ju lejon të kryeni kontrolle dhe përpunim mjaft kompleks të të dhënave.

Një pyetje mund të shfaqë të dhëna nga një kolonë specifike ose nga të gjitha kolonat në një tabelë. Për të krijuar pyetjen më të thjeshtë SELECT, duhet të specifikoni emrin e kolonës dhe emrin e tabelës.

SELECT sintaksën e deklaratës

ZGJIDH listën e kolonave NGA emri i tabelës

ZGJIDH Një fjalë kyçe që i tregon bazës së të dhënave se deklarata është një pyetje. Të gjitha pyetjet fillojnë me këtë fjalë, e ndjekur nga një hapësirë.

Lista_kollonash Lista e kolonave të tabelës që përzgjidhen nga pyetësori. Kolonat që nuk janë specifikuar në deklaratë nuk do të përfshihen në rezultat. Nëse keni nevojë të shfaqni të dhënat e të gjitha kolonave, mund të përdorni shënimin e shkurtuar. Një yll (*) nënkupton listën e plotë të kolonave.

NGA emri_tabelës Fjalë kyçe që duhet të jetë e pranishme në çdo kërkesë. Pasohet nga një hapësirë ​​e ndarë nga emri i tabelës që është burimi i të dhënave.

Kodi në kllapa është opsional në një deklaratë SELECT. Është e nevojshme për një përcaktim më të saktë të kërkesës.

Është gjithashtu e nevojshme të thuhet se kodi SQL është i pandjeshëm ndaj shkronjave të vogla. Kjo do të thotë që hyrja SELECT mund të shkruhet si zgjidhni. DBMS nuk do të bëjë dallimin midis këtyre dy hyrjeve, por këshillohet të shkruani të gjitha deklaratat SQL me shkronja të mëdha në mënyrë që të mund të dallohet lehtësisht nga kodet e tjera.

Le të hedhim një vështrim në tabelën e Shitësve nga tutoriali klasik SQL i Martin Graber për shembuj.
Këtu është kodi MySQL për të krijuar një tabelë testimi:

KRIJO TABELA 'shitësit' (`snum` INTEGER(11) NOT NULL AUTO_INCREMENT, `emër` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `qytet` VARCHAR(20) COLLATE`përgjithshme1_ci, FAQ125 NULL DEFAULT, ÇELËSI KRYESOR (`snum`)) MOTORI=SETI I KARAKTERVE InnoDB "cp1251" KOLLATE "cp1251_general_ci" KOMENT="InnoDB falas: 5120 kB"; INSERT INTO `slespeople` (`snum`, `sname`, `city`, `comm`) VLERAT (1001"Peel","London",0.120), (1002"Serres","San Jose",0.130 ), (1003"Axelrod","Nju Jork",0.100), (1004,"Motika","Londër",0.110), (1007,"Rifkin","Barcelona",0.150); KOMITET;

Tabela duket si kjo:

SELECT Shembull i deklaratës

1. Është e nevojshme të shfaqet një listë e shitësve dhe të shfaqen emrat e tyre (emri)

ZGJIDHni mbiemrin NGA shitësit

Rezultati:

Këtu, pas deklaratës SELECT, renditen kolonat që do të shfaqen. Emrat e kolonave ndahen me presje.

3. Është e nevojshme të shfaqet e gjithë tabela

Për ta bërë këtë, mund të përdorni sintaksë të ndryshme për të shkruar pyetje. Ne rendisim çdo kolonë pas deklaratës SELECT:

SELECT snum , sname , city , comm FROM Shitës

Ose mund të arrini të njëjtin rezultat duke përdorur shënimin stenografi:

ZGJIDH * NGA Rezultati i shitësve:

snummbiemriqytetcomm
1001 QëroniLondra0,12
1002 SerresSan Jose0,13
1003 AxelrodNju Jork0,1
1004 MotikaLondra0,11
1007 RifkinBarcelona0,15
Unë gjithashtu dua t'ju jap një këshillë të vogël. Për lehtësinë e korrigjimit të pyetjeve, disa njerëz shkruajnë një listë kolonash që duhet të shfaqen në një rresht të veçantë. Kjo e bën më të lehtë komentimin e kodit. Sintaksa për komentimin e kodit në SQL është /* kodi i komentuar */ Shembull: SELECT snum ,sname , city , comm FROM Salespeople

Kjo do të shfaqë 4 kolona, ​​megjithatë, me një regjistrim të tillë, ju lehtë mund të komentoni një kolonë të panevojshme. Për shembull si kjo:

SELECT /* snum , */ sname , city , comm FROM Shitës

Tani kolona snum nuk do të shfaqet sepse është komentuar. Shumë i shpejtë dhe i përshtatshëm. Si të shkruani kodin SQL varet nga ju, sigurisht, por njohja e gjërave të tilla ndonjëherë është e dobishme.

Përdorimi i shprehjeve në një deklaratë SELECT

Shumë DBMS ofrojnë veçori të veçanta për trajtimin e rezultateve të pyetjeve. Kompleti i objekteve të tilla në DBMS të ndryshme është i ndryshëm, por ka disa veçori standarde, siç janë shprehjet. Për shembull, mund të dëshironi të kryeni operacione të thjeshta matematikore mbi të dhënat për t'i paraqitur ato në një mënyrë më të përshtatshme, ose të futni tekst shtesë në rezultatin e një pyetjeje. SQL ju lejon të vendosni shprehje skalare dhe konstante midis kolonave të zgjedhura që mund të plotësojnë ose zëvendësojnë kolonat në klauzolat SELECT. Konsideroni një shembull.

4. Është e nevojshme që komisionet (comm) të shitësve të shfaqen në përqindje, jo në numra dhjetorë

SELECT snum, sname, city, comm * 100 NGA shitësit

Rezultati:

snummbiemriqytetcomm
1001 QëroniLondra12
1002 SerresSan Jose13
1003 AxelrodNju Jork10
1004 MotikaLondra11
1007 RifkinBarcelona15
Në kolonën e fundit, të gjitha të dhënat e marra shumëzohen me 100 dhe shfaqen si përqindje.

Kjo kolonë nuk ka një emër, sepse nuk përmban të dhëna të modifikuara dhe për këtë arsye emërtohet sipas gjykimit të DBMS (për shembull, MySQL emërton kolonën comm * 100, në shembujt e M. Grabber, kolona ka emrin 4, dmth numri i saj).

Në raste të tilla, është i përshtatshëm për t'u përdorur emërtimi i kolonës. Për shembull, mund të emërtoni përqindjen e kolonës së fundit. Për ta bërë këtë, pas emrit të kolonës, duhet të specifikoni fjalën kyçe AS dhe më pas emrin e kolonës në faqen që rezulton.

SELECT snum, sname, city, comm * 100 AS "përqind" NGA Rezultati i shitësve:

snummbiemriqytetpër qind
1001 QëroniLondra12
1002 SerresSan Jose13
1003 AxelrodNju Jork10
1004 MotikaLondra11
1007 RifkinBarcelona15

Si rezultat i pyetjes, kolona e fundit quhet vargu "përqind", gjë që e bën më të lehtë për t'u kuptuar.

Meqenëse numri shfaqet si përqindje, do të ishte mirë ta tregonim këtë në rezultat. Aftësia SQL vjen në shpëtim shtoni tekst në rezultat. Duket kështu:

SELECT snum, sname, city, comm * 100 AS përqind , "%" NGA Rezultati i shitësve:

snummbiemriqytetpër qind%
1001 QëroniLondra12 %
1002 SerresSan Jose13 %
1003 AxelrodNju Jork10 %
1004 MotikaLondra11 %
1007 RifkinBarcelona15 %

Mund të shihet se pas daljes së rreshtit nga baza e të dhënave, u shfaq një kolonë e re, e mbushur me një shenjë përqindjeje (%).

Nëse nuk jeni të kënaqur me daljen e të dhënave dhe tekstin plotësues në kolona të ndryshme, atëherë mund të përdorni funksionet speciale të DBMS-së tuaj për t'u bashkuar në një kolonë.

MySQL përdor funksionin CONCAT . Këtu është përkufizimi i tij nga doracaku:

CONCAT (rruga 1, rr2,...)
Kthen një varg që rezulton nga lidhja e argumenteve. Nëse të paktën një nga argumentet është NULL, NULL kthehet. Mund të marrë më shumë se 2 argumente. Argumenti numerik konvertohet në formën e tij të vargut ekuivalent.

Shembull: SELECT snum, sname, city , CONCAT(comm * 100, "%") AS "persent" FROM shitës Rezultati:

snummbiemriqytettë qëndrueshme
1001 QëroniLondra12.000%
1002 SerresSan Jose13.000%
1003 AxelrodNju Jork10.000%
1004 MotikaLondra11.000%
1007 RifkinBarcelona15.000%

Në këtë pyetje, funksioni CONCAT merr 2 argumente, këto janë comm * 100 dhe shenja e përqindjes ("%). Më pas e emërtojmë kolonën me AS.

Është e rëndësishme të dini se përdorimi i funksioneve degradon performancën. Ky nuk është i vetmi negativ, por shumë i rëndësishëm. Prandaj, nëse mund të shpëtoni me kodin standard SQL, është më mirë të mos përdorni funksione. Ato duhet të mbahen mend vetëm në raste ekstreme.

Përjashtimi i të dhënave të tepërta

Shpesh është e nevojshme të përjashtohen vlerat e kopjuara nga rezultatet e pyetjeve. Për këtë përdoret fjala kyçe DISTINCT. Efekti i kundërt arrihet duke përdorur fjalën ALL, e cila përdoret si parazgjedhje (d.m.th., nuk ka nevojë të specifikohet).

5. Është e nevojshme të shfaqen qytetet (qyteti), ku ka shitës

Kërkesa pa përjashtim:

ZGJIDHni qytetin NGA shitësit Rezultati:

Vlerat e dyfishta të Londrës përjashtohen nga rezultati, sipas nevojës.

Rendit rezultatin sipas vlerave sipas kolonës

Deklarata SELECT nxjerr të dhëna në një sekuencë arbitrare. Për të renditur rezultatin sipas një kolone të caktuar, SQL përdor operatorin ORDER BY (d.m.th., rendit sipas...). Kjo deklaratë ju lejon të ndryshoni rendin në të cilin dalin të dhënat. ORDER BY urdhëron rezultatin e pyetjes sipas vlerave të një ose më shumë kolonave të zgjedhura në klauzolën SELECT. Në këtë rast, për secilën kolonë, mund të vendosni renditjen në rend rritës - në rritje (ASC) (ky parametër përdoret si parazgjedhje) ose në rend zbritës - në zbritje (DESC).

Renditni rezultatin sipas kolonës së mbiemrit. Pas operatorit ORDER BY, ne tregojmë sipas cilës kolonë të renditni, atëherë duhet të specifikoni metodën e renditjes

Shembull - renditja në rend rritës:

ZGJIDH * NGA shitësit RENDOSJE NGA mbiemri ASC

Rezultati:


Shembull - renditja sipas kolonave të shumta:

ZGJIDH snum, emrin, qytetin NGA shitësit RENDOSJE SIPAS mbiemrit DESC, qyteti DESC Rezultati:

snummbiemriqytet
1002 SerresSan Jose
1007 RifkinBarcelona
1001 QëroniLondra
1004 MotikaLondra
1003 AxelrodNju Jork

Disa shënime të rëndësishme:
- kolona me të cilën kryhet renditja duhet të specifikohet në SELECT (mund të përdorni *)
- operatori ORDER BY shkruhet gjithmonë në fund të pyetjes

Artikujt kryesorë të lidhur