Užklausos sql pasirinkimo užklausa. Transact-SQL – duomenų keitimas ir trynimas

Bet kuri lentelė turi savo loginę pradžią ir loginę pabaigą. Be to, bet kurią lentelę sudaro duomenys, kurie dažnai, o duomenų bazių atveju – didesniu mastu, yra išsklaidyti. Kaip pažymėta pirmame įraše apie SQL ir duomenų bazes, duomenis galima reguliariai pridėti per visą duomenų bazių gyvavimo ciklą. Per šį laiką galima įvesti daugiau nei vieną dešimtį duomenų. SQL, kaip ir visame kitur, ir visuose kompiuterines programas, galite rūšiuoti duomenis. Tai atliekama pagal komandą RŪŠIUOTI PAGAL. Yra du šios komandos argumentai.

  • ASC nustato tvarką didėjančia tvarka (nuo mažiausio iki didžiausio)
  • DESC – mažėjantis (nuo didžiausio iki mažiausio)
Paprastai numatytoji SQL tvarka yra didėjanti (nuo mažiausio iki didžiausio).
Pabandykime surikiuoti skolininkų lentelę pagal pavardę – stulpelį Vardas – mažėjimo tvarka

Skolininkai

Nr mėnuo metų Vardas miestas Adresas Bauda Skola
0001 liepos mėn2012 IvanovasStavropolisStavropolskaja, 14891.00 50000
0002 gruodį2019 KononovastotoriųZagorodnaya, 25419565.00 684068
0003 Gegužė2013 JamšinasMichailovskasKaimas, 489868.00 165840
0004 Rugpjūtis2012 prenyStavropolisCentrinis, 164659.00 46580
... ... ... ... ... ... ... ...
9564 Kovas2015 UlijevasDeminoTarptautinis, 1566846.00 435089
9565 Spalio mėn2012 PavlovaStavropolisStotis, 37685.00 68059
9566 sausio mėn2012 UryupaMichailovskasFontannaya, 19 m1235.00 51238
9567 lapkritis2017 ValetovastotoriųIšeik, 6513698.00 789654

Vykdyti prašymą
PASIRINKTI*
IŠ skolininkų
UŽSAKYTI PAGAL vardą DESC ;

Skolininkai

Nr mėnuo metų Vardas miestas Adresas Bauda Skola
0003 Gegužė2013 JamšinasMichailovskasKaimas, 489868.00 165840
9566 sausio mėn2012 UryupaMichailovskasFontannaya, 19 m1235.00 51238
9564 Kovas2015 UlijevasDeminoTarptautinis, 1566846.00 435089
0004 Rugpjūtis2012 prenyStavropolisCentrinis, 164659.00 46580
9565 Spalio mėn2012 PavlovaStavropolisStotis, 37685.00 68059
0002 gruodį2019 KononovastotoriųZagorodnaya, 25419565.00 684068
0001 liepos mėn2012 IvanovasStavropolisStavropolskaja, 14891.00 50000
9567 lapkritis2017 ValetovastotoriųIšeik, 6513698.00 789654

Užsakymas taip pat gali būti atliktas sugrupuotais duomenimis naudojant komandą . Tačiau šiuo atveju komanda ORDER BY užklausoje turėtų būti paskutinė, tai yra
PASIRINKTI*
IŠ skolininkų
GRUPĖ PAGAL vardą
UŽSAKYTI PAGAL vardą DESC ;

Jei užsakytuose laukuose yra langelių su tuščiomis reikšmėmis (NULL), tada, priklausomai nuo programų, dirbančių su duomenų baze, tokios ląstelės gali būti sąrašo pabaigoje arba pradžioje.
Yra dar vienas triukas, kaip atlikti duomenų tvarkymą. Apsvarstykite užklausą
PASIRINKITE numerį, metus, vardą
IŠ skolininkų
UŽSAKYTI IKI 2 DESC ;

Čia du reiškia stulpelio eilės numerį iš eilutės „SELECT Num, Year, Sname“ ir būtent šis stulpelis bus naudojamas reitinguojant mažėjančia tvarka.

Skolininkai

Kaip matote, reikšmės yra surūšiuotos pagal Metų stulpelį, sąrašo pradžioje nurodant naujausią datą.
Taigi, užsakymas SQL turi tokius pačius reitingavimo principus kaip ir bet kurioje kompiuterinėje programoje. Viskas priklauso nuo duomenų bazės administratoriaus ir jo poreikių šiai ar kitai informacijai, kurią jis nori gauti.

SQL – SELECT pareiškimas

Pavadinimas SQL (Structured Query Language) atspindi faktą, kad užklausos yra dažniausiai naudojamas SQL elementas. Užklausa yra sakinys, siunčiantis komandą duomenų bazių valdymo sistemai (DBVS), kad būtų galima manipuliuoti arba rodyti tam tikrą informaciją. Visos duomenų atrankos užklausos SQL yra sukurtos naudojant SELECT sakinį. Tai leidžia atlikti gana sudėtingus patikrinimus ir duomenų apdorojimą.

Užklausa gali rodyti duomenis iš konkretaus stulpelio arba iš visų lentelės stulpelių. Norėdami sukurti paprasčiausią SELECT užklausą, turite nurodyti stulpelio pavadinimą ir lentelės pavadinimą.

SELECT teiginio sintaksė

PASIRINKITE stulpelių_sąrašą FROM lentelės_pavadinimas

PASIRINKTI Raktažodis, nurodantis duomenų bazei, kad teiginys yra užklausa. Visos užklausos prasideda šiuo žodžiu, po kurio seka tarpas.

Stulpelių_sąrašas Lentelės stulpelių, kuriuos pasirenka užklausa, sąrašas. Ataskaitoje nenurodyti stulpeliai į rezultatą nebus įtraukti. Jei reikia rodyti visų stulpelių duomenis, galite naudoti sutrumpintą žymėjimą. Žvaigždutė (*) reiškia visą stulpelių sąrašą.

FROM lentelės_pavadinimas Raktinis žodis, kuris turi būti kiekvienoje užklausoje. Po jo yra tarpas, atskirtas lentelės, kuri yra duomenų šaltinis, pavadinimu.

Kodas skliausteliuose yra neprivalomas sakinyje SELECT. Tai būtina norint tiksliau apibrėžti prašymą.

Taip pat būtina pasakyti, kad SQL kodas neskiria didžiųjų ir mažųjų raidžių. Tai reiškia, kad SELECT įrašas gali būti parašytas kaip Select. DBVS neatskirs šių dviejų įrašų, tačiau patariama visus SQL sakinius rašyti didžiosiomis raidėmis, kad būtų galima lengvai atskirti juos nuo kito kodo.

Pažvelkime į pardavėjų lentelę iš klasikinės Martino Graberio SQL mokymo programos pavyzdžių.
Štai MySQL kodas, skirtas sukurti bandymo lentelę:

KURTI LENTELĘ "pardavėjai" ("snum" INTEGER(11) NOT NULL AUTO_INCREMENT, "vardas" VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, "miestas" VARCHAR(20) COLLATE cp1251_DOLEULT,general ) NUMATYTOJI NULIS, PIRMINIS RAKTAS (`snum`))ENGINE=InnoDB CHARACTER SET "cp1251" COLLATE "cp1251_general_ci" COMMENT="InnoDB nemokama: 5120 kB"; ĮTERPITE Į „pardavėjai“ („snum“, „vardas“, „miestas“, „comm“) VERTES (1001 „Peel“, „London“, 0,120), (1002 „Serres“, „San Chosė“, 0,130 ), (1003 "Akselrodas", "Niujorkas", 0,100), (1004 "Motika", "Londonas", 0,110), (1007 "Rifkin", "Barselona", 0,150); ĮSIPAREIGOTI;

Lentelė atrodo taip:

SELECT pareiškimo pavyzdys

1. Būtina rodyti pardavėjų sąrašą ir jų pavadinimus (vardą)

PASIRINKITE vardą IŠ Pardavėjų

Rezultatas:

Čia, po SELECT sakinio, pateikiami rodytini stulpeliai. Stulpelių pavadinimai atskiriami kableliais.

3. Būtina rodyti visą lentelę

Norėdami tai padaryti, užklausoms rašyti galite naudoti skirtingą sintaksę. Išvardijame kiekvieną stulpelį po SELECT teiginio:

PASIRINKITE snum , sname , miestą , comm FROM Pardavėjai

Arba galite pasiekti tą patį rezultatą naudodami sutrumpintą užrašą:

PASIRINKTI * IŠ Pardavėjų Rezultatas:

snumpavardėmiestascomm
1001 NulupkiteLondonas0,12
1002 SerresSan Jose0,13
1003 AkselrodasNiujorkas0,1
1004 MotikaLondonas0,11
1007 RifkinasBarselona0,15
Taip pat noriu duoti jums nedidelį patarimą. Kad būtų patogiau derinti užklausas, kai kurie žmonės surašo stulpelių, kurie turi būti rodomi atskiroje eilutėje, sąrašą. Tai palengvina kodo komentavimą. Komentavimo kodo sintaksė SQL yra /* komentuojamas kodas */ . Pavyzdys: SELECT snum ,sname , city , comm FROM Salespeople

Bus rodomi 4 stulpeliai, tačiau su tokiu įrašu galite lengvai pakomentuoti nereikalingą stulpelį. Pavyzdžiui taip:

PASIRINKTI /* snum , */ vardas , miestas , komunikacija IŠ pardavėjų

Dabar snum stulpelis nebus rodomas, nes jis komentuojamas. Labai greita ir patogu. Kaip parašyti SQL kodą, žinoma, priklauso nuo jūsų, tačiau žinoti tokius dalykus kartais pravartu.

Išraiškų naudojimas SELECT teiginyje

Daugelis DBVS teikia specialias funkcijas, skirtas tvarkyti užklausų rezultatus. Tokių įrenginių rinkinys skirtingose ​​DBVS skiriasi, tačiau yra keletas standartinių funkcijų, tokių kaip išraiškos. Pavyzdžiui, galbūt norėsite atlikti paprastas matematines operacijas su duomenimis, kad jie būtų patogesni, arba į užklausos rezultatą įterpti papildomo teksto. SQL leidžia tarp pasirinktų stulpelių sudėti skaliarines išraiškas ir konstantas, kurios gali papildyti arba pakeisti stulpelius SELECT sąlygose. Apsvarstykite pavyzdį.

4. Pardavėjų komisinius (comm) būtina rodyti procentais, o ne dešimtainiais skaičiais

PASIRINKITE snum, sname, miestą, comm * 100 FROM pardavėjų

Rezultatas:

snumpavardėmiestascomm
1001 NulupkiteLondonas12
1002 SerresSan Jose13
1003 AkselrodasNiujorkas10
1004 MotikaLondonas11
1007 RifkinasBarselona15
Paskutiniame stulpelyje visi gauti duomenys padauginami iš 100 ir rodomi procentais.

Šis stulpelis neturi pavadinimo, nes jame nėra modifikuotų duomenų, todėl jis pavadintas DBVS nuožiūra (pavyzdžiui, MySQL stulpelį pavadina comm * 100, M. Grabberio pavyzdžiuose stulpelis turi pavadinimą 4, y. jos numerį).

Tokiais atvejais patogu naudoti stulpelio pavadinimo. Pavyzdžiui, galite pavadinti paskutinį stulpelį procentais. Norėdami tai padaryti, po stulpelio pavadinimo turite nurodyti raktinį žodį AS, o tada gautame puslapyje stulpelio pavadinimą.

PASIRINKITE snum, sname, miestą, comm * 100 AS "procentų" IŠ pardavėjų Rezultatas:

snumpavardėmiestasprocentų
1001 NulupkiteLondonas12
1002 SerresSan Jose13
1003 AkselrodasNiujorkas10
1004 MotikaLondonas11
1007 RifkinasBarselona15

Dėl užklausos paskutinis stulpelis pavadintas eilute „procentas“, todėl ją lengviau suprasti.

Kadangi skaičius rodomas procentais, būtų malonu tai nurodyti rezultate. Į pagalbą ateina SQL galimybė pridėti tekstą prie rezultato. Tai atrodo taip:

PASIRINKITE snum, sname, miestą, comm * 100 AS procentų , "%" IŠ pardavėjų Rezultatas:

snumpavardėmiestasprocentų%
1001 NulupkiteLondonas12 %
1002 SerresSan Jose13 %
1003 AkselrodasNiujorkas10 %
1004 MotikaLondonas11 %
1007 RifkinasBarselona15 %

Matyti, kad po eilutės išvedimo iš duomenų bazės atsirado naujas stulpelis, užpildytas procento ženklu (%).

Jei nesate patenkinti duomenų ir papildomo teksto išvestimi skirtinguose stulpeliuose, galite naudoti specialias savo DBVS funkcijas, kad sujungtumėte į vieną stulpelį.

MySQL naudoja funkciją CONCAT . Štai jo apibrėžimas iš vadovo:

CONCAT(str1, str2,...)
Grąžina eilutę, gautą sujungus argumentus. Jei bent vienas iš argumentų yra NULL, grąžinamas NULL. Galima pateikti daugiau nei 2 argumentus. Skaitinis argumentas konvertuojamas į jam lygiavertę eilutės formą.

Pavyzdys: SELECT snum, sname, city , CONCAT(comm * 100, "%") AS "persent" IŠ pardavėjų Rezultatas:

snumpavardėmiestasnuolatinis
1001 NulupkiteLondonas12.000%
1002 SerresSan Jose13.000%
1003 AkselrodasNiujorkas10.000%
1004 MotikaLondonas11.000%
1007 RifkinasBarselona15.000%

Šioje užklausoje funkcija CONCAT naudoja 2 argumentus, tai yra comm * 100 ir procento ženklas („%“). Tada stulpelį pavadiname AS.

Svarbu žinoti, kad funkcijų naudojimas pablogina našumą. Tai ne vienintelis neigiamas, bet labai svarbus dalykas. Todėl, jei galite išsisukti nuo standartinio SQL kodo, geriau nenaudoti funkcijų. Juos reikėtų prisiminti tik kraštutiniais atvejais.

Perteklinių duomenų pašalinimas

Dažnai iš užklausos rezultatų reikia išskirti pasikartojančias vertes. Tam naudojamas raktinis žodis DISTINCT. Priešingas efektas gaunamas naudojant žodį ALL, kuris naudojamas pagal nutylėjimą (tai yra, jo nurodyti nereikia).

5. Būtina parodyti miestus (miestą), kuriuose yra pardavėjų

Prašymas be išimties:

PASIRINKTI miestą IŠ pardavėjų Rezultatas:

Jei reikia, pasikartojančios Londono vertės neįtraukiamos į rezultatą.

Rūšiuoti rezultatus pagal vertes pagal stulpelį

SELECT sakinys išveda duomenis savavališka seka. Norėdami surūšiuoti rezultatą pagal tam tikrą stulpelį, SQL naudoja operatorių ORDER BY (t. y. tvarka pagal...). Šis teiginys leidžia pakeisti duomenų išvedimo tvarką. ORDER BY sutvarko užklausos rezultatą pagal vieno ar kelių stulpelių, pasirinktų SELECT sąlygoje, reikšmes. Tokiu atveju kiekviename stulpelyje galite nustatyti rūšiavimą didėjančia tvarka – didėjančia (ASC) (šis parametras naudojamas pagal numatytuosius nustatymus) arba mažėjančia tvarka – mažėjančia tvarka (DESC).

Rūšiuokite rezultatą pagal vardo stulpelį. Po operatoriaus ORDER BY nurodome pagal kurį stulpelį rūšiuoti, tuomet reikia nurodyti rūšiavimo būdą

Pavyzdys – rūšiavimas didėjančia tvarka:

PASIRINKTI * IŠ Pardavėjų UŽSAKYTI PAGAL vardą ASC

Rezultatas:


Pavyzdys – rūšiavimas pagal kelis stulpelius:

PASIRINKTI snum, sname, miestą IŠ Pardavėjų UŽSAKYTI PAGAL vardą DESC, miestą DESC Rezultatas:

snumpavardėmiestas
1002 SerresSan Jose
1007 RifkinasBarselona
1001 NulupkiteLondonas
1004 MotikaLondonas
1003 AkselrodasNiujorkas

Keletas svarbių pastabų:
- stulpelis, pagal kurį vyksta rūšiavimas, turi būti nurodytas SELECT (galite naudoti *)
- užklausos pabaigoje visada rašomas operatorius ORDER BY

Sveiki atvykę į mano tinklaraščio svetainę. Šiandien kalbėsime apie sql užklausas pradedantiesiems. Kai kuriems žiniatinklio valdytojams gali kilti klausimų. Kodėl mokytis sql? Negalite apsieiti?

Pasirodo, profesionaliam interneto projektui to nepakaks. Sql naudojamas darbui su duomenų baze ir „WordPress“ programoms kurti. Pažiūrėkime, kaip naudoti užklausas išsamiau.

Kas tai yra

SQL yra struktūrinių užklausų kalba. Sukurta siekiant nustatyti duomenų tipą, suteikti prieigą prie jų ir apdoroti informaciją per trumpą laiką. Jame aprašomi komponentai arba kai kurie rezultatai, kuriuos norite matyti interneto projekte.

Paprastai tariant, ši programavimo kalba leidžia pridėti, keisti, ieškoti ir rodyti informaciją duomenų bazėje. Mysql populiarumą lėmė tai, kad jis naudojamas kuriant dinamiškus interneto projektus, kurie yra pagrįsti duomenų baze. Todėl, norėdami sukurti funkcinį tinklaraštį, turite išmokti šią kalbą.

Ką gali padaryti

SQL kalba leidžia:

  • kurti lenteles;
  • keisti priimti ir saugoti skirtingus duomenis;
  • sujungti informaciją į blokus;
  • apsaugoti duomenis;
  • sukurti prieigos užklausas.

Svarbu! Susidūrę su sql, galite rašyti bet kokio sudėtingumo „WordPress“ programas.

Kokia struktūra

Duomenų bazė susideda iš lentelių, kurios gali būti pavaizduotos kaip Excel failas.

Ji turi pavadinimą, stulpelius ir eilutę su tam tikra informacija. Tokias lenteles galite sukurti naudodami sql užklausas.

Ką tu turi žinoti


Pagrindiniai taškai mokantis SQL

Kaip minėta pirmiau, užklausos naudojamos apdoroti ir įvesti naują informaciją į duomenų bazę, kurią sudaro lentelės. Kiekviena eilutė yra atskiras įrašas. Taigi sukurkime duomenų bazę. Norėdami tai padaryti, parašykite komandą:

Sukurti duomenų bazę 'bazaname'

Duomenų bazės pavadinimą kabutėse rašome lotyniškai. Pabandykite sugalvoti jai prasmingą vardą. Nekurkite duomenų bazės, tokios kaip „111“, „www“ ir panašiai.

Sukūrę duomenų bazę, įdiekite:

NUSTATYTI PAVADINIMUS „utf-8“

Tai būtina, kad svetainės turinys būtų rodomas teisingai.

Dabar mes sukuriame lentelę:

KURTI LENTELĘ 'bazaname' . "stalas" (

ID INT(8) NOT NULL AUTO_INCREMENT PIRMINIS RAKTAS,

žurnalas VARCHAR(10),

išlaikyti VARCHAR (10),

data DATE

Antroje eilutėje parašėme tris atributus. Pažiūrėkime, ką jie reiškia:

  • Atributas NOT NULL reiškia, kad langelis nebus tuščias (laukelis būtinas);
  • AUTO_INCREMENT reikšmė yra automatinis užbaigimas;
  • PIRMINIS RAKTAS yra pirminis raktas.

Kaip pridėti informaciją

Norėdami užpildyti sukurtos lentelės laukus reikšmėmis, naudojamas INSERT sakinys. Rašome šias kodo eilutes:

Įterpti į lentelę

(prisijungimas , leidimas , data) VERTYBĖS

('Vasa', '87654321', '2017-06-21 18:38:44');

Skliausteliuose nurodome stulpelių pavadinimus, o kitame – reikšmes.

Svarbu! Vadovaukitės stulpelių pavadinimų ir reikšmių seka.

Kaip atnaujinti informaciją

Tam naudojama komanda UPDATE. Pažiūrėkime, kaip pakeisti konkretaus vartotojo slaptažodį. Rašome šias kodo eilutes:

UPDATE „lentelė“ SET pass = „12345678“ WHERE id = „1“

Dabar pakeiskite slaptažodį į „12345678“. Pakeitimai įvyksta eilutėje su "id"=1. Jei neparašysite komandos WHERE, keisis visos eilutės, o ne konkreti.

Rekomenduoju įsigyti knygą SQL manekenams “. Jos pagalba galėsite profesionaliai dirbti su duomenų baze žingsnis po žingsnio. Visa informacija yra sukurta remiantis principu nuo paprastos iki sudėtingos ir bus gerai priimta.

Kaip ištrinti įrašą

Jei ką nors parašėte ne taip, pataisykite tai naudodami komandą DELETE. Veikia taip pat kaip UPDATE. Rašome šį kodą:

IŠTRINTI IŠ 'lentelės' WHERE id = '1'

Informacijos atranka

Komanda SELECT naudojama reikšmėms iš duomenų bazės nuskaityti. Rašome šį kodą:

SELECT * FROM 'lentelės' WHERE id = '1'

IN šis pavyzdys pasirinkite visus galimus lentelės laukus. Taip atsitinka, jei komandoje įrašote žvaigždutę „*“. Jei reikia pasirinkti pavyzdinę vertę, rašykite taip:

PASIRINKTI žurnalą , pereiti IŠ lentelės WHERE id = '1'

Pažymėtina, kad gebėjimo dirbti su duomenų bazėmis nepakaks. Norėdami sukurti profesionalų interneto projektą, turėsite išmokti į puslapius įtraukti duomenis iš duomenų bazės. Norėdami tai padaryti, susipažinkite su php žiniatinklio programavimo kalba. Tai jums padės Šaunus Michailo Rusakovo kursas .


Lentelės ištrynimas

Atsiranda pateikus DROP užklausą. Norėdami tai padaryti, parašykite šias eilutes:

DROP TABLE stalas;

Įrašo išvedimas iš lentelės pagal tam tikrą sąlygą

Apsvarstykite šį kodą:

PASIRINKITE ID, šalį, miestą IŠ lentelės KUR žmonių>150000000

Jame bus rodomi šalių, kuriose gyventojų yra daugiau nei šimtas penkiasdešimt milijonų, įrašai.

Asociacija

Susieti kelias lenteles galima naudojant Join. Žiūrėkite, kaip tai veikia šiame vaizdo įraše:

PHP ir MySQL

Dar kartą noriu pabrėžti, kad užklausos kuriant interneto projektą yra įprastas dalykas. Norėdami juos naudoti php dokumentuose, vadovaukitės šiuo veiksmų algoritmu:

  • Prisijunkite prie duomenų bazės naudodami komandą mysql_connect();
  • Naudodami mysql_select_db() pasirinkite norimą duomenų bazę;
  • Užklausos apdorojimas mysql_fetch_array();
  • Uždarome ryšį su mysql_close() komanda.

Svarbu! Dirbti su duomenų baze nėra sunku. Svarbiausia teisingai parašyti prašymą.

Pradedantys žiniatinklio valdytojai pagalvos. O ką skaityti šia tema? Norėčiau rekomenduoti Martino Graberio knygą " SQL paprastiems mirtingiesiems “. Parašyta taip, kad pradedantieji viską suprastų. Naudokite jį kaip žinyną.

Bet tai yra teorija. Kaip tai veikia praktikoje? Tiesą sakant, interneto projektas turi būti ne tik sukurtas, bet ir įtrauktas į „Google“ ir „Yandex“ TOP. Vaizdo įrašų kursai padės jums tai padaryti Svetainės kūrimas ir reklama ».


Vaizdo instrukcija

Vis dar turite klausimų? Žiūrėkite daugiau internetinio vaizdo įrašo.

Išvada

Taigi, SQL užklausų rašymas nėra toks sudėtingas, kaip atrodo, bet bet kuris žiniatinklio valdytojas turi tai padaryti. Aukščiau aprašyti vaizdo kursai padės tai padaryti. Prenumeruok mano VKontakte grupė kad pirmieji sužinotų apie naują įdomią informaciją.

Užklausos rašomos be pabėgimo kabučių, nes MySQL, MS SQL Ir PostGree jie skirtingi.

SQL užklausa: nurodytų (būtinų) laukų gavimas iš lentelės

SELECT id, country_title, count_people FROM table_name

Gauname įrašų sąrašą: VISOS šalys ir jų gyventojai. Privalomų laukų pavadinimai atskiriami kableliais.

SELECT * FROM lentelės_pavadinimas

* žymi visus laukus. Tai yra, bus rodomi VISKAS duomenų laukus.

SQL užklausa: rodo įrašus iš lentelės, išskyrus dublikatus

PASIRINKITE ATSKIRTI šalies_pavadinimą NUO lentelės_pavadinimo

Gauname įrašų sąrašą: šalys, kuriose yra mūsų vartotojai. Vienoje šalyje gali būti daug vartotojų. Šiuo atveju tai yra jūsų prašymas.

SQL užklausa: rodo įrašus iš lentelės pagal tam tikrą sąlygą

SELECT ID, šalies_pavadinimas, miesto_pavadinimas FROM lentelės_pavadinimas WHERE skaičiai_žmonių>100000000

Gauname įrašų sąrašą: šalys, kuriose žmonių skaičius viršija 100 000 000.

SQL užklausa: įrašų rodymas iš lentelės su tvarka

PASIRINKITE ID, miesto_pavadinimas FROM lentelės_pavadinimas ORDER BY miesto_pavadinimas

Gauname įrašų sąrašą: miestus abėcėlės tvarka. A pradžioje, Z pabaigoje.

PASIRINKITE ID, miesto_pavadinimas FROM lentelės_pavadinimas ORDER BY city_title DESC

Gauname įrašų sąrašą: miestai atvirkščiai ( DESC) yra gerai. Pradžioje aš, pabaigoje A.

SQL užklausa: įrašų skaičiaus skaičiavimas

PASIRINKITE SKAIČIUS(*) IŠ lentelės_pavadinimo

Lentelėje gauname įrašų skaičių (skaičius). Šiuo atveju įrašų sąrašo NĖRA.

SQL užklausa: rodomas norimas įrašų diapazonas

SELECT * FROM lentelės_pavadinimas LIMIT 2, 3

Iš lentelės gauname 2 (antrą) ir 3 (trečią) įrašus. Užklausa naudinga kuriant naršymą WEB puslapiuose.

SQL užklausos su sąlygomis

Įrašų rodymas iš lentelės pagal tam tikrą sąlygą naudojant loginius operatorius.

SQL užklausa: IR konstrukcija (IR)

SELECT id, city_title FROM table_name WHERE country="Russia" AND nafta = 1

Gauti įrašų sąrašą: miestai iš Rusijos IR turėti prieigą prie naftos. Kada naudojamas operatorius? IR, tada abi sąlygos turi atitikti.

SQL užklausa: ARBA konstrukcija (OR)

PASIRINKITE ID, miesto_pavadinimas FROM lentelės_pavadinimas WHERE country="Russia" OR country="USA"

Gaukite įrašų sąrašą: visi miestai iš Rusijos ARBA JAV. Kada naudojamas operatorius? ARBA, tada turi atitikti BENT viena sąlyga.

SQL užklausa: AND NOT konstruoti (AND NOT)

SELECT id, user_login FROM lentelės_pavadinimas WHERE country="Russia" AND NOT count_comments<7

Gaukite įrašų sąrašą: visi vartotojai iš Rusijos IR pagamintas NE MAŽIAU 7 komentarai.

SQL užklausa: IN konstrukcija (B)

SELECT id, user_login FROM table_name WHERE country IN („Rusija“, „Bulgarija“, „Kinija“)

Gauname įrašų sąrašą: visi vartotojai, gyvenantys ( IN) (Rusija, Bulgarija arba Kinija)

SQL užklausa: NOT IN konstruktas (NOT IN)

SELECT id, user_login FROM lentelės_pavadinimas WHERE country NOT IN („Rusija“, „Kinija“)

Gauname įrašų sąrašą: visi vartotojai, kurie negyvena ( NE Į) (Rusija arba Kinija).

SQL užklausa: IS NULL konstrukcija (tuščios arba NE tuščios reikšmės)

SELECT id, vartotojo_prisijungimas IŠ lentelės_pavadinimas WHERE būsena NULL

Gauname įrašų sąrašą: visi vartotojai, kurių būsena neapibrėžta. NULL yra atskira tema, todėl ji tikrinama atskirai.

SELECT id, vartotojo_prisijungimas IŠ lentelės_pavadinimas WHERE būsena NĖRA NULL

Gauname įrašų sąrašą: visi vartotojai, kurių būsena yra apibrėžta (NE NULIS).

SQL užklausa: LIKE konstrukcija

SELECT id, vartotojo_prisijungimas IŠ lentelės_pavadinimas WHERE pavardė LIKE "Jonas%"

Gauname įrašų sąrašą: vartotojai, kurių pavardė prasideda kombinacija „Ivanas“. % ženklas reiškia BET KOKĮ simbolių skaičių. Norėdami rasti % ženklą, turite naudoti pabėgimo klavišą „Ivan\%“.

SQL užklausa: BETWEEN konstrukcija

SELECT id, user_login FROM lentelės_pavadinimas WHERE atlyginimas NUO 25000 IKI 50000

Gauname įrašų sąrašą: vartotojai, kurie gauna atlyginimą nuo 25 000 iki 50 000 imtinai.

Yra LABAI daug loginių operatorių, todėl atidžiai išstudijuokite SQL serverio dokumentaciją.

Sudėtingos SQL užklausos

SQL užklausa: sujunkite kelias užklausas

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Gauname įrašų sąrašą: naudotojai, kurie yra užsiregistravę sistemoje, taip pat tie vartotojai, kurie yra registruoti forume atskirai. UNION operatorius gali sujungti kelias užklausas. UNION veikia kaip SELECT DISTINCT, tai yra, atmeta pasikartojančias vertes. Norėdami gauti absoliučiai visus įrašus, turite naudoti operatorių UNION ALL.

SQL užklausa: lauko verčių MAX, MIN, SUM, AVG, COUNT apskaičiavimas

Vieno išvestis, didžiausia skaitiklio vertė lentelėje:

SELECT MAX (skaitiklis) FROM lentelės_pavadinimas

Vieno išvestis, mažiausia skaitiklio vertė lentelėje:

PASIRINKITE MIN(skaitiklį) IŠ lentelės_pavadinimo

Lentelėje rodoma visų skaitiklių reikšmių suma:

PASIRINKITE SUMĄ (skaitiklį) IŠ lentelės_pavadinimo

Lentelėje rodoma vidutinė skaitiklio vertė:

PASIRINKITE AVG(skaitiklį) IŠ lentelės_pavadinimo

Rodomas skaitiklių skaičius lentelėje:

PASIRINKITE SKAIČIUS (skaitiklį) IŠ lentelės_pavadinimo

Išvada apie skaitiklių skaičių parduotuvėje Nr. 1, lentelėje:

SELECT COUNT (skaitiklis) FROM lentelės_pavadinimas WHERE office="Seminaras Nr. 1"

Tai yra populiariausios komandos. Jei įmanoma, skaičiuojant rekomenduojama naudoti tokio tipo SQL užklausas, nes jokia programavimo aplinka negali būti palyginta duomenų apdorojimo greičiu nei pats SQL serveris, apdorojant savo duomenis.

SQL užklausa: įrašų grupavimas

PASIRINKTI žemyną, SUM(šalies_sritis) FROM šalies GROUP BY žemynas

Gauname įrašų sąrašą: su žemyno pavadinimu ir su visų jų šalių plotų suma. Tai yra, jei yra šalių katalogas, kuriame yra įrašytas kiekvienos šalies plotas, tai naudojant GROUP BY konstrukciją, galite sužinoti kiekvieno žemyno dydį (remiantis grupavimu pagal žemynus).

SQL užklausa: kelių lentelių naudojimas per slapyvardį (alias)

SELECT o.order_no, o.suma_paid, c.company FROM orders AS o, klientas AS su WHERE o.custno=c.custno AND c.city="Tyumen"

Gauname įrašų sąrašą: užsakymus iš pirkėjų, kurie gyvena tik Tiumenėje.

Tiesą sakant, turint tinkamai suprojektuotą tokio tipo duomenų bazę, užklausa yra pati dažniausia, todėl MySQL pristatė specialų operatorių, kuris veikia daug kartų greičiau nei aukščiau parašytas kodas.

PASIRINKITE o.užsakymo_ne, o.suma_mokėta, z.įmonė IŠ užsakymų AS o LEFT JOIN kliento AS z ĮJUNGTAS (z.custno=o.custno)

Įdėtos antrinės užklausos

SELECT * FROM lentelės_pavadinimas WHERE alga=(SELECT MAX(alga) FROM darbuotojo)

Gauname vieną įrašą: informaciją apie vartotoją su maksimaliu atlyginimu.

Dėmesio!Įdėtos antrinės užklausos yra viena iš SQL serverių kliūčių. Kartu su savo lankstumu ir galia jie taip pat žymiai padidina serverio apkrovą. Dėl to kiti vartotojai katastrofiškai sulėtėja. Labai dažnai pasitaiko rekursinių skambučių su įdėtomis užklausomis. Todėl primygtinai rekomenduoju NEnaudoti įdėtųjų užklausų, o jas skaidyti į mažesnes. Arba naudokite aukščiau aprašytą LEFT JOIN derinį. Be tokio tipo užklausų, jos yra didesnis saugumo pažeidimų dėmesys. Jei nuspręsite naudoti įdėtas antrines užklausas, turite jas labai kruopščiai suprojektuoti ir atlikti pradines duomenų bazių kopijas (bandomąsias duomenų bazes).

SQL užklausos keičia duomenis

SQL užklausa: INSERT

Instrukcija ĮDĖTI leidžia įterpti įrašus į lentelę. Paprastais žodžiais tariant, sukurkite eilutę su duomenimis lentelėje.

1 variantas. Dažnai naudojama instrukcija:

INSERT INTO lentelės_pavadinimas (id, vartotojo_prisijungimas) VALUES (1, "ivanov"), (2, "petrov")

Lentelėje" lentelės_pavadinimas» vienu metu įterps 2 (du) vartotojus.

2 variantas. Patogiau naudoti stilių:

INSERT lentelės_pavadinimas SET id=1, user_login="ivanov"; INSERT lentelės_pavadinimas SET id=2, vartotojo_prisijungimas="petrovas";

Tai turi savo privalumų ir trūkumų.

Pagrindiniai trūkumai:

  • Daugelis mažų SQL užklausų yra šiek tiek lėtesnės nei viena didelė SQL užklausa, tačiau kitos užklausos bus įtrauktos į aptarnavimo eilę. Tai yra, jei didelė SQL užklausa vykdoma 30 minučių, per visą šį laiką likusios užklausos rūks ir lauks savo eilės.
  • Prašymas yra didesnis nei ankstesnė versija.

Pagrindiniai privalumai:

  • Atliekant mažas SQL užklausas, kitos SQL užklausos nėra blokuojamos.
  • Lengvas skaitymas.
  • Lankstumas. Pasirinkę šią parinktį, negalite sekti struktūros, o pridėti tik reikiamus duomenis.
  • Kurdami archyvus tokiu būdu, galite lengvai nukopijuoti vieną eilutę ir paleisti ją per komandinę eilutę (konsolę), taip neatkurdami viso ARCHYVO.
  • Rašymo stilius panašus į UPDATE teiginį, kurį lengviau atsiminti.

SQL užklausa: UPDATE

UPDATE lentelės_pavadinimas SET user_login="ivanov", vartotojo_pavardė="Ivanovas" WHERE id=1

Lentelėje" lentelės_pavadinimas» įraše su numeriu id=1 laukų user_login ir user_surname reikšmės bus pakeistos į nurodytas reikšmes.

SQL užklausa: DELETE

DELETE FROM lentelės_pavadinimas WHERE id=3

Įrašas, kurio ID numeris 3, bus ištrintas lentelėje lentelės_pavadinimas.

  1. Visus laukų pavadinimus rekomenduojama rašyti mažomis raidėmis ir, jei reikia, atskirti priverstiniu tarpu "_", kad būtų suderinama su skirtingomis programavimo kalbomis, tokiomis kaip Delphi, Perl, Python ir Ruby.
  2. Kad būtų lengviau skaityti, SQL komandos rašomos didžiosiomis raidėmis. Visada atminkite, kad kiti žmonės gali perskaityti kodą po jūsų, bet greičiausiai jūs pats po N laiko.
  3. Pirmiausia pavadinkite laukus daiktavardžiu, o tada veiksmu. Pavyzdžiui: miesto_būsena, vartotojo_prisijungimas, vartotojo_vardas.
  4. Stenkitės vengti rezervinių žodžių skirtingomis kalbomis, kurie gali sukelti problemų SQL, PHP ar Perl, pvz., (vardas, skaičius, nuoroda). Pavyzdžiui: nuoroda gali būti naudojama MS SQL, bet rezervuota MySQL.

Ši medžiaga yra trumpa kasdienio darbo nuoroda ir nepretenduoja į itin didelį autoritetingą šaltinį, kuris yra pagrindinis konkrečios duomenų bazės SQL užklausų šaltinis.

  • Vertimas
  • pamoka
Ar tai turėtų būti " SELECT * WHERE a=b FROM c " arba " SELECT WHERE a=b FROM c ON * " ?

Jei esate panašus į mane, sutiksite: SQL yra vienas iš tų dalykų, kuris iš pirmo žvilgsnio atrodo paprastas (jis atrodo kaip angliškai!), bet kažkaip jūs turite ieškoti „Google“ kiekvienos paprastos užklausos, kad rastumėte tinkamą sintaksę.


Ir tada prasideda prisijungimai, agregavimas, antrinės užklausos ir tai pasirodo visiška šiukšlė. Kaip šitas:


PASIRINKITE narius.vardas || " " || nariai.pavardė AS "Visas vardas" IŠ skolinimų INNER JOIN nariai ON members.memberid=paskoliniai.memberid INNER JOIN books ON books.bookid=browings.bookid WHERE skolinimai.bookid IN (SELECT bookid FROM books WHERE stock>(SELECT avg(stock) ) IŠ knygų)) GROUP BY nariai.vardas, nariai.pavardė;

Bue! Tai išgąsdins bet kurį pradedantįjį ar net vidutinį kūrėją, jei jis pirmą kartą pamatys SQL. Bet ne viskas taip blogai.


Nesunku prisiminti, kas intuityvu, ir šiuo vadovu tikiuosi sumažinti kliūtis pradedantiesiems patekti į SQL, o labiau patyrusiems pasiūlyti naują SQL požiūrį.


Nors SQL sintaksė skirtingose ​​duomenų bazėse yra beveik vienoda, šiame straipsnyje užklausoms naudojama PostgreSQL. Kai kurie pavyzdžiai veiks MySQL ir kitose duomenų bazėse.

1. Trys stebuklingi žodžiai

SQL yra daug raktinių žodžių, tačiau SELECT , FROM ir WHERE yra beveik kiekvienoje užklausoje. Šiek tiek vėliau suprasite, kad šie trys žodžiai atspindi svarbiausius duomenų bazės užklausų kūrimo aspektus, o kitos sudėtingesnės užklausos yra tik priedai.

2. Mūsų bazė

Pažvelkime į duomenų bazę, kurią naudosime kaip pavyzdį šiame straipsnyje:







Turime knygų biblioteką ir žmones. Taip pat yra speciali lentelė išduotų knygų apskaitai.

  • Lentelėje „Knygos“ saugoma informacija apie knygos pavadinimą, autorių, išleidimo datą ir prieinamumą. Viskas paprasta.
  • Lentelėje „nariai“ – visų į biblioteką užsiregistravusių žmonių vardai ir pavardės.
  • Lentelėje „skolinimai“ saugoma informacija apie iš bibliotekos pasiskolintas knygas. Bookid stulpelis nurodo pasiskolintos knygos ID lentelėje „knygos“, o narių stulpelis – atitinkamą asmenį lentelėje „nariai“. Taip pat turime išleidimo datą ir datą, kada knyga turi būti grąžinta.

3. Paprastas prašymas

Pradėkime nuo paprasto prašymo: mums reikia vardai Ir identifikatoriai(id) visos knygos, parašytos autoriaus „Dan Brown“


Prašymas bus toks:


SELECT bookid AS "id", pavadinimas FROM books WHERE author="Dan Brown";

O rezultatas toks:


id titulą
2 Prarastas simbolis
4 Inferno

Gana paprasta. Išskaidykime prašymą, kad suprastume, kas vyksta.

3.1 FROM – iš kur gauname duomenis

Dabar tai gali atrodyti akivaizdu, bet FROM bus labai svarbu vėliau, kai pereisime prie prisijungimų ir antrinių užklausų.


FROM taškų į lentelę ir užklausą. Tai gali būti jau esama lentelė (kaip aukščiau esančiame pavyzdyje) arba lentelė, sukurta greitai naudojant sujungimus arba antrines užklausas.

3.2 KUR – kokius duomenis rodyti

WHERE tiesiog elgiasi kaip filtras linijos kuriuos norime parodyti. Mūsų atveju norime matyti tik eilutes, kuriose autoriaus stulpelio reikšmė yra „Dan Brown“.

3.3 PASIRINKTI – kaip rodyti duomenis

Dabar, kai turime visus reikalingus lentelės stulpelius, turime nuspręsti, kaip tiksliai rodyti šiuos duomenis. Mūsų atveju mums reikia tik pavadinimų ir knygų ID, todėl tai ir darome. pasirinkti su SELECT. Tuo pačiu metu galite pervardyti stulpelį naudodami AS .


Visą užklausą galima vizualizuoti naudojant paprastą diagramą:


4. Jungtys (sujungimai)

Dabar norime pamatyti visų Dano Browno knygų, kurios buvo pasiskolintos iš bibliotekos, pavadinimus (nebūtinai unikalius) ir kada tas knygas reikia grąžinti:


PASIRINKITE books.title KAIP "Pavadinimas", skolinimosi.returndate AS "Grąžinimo data" IŠ skolintų PRISIJUNK knygų PRIE skolinimosi.bookid=books.bookid WHERE books.author="Dan Brown";

Rezultatas:


Pavadinimas grįžimo data
Prarastas simbolis 2016-03-23 00:00:00
Inferno 2016-04-13 00:00:00
Prarastas simbolis 2016-04-19 00:00:00

Daugeliu atvejų prašymas yra panašus į ankstesnį. su išimtimi IŠ skyriaus. Tai reiškia kad mes ieškome duomenų iš kitos lentelės. Mes neprieiname nei prie „knygų“ lentelės, nei „pasiskolinimų“ lentelės. Vietoj to, mes kreipiamės į naujas stalas, kuris buvo sukurtas sujungus šias dvi lenteles.


skolinimai PRISIJUNGTI prie knygų PRIE skolinimosi.bookid=knygos.knygos – tai nauja lentelė, suformuota sujungus visus įrašus iš lentelių „knygos“ ir „pasiskolinimai“, kuriuose sutampa buhalterinės apskaitos reikšmės. Tokio susijungimo rezultatas bus:



Tada pateikiame šios lentelės užklausą taip pat, kaip ir aukščiau pateiktame pavyzdyje. Tai reiškia, kad sujungiant lenteles jums tereikia rūpintis, kaip atlikti šį sujungimą. Ir tada prašymas tampa toks pat aiškus, kaip ir „paprasto prašymo“ atveju iš 3 punkto.


Išbandykime šiek tiek sudėtingesnį dviejų lentelių sujungimą.


Dabar norime gauti vardus ir pavardes žmonių, kurie iš bibliotekos paėmė autoriaus „Dano Brauno“ knygas.


Šį kartą eikime iš apačios į viršų:


1 žingsnis– iš kur gauname duomenis? Norėdami gauti norimą rezultatą, turime sujungti lenteles „nario“ ir „knygos“ su lentele „pasiskolinimai“. Skyrius JOIN atrodys taip:


skolinimai PRISIJUNGTI prie knygų PRIE skolinimosi.bookid=knygos.knygos PRISIJUNGTI prie narių PRIE narių.memberid=skolinimosi.memberid

Ryšio rezultatą galite pamatyti nuorodoje.


2 žingsnis Kokius duomenis rodome? Mus domina tik tie duomenys, kur knygos autorius yra „Danas Braunas“


KUR books.author="Dan Brown"

3 veiksmas Kaip rodome duomenis? Dabar, kai duomenys gauti, tereikia parodyti knygas paėmusių asmenų vardus ir pavardes:


PASIRINKITE narius.vardas AS "Vardas", nariai.pavardė AS "Pavardė"

Super! Belieka tik sujungti tris komponentus ir pateikti mums reikalingą užklausą:


PASIRINKITE narius.vardas AS "Vardas", nariai.pavardė AS "Pavardė" NUO pasiskolinimo PRISIJUNGTI prie knygų PRIE skolinimosi.bookid=knygos.knygos PRISIJUNGTI prie narių PRIE narių.memberid=skolinimosi.memberid WHERE books.author="Dan Brown";

Ką mums duos:


Pirmas vardas pavardė
Maikas Willis
Ellen Hortonas
Ellen Hortonas

Puiku! Bet vardai kartojasi (jie nėra unikalūs). Greitai tai ištaisysime.

5. Sumavimas

Apytiksliai kalbant, agregacijos reikalingos norint paversti kelias eilutes į vieną. Tuo pačiu metu agregavimo metu skirtingiems stulpeliams naudojama skirtinga logika.


Tęskime savo pavyzdį, kur atsiranda pasikartojantys vardai. Matyti, kad Ellen Horton paėmė ne vieną knygą, bet tai ne pati daugiausia Geriausias būdas parodyti šią informaciją. Galite pateikti kitą prašymą:


PASIRINKITE narius.vardas AS "Vardas", nariai.pavardė AS "Pavardė", skaičius(*) AS "Paskolintų knygų skaičius" IŠ skolintų PRISIJUNGTI prie knygų PRIE skolinimų.bookid=knygos.knygos PRISIJUNGTI narius ON nariai.memberid=paskolintos .memberid WHERE books.author="Dan Brown" GROUP BY nariai.vardas, nariai.pavardė;

Kas duos mums norimą rezultatą:


Pirmas vardas pavardė Skolintų knygų skaičius
Maikas Willis 1
Ellen Hortonas 2

Beveik visose agregacijose yra GROUP BY sąlyga. Šis dalykas paverčia lentelę, kurią galima gauti pagal užklausą, lentelių grupėmis. Kiekviena grupė atitinka unikalią stulpelio reikšmę (arba reikšmių grupę), kurią nurodėme GROUP BY. Mūsų pavyzdyje mes konvertuojame ankstesnio pratimo rezultatą į eilučių grupę. Taip pat atliekame agregaciją su count , kuri kelias eilutes paverčia sveikuoju skaičiumi (mūsų atveju – eilučių skaičiumi). Tada ši vertė priskiriama kiekvienai grupei.


Kiekviena rezultato eilutė yra kiekvienos grupės apibendrinimo rezultatas.



Galite prieiti prie logiškos išvados, kad visi rezultato laukai turi būti nurodyti GROUP BY arba juose turi būti atliktas agregavimas. Kadangi visi kiti laukai gali skirtis vieni nuo kitų skirtingose ​​eilutėse, o juos pasirinkus mygtuku SELECT “th, neaišku, kurią iš galimų reikšmių reikėtų pasirinkti.


Aukščiau pateiktame pavyzdyje skaičiavimo funkcija apdorojo visas eilutes (nes skaičiavome eilučių skaičių). Kitos funkcijos, pvz., suma arba max, apdoroja tik nurodytas eilutes. Pavyzdžiui, jei norime sužinoti kiekvieno autoriaus parašytų knygų skaičių, mums reikia šios užklausos:


PASIRINKTI autorių, suma(stock) IŠ knygų GROUP BY autorių;

Rezultatas:


autorius suma
Robinas Šarma 4
Danas Brownas 6
Džonas Grynas 3
Amišas Tripathi 2

Čia sumos funkcija apdoroja tik atsargų stulpelį ir apskaičiuoja visų kiekvienos grupės verčių sumą.

6. Papildomos užklausos


Papildomos užklausos yra įprastos SQL užklausos, įterptos į didesnes užklausas. Jie skirstomi į tris tipus pagal grąžinamo rezultato tipą.

6.1 Dvimatė lentelė

Yra užklausų, kurios pateikia kelis stulpelius. Geras pavyzdys yra užklausa iš ankstesnio agregavimo pratimo. Būdama antrinė užklausa, ji tiesiog pateiks kitą lentelę, kurioje bus galima pateikti naujas užklausas. Tęsdami ankstesnį pratimą, jei norime sužinoti autoriaus „Robin Sharma“ parašytų knygų skaičių, vienas iš galimų būdų yra naudoti antrines užklausas:


SELECT * FROM (SELECT autorius, suma(stock) FROM books GROUP BY author) AS rezultatai WHERE author="Robin Sharma";

Rezultatas:



Galima parašyti kaip: ["Robin Sharma", "Dan Brown"]


2. Dabar naudokite šį rezultatą naujoje užklausoje:


SELECT pavadinimas, bookid FROM books WHERE author IN (SELECT author FROM (SELECT autorius, suma(stock) FROM books GROUP BY author)) AS rezultatai WHERE suma > 3);

Rezultatas:


titulą bookid
Prarastas simbolis 2
Kas verks, kai mirsi? 3
Inferno 4

Tai tas pats kaip:


PASIRINKITE pavadinimą, knygą IŠ knygų, KURIOJI autorius ("Robin Sharma", "Dan Brown");

6.3 Individualios vertės

Yra užklausų, kurių rezultatas yra tik viena eilutė ir vienas stulpelis. Jie gali būti traktuojami kaip pastovios vertės ir gali būti naudojami visur, kur naudojamos reikšmės, pavyzdžiui, palyginimo operatoriuose. Jie taip pat gali būti naudojami kaip dvimatės lentelės arba vieno elemento matricos.


Pavyzdžiui, gaukime informaciją apie visas knygas, kurių skaičius bibliotekoje viršija šiuo metu vidutinę vertę.


Vidurkį galima gauti tokiu būdu:


pasirinkti avg(stock) iš knygų;

Ką mums suteikia:


7. Rašyti operacijas

Dauguma duomenų bazės rašymo operacijų yra gana paprastos, palyginti su sudėtingesnėmis skaitymo operacijomis.

7.1 Atnaujinimas

UPDATE užklausos sintaksė semantiškai yra tokia pati kaip skaitymo užklausos. Vienintelis skirtumas yra tas, kad užuot pasirinkę stulpelius su SELECT "th, mes nustatome žinias su SET "th.


Jei visos Dano Browno knygos bus prarastos, turite iš naujo nustatyti kiekio vertę. Užklausa dėl to būtų tokia:


ATNAUJINTI knygas SET stock=0 WHERE author="Dan Brown";

WHERE atlieka tą patį, ką ir anksčiau: pasirenka eilutes. Vietoj SELECT , kuris buvo naudojamas skaitant, dabar naudojame SET . Tačiau dabar pasirinktose eilutėse reikia nurodyti ne tik stulpelio pavadinimą, bet ir naują šio stulpelio reikšmę.


7.2 Ištrinti

Užklausa DELETE yra tik SELECT arba UPDATE užklausa be stulpelių pavadinimų. Rimtai. Kaip ir SELECT ir UPDATE , WHERE sąlyga išlieka ta pati: ji parenka eilutes, kurias reikia ištrinti. Ištrynimo operacija sunaikina visą eilutę, todėl nėra prasmės nurodyti atskirų stulpelių. Taigi, jei nuspręsime ne iš naujo nustatyti Dano Browno knygų skaičiaus, o apskritai ištrinti visus įrašus, galime pateikti tokį prašymą:


IŠTRINTI IŠ knygų WHERE autorius="Danas Brownas";

7.3 Įdėkite

Galbūt vienintelis dalykas, kuris skiriasi nuo kitų tipų užklausų, yra INSERT . Formatas yra:


INSERT INTO x(a,b,c) VALUES(x, y, z);

Kur a , b , c yra stulpelių pavadinimai, o x , y ir z yra reikšmės, kurios turi būti įterptos į tuos stulpelius tokia tvarka. Iš esmės viskas.


Pažvelkime į konkretų pavyzdį. Čia yra INSERT užklausa, kuri užpildo visą „knygų“ lentelę:


INSERT Į knygas (knygos pavadinimas, pavadinimas, autorius, išleista, atsargos) VERTYBĖS (1 "Scion of Ikshvaku", "Amish Tripathi", "06-22-2015",2), (2 "The Lost Symbol"," Danas Brownas","2010-07-22",3), (3 "Kas verks, kai mirsi?","Robin Sharma","2006-06-15",4), (4 "Pragaras" "Danas Braunas", "2014-05-05",3), (5 "Mūsų žvaigždžių kaltė", "Džonas Greenas", "2015-03-01",3);

8. Patikrinimas

Atėjome į pabaigą, siūlau atlikti nedidelį testą. Pažvelkite į tą prašymą pačioje straipsnio pradžioje. Ar galite tai išsiaiškinti? Pabandykite suskirstyti jį į skyrius SELECT , FROM , WHERE , GROUP BY ir pažiūrėkite į atskirus antrinės užklausos komponentus.


Čia jis yra lengviau skaitomas:


PASIRINKITE narius.vardas || " " || nariai.pavardė AS "Visas vardas" IŠ skolinimų INNER JOIN nariai ON members.memberid=paskolos.memberid INNER JOIN books ON books.bookid=skolinimai.bookid WHERE borrowings.bookid IN (SELECT bookid FROM books WHERE stock> (SELECT avg(stock) ) IŠ knygų)) GROUP BY nariai.vardas, nariai.pavardė;

Ši užklausa pateikia sąrašą žmonių, kurie pasiskolino knygą iš bibliotekos, kurios bendra suma viršija vidurkį.


Rezultatas:


Pilnas vardas
Linda Tailer

Tikiuosi, kad jums pavyko tai išsiaiškinti be jokių problemų. Bet jei ne, tada džiaugsiuosi jūsų komentarais ir atsiliepimais, kad galėčiau patobulinti šį įrašą.

Žymos: pridėti žymų

mob_info