13 svarbiausių SQL komandų, kurias turėtų žinoti bet kuris programuotojas

13 svarbiausių SQL komandų, kurias turėtų žinoti bet kuris programuotojas

Šiuolaikinį internetą valdo duomenų bazės. Kiekviena didelė ar dinamiška svetainė tam tikru būdu naudoja duomenų bazę ir kartu su ja Struktūrinės užklausos kalba (SQL) , manipuliavimo duomenimis galimybės yra begalinės. Jei jau žinote SQL, būtinai patikrinkite šiuos programavimo įgūdžius, kuriuos turėtų žinoti visi svetainių kūrėjai.





Šiandien aš jums parodysiu keletą pagrindinės SQL komandos turite žinoti kaip programuotojas.





Yra daug duomenų, gautų iš duomenų bazės lentelės, pavadinimų. Duomenys paprastai vadinami Eilutės , Įrašai , arba Tuples . Visame straipsnyje naudosiu šias sąvokas pakaitomis.





Pratarmė

Visi šiandieniniai pavyzdžiai bus pagrįsti keturiomis išgalvotomis lentelėmis. The klientas lentelėje yra klientų vardai ir amžius:

The aukštumų lentelėje yra bet kurio asmens vardas ir aukštis:



The darbuotojai lentelėje yra darbuotojų vardai ir pavardės bei amžius - lygiai toks pat kaip klientų lentelėje:

Paskutinis stalas paskambino žmonių nurodomas žmonių vardas ir amžius, kaip ir klientų ir darbuotojų lentelės:





1. Pasirinkite

The pasirinkti sakinys yra paprasčiausias, ir labai svarbu jį suprasti, nes jis yra beveik visų kitų komandų pagrindas. Laikoma geriausia praktika, kai rezervuotus SQL žodžius rašote didžiosiomis raidėmis, nes tai palengvina komandos skaitymą ir supratimą.

Kaip matyti iš pavadinimo, pasirinkite yra naudojamas pasirinkti duomenis iš duomenų bazės. Štai paprasčiausias naudojimas:





SELECT * FROM table;

Tam yra dvi dalys. Pirma dalis ( PASIRINKITE * ) nurodo, kuriuos stulpelius norite pasirinkti. Žvaigždutė rodo, kad norite pasirinkti visus lentelės stulpelius. Antra dalis ( IŠ stalo ) nurodo jūsų duomenų bazės varikliui, iš kur norite gauti šiuos duomenis. Pakeiskite „table“ savo duomenų bazės lentelės pavadinimu.

Šis pasirinkimas yra žinomas kaip „pasirinkite žvaigždę“. Žvaigždutės naudojimas yra geras būdas išsiaiškinti, kokie duomenys yra lentelėje, tačiau nerekomenduoju jų naudoti jokiam gamybos kodui. Naudojant pasirinktą žvaigždutę, duomenų bazės variklis turi pateikti jums norimus duomenis. Jūs negalite kontroliuoti duomenų grąžinimo tvarkos, taigi, jei kas nors pridės naują stulpelį prie lentelės, galite pastebėti, kad jūsų kintamieji jūsų programavimo kalba nebeatitinka teisingų duomenų. Laimei, yra sprendimas.

Galite aiškiai nurodyti, kuriuos stulpelius norite gauti, pavyzdžiui:

SELECT age, name FROM people;

Ši užklausa nuskaito stulpelius „amžius“ ir „vardas“ iš lentelės „žmonės“. Jei turite daug duomenų, tai gali būti šiek tiek nuobodu, tačiau tai padarius sumažės problemų ateityje, o būsimiems programuotojams bus lengviau suprasti jūsų SQL.

Jei norite pasirinkti papildomą duomenų dalį, bet ji nėra saugoma nė vienoje lentelėje, galite tai padaryti taip:

SELECT age, '1234' FROM people;

Bet kokia eilutė viengubose kabutėse bus grąžinta, o ne atitinkanti stulpelio pavadinimą.

2. Kur

Pasirinkimo komanda puikiai tinka duomenims nuskaityti, bet ką daryti, jei norite šiek tiek daugiau filtruoti rezultatus? O kaip atgauti tik žmones, kurių akys mėlynos? O kaip žmonės, gimę sausio mėnesį ir dirbantys mechanikais? Štai kur kur ateina komanda. Tai leidžia taikyti sąlygas pasirinkimui, o jūs tiesiog pridedate ją prie pareiškimo pabaigos:

SELECT age, name FROM people WHERE age > 10;

Ši užklausa taikoma tik vyresniems nei 10 metų žmonėms. Galite sujungti kelias sąlygas naudodami IR operatorius:

SELECT age, name FROM people WHERE age > 10 AND age <20;

The IR komanda veikia lygiai taip pat, kaip ir anglų kalba: teiginiui taiko kitą sąlygą. Šiame pavyzdyje grąžinami duomenys būtų bet kokie įrašai, kurių amžius yra nuo 10 iki 20. Kadangi nėra atitinkančių rezultatų, duomenys negrąžinami.

„Windows 10 bsod“ sistemos siūlų išimtis nėra tvarkoma

Kita komanda, kurią galima naudoti kartu su šia, yra ARBA . Štai pavyzdys:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Ši užklausa pateikia įrašus, kuriuose amžius yra didesnis nei 10 metų arba vardas lygus „Joe“. Atkreipkite dėmesį, kaip yra tik vienas lygybės ženklas? Daugelyje programavimo kalbų lygiavertiškumui patikrinti naudojami dvigubi lygiai (==). Tai nereikalinga daugumai duomenų bazių variklių (tačiau tai gali labai skirtis aplinkoje, todėl pirmiausia patikrinkite dar kartą).

3. Užsakymas

The įsakymas komanda naudojama grąžintiems rezultatams rūšiuoti. Tai dar vienas paprastas naudoti. Tiesiog pridėkite jį prie savo pareiškimo pabaigos:

SELECT name, age FROM people ORDER BY age DESC;

Turite nurodyti stulpelį ir tvarką, kuri gali būti ASC kylant arba DESC nusileidimui. Galite užsisakyti pagal kelis stulpelius:

SELECT name, age FROM people ORDER BY name ASC, age DESC

RŪŠIUOTI PAGAL yra bene naudingiausias kartu su kitomis komandomis. Ne visos užklausos grąžins duomenis logiškai ar tvarkingai - ši komanda leidžia tai pakeisti.

4. Prisijunk

The prisijungti komanda yra įpratusi prisijungti susiję duomenys, saugomi vienoje ar keliose lentelėse. Tu prisijungti antrą lentelę prie pirmosios lentelės ir nurodykite, kaip duomenys yra prijungti. Štai pagrindinis pavyzdys:

kiek kainuoja vikipedijos paleidimas
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Čia vyksta keli dalykai. Turite pradėti nuo „LEFT JOIN“ sintaksės, kuri nurodo, kad norite prisijungti prie lentelės naudodami kairįjį sujungimą. Tada nurodykite lentelę, prie kurios norite prisijungti (aukštis). The NAUDOJAMAS (vardas) sintaksėje teigiama, kad stulpelį „pavadinimas“ galima rasti abiejose lentelėse ir kad jis turėtų būti naudojamas kaip raktas, norint sujungti lenteles.

Nesijaudinkite, jei stulpeliai kiekvienoje lentelėje turi skirtingus pavadinimus. Vietoj „USING“ galite naudoti „ON“:

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

Pareiškime „on“ aiškiai nurodyta, kuriuos stulpelius reikia įjungti. Yra daug prisijungimo tipų, todėl kiekvienos detalės nagrinėjimas užtruktų ilgai, todėl pateikiame trumpą jų naudojimo santrauką:

  • (VIDAUS) JOIN - Grąžina eilutes su atitiktimi abiejose lentelėse.
  • KAIRĖS (IŠORINĖ) JUNGTIS - Grąžina visas eilutes iš kairės lentelės ir visas atitiktis iš dešinės lentelės. Jei nėra atitikčių, kairiojo stalo įrašai vis tiek grąžinami.
  • Prisijunkite prie dešinės (išorės) - Tai priešinga jungčiai kairėje: grąžinamos visos dešinės lentelės eilutės ir visos atitiktys kairėje lentelėje.
  • VISAS (IŠORINIS) PRISIJUNGTI - Grąžina visus įrašus su atitiktimi bet kurioje lentelėje.

„INNER“ arba „OUTER“ sintaksė yra neprivaloma. Tai gali palengvinti dalykų supratimą, tačiau jums nereikia to nurodyti dažniausiai.

5. Slapyvardžiai

Dabar jūs žinote pagrindus, pažvelkime į slapyvardis komandą. Tai naudojama laikinai pervardyti lentelę - daugiau slapyvardžio nei bet kas kitas, nes šis naujas pavadinimas egzistuoja tik jūsų vykdomoje operacijoje. Štai kaip jūs jį naudojate:

SELECT A.age FROM people A;

Galite naudoti bet kokį jums patinkantį galiojantį vardą, bet man patinka naudoti abėcėlės raides. Prieš kiekvieną stulpelio pavadinimą priešvardis yra priešdėlis. Šis slapyvardis priskiriamas prie lentelės iškart po jo paskelbimo. Tai lygiai tas pats, kaip tai padaryti:

SELECT people.age FROM people;

Užuot įvedę ilgą lentelės pavadinimą, galite įvesti paprastą ir lengvai įsimenamą raidę - bet kokia prasmė? Na, jei renkatės iš daugiau nei vienos lentelės, nesunku susipainioti, kurie stulpeliai priklauso kuriai lentelei. Jei abiejose lentelėse yra to paties pavadinimo stulpelių, duomenų bazės užklausos gali net nepavykti paleisti, aiškiai nenurodant lentelės pavadinimo ar slapyvardžio. Štai pavyzdys su dviem lentelėmis:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Ir štai ta pati užklausa su slapyvardžiais:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Darbuotojų lentelėje pateikiamas „A“ slapyvardis, o klientų lentelėje - „B“ slapyvardis. Slapyvardžių lentelės tikrai padeda lengviau suprasti jūsų kodą ir sumažina teksto įvedimo kiekį.

Taip pat galite pervardyti stulpelį su slapyvardžiu naudodami komandą „AS“:

SELECT age AS person_age FROM people;

Kai ši užklausa bus vykdoma, stulpelis dabar vadinsis „asmens_metas“, o ne „amžius“.

6. Sąjunga

Sąjunga yra puikus įsakymas. Tai leidžia pridėti eilutes viena prie kitos. Skirtingai nuo sujungimų, pridedančių atitinkamus stulpelius, sąjunga gali pridėti nesusijusių eilučių, jei jos turi tą patį stulpelių skaičių ir pavadinimą. Štai kaip jūs jį naudojate:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Galite galvoti apie sąjungą kaip būdą, kaip sujungti dviejų užklausų rezultatus. Sąjunga duos rezultatus tik tada, kai tarp dviejų užklausų yra unikali eilutė. Galite naudoti „UNION ALL“ sintaksę, kad grąžintumėte visus duomenis, nepriklausomai nuo dublikatų:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Atkreipkite dėmesį, kaip keičiasi eilučių tvarka? „Union“ veikia efektyviausiai, todėl grąžinami duomenys gali skirtis.

Galimas sąjungos naudojimo atvejis yra tarpinė suma: galite sujungti bendros sumos užklausą su atskirų sumų užklausa pagal konkretų scenarijų.

7. Įdėkite

Dabar žinote viską apie duomenų gavimą iš duomenų bazės, bet kaip juos įterpti? Štai kur Įdėti ateina komanda. Štai pavyzdys:

INSERT INTO people(name, age) VALUES('Joe', 102);

Turite nurodyti lentelės pavadinimą (žmonės) ir stulpelius, kuriuos norite naudoti (vardas ir amžius). Tada „VALUES“ sintaksė naudojama norint įterpti reikšmes. Jie turi būti tokia pat tvarka, kaip ir anksčiau nurodyti stulpeliai.

Negalite nurodyti intarpų kur esančios sąlygos ir turite įsitikinti, kad laikotės visų būtinų lentelės apribojimų.

8. Atnaujinimas

Įterpus kai kuriuos duomenis, natūralu, kad reikia keisti konkrečias eilutes. Štai atnaujinti komandos sintaksė:

UPDATE people SET name = 'Joe', age = 101;

Turite nurodyti lentelę, kurią norite keisti, ir tada naudoti „SET“ sintaksę, kad nurodytumėte stulpelius ir naujas jų reikšmes. Šis pavyzdys yra geras, tačiau jis atnaujins kiekvieną įrašą - tai ne visada pageidautina!

Norėdami būti konkretesni, „WHERE“ sąlygas galite naudoti kaip ir pasirinkdami:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Jūs netgi galite nurodyti kelias sąlygas naudodami „AND“ ir „OR“:

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Atkreipkite dėmesį, kaip skliausteliuose yra naudojamos sąlygos.

kaip pagreitinti „steam“ atsisiuntimą

9. Pasakykite

Oi keistai skamba žodis, tačiau tai neįtikėtinai naudinga komanda. Tarkime, kad jūsų lentelėje yra apribojimų ir nurodėte, kad kada nors norite tik įrašų su unikaliais pavadinimais - pavyzdžiui, nenorite saugoti dviejų eilučių tuo pačiu pavadinimu. Jei bandytumėte įterpti kelias „Joe“ reikšmes, jūsų duomenų bazės variklis sukeltų klaidą ir atsisakytų tai padaryti (visiškai teisingai). UPSERT leidžia atnaujinti įrašą, jei jis jau yra. Tai neįtikėtinai naudinga! Be šios komandos turėsite parašyti daug logikos, kad pirmiausia patikrintumėte, ar įrašas egzistuoja, įterpkite, jei ne, kitaip nuskaitykite teisingą pirminį raktą ir tada atnaujinkite.

Deja, papildymai skirtinguose duomenų bazių varikliuose įgyvendinami skirtingai. „PostgreSQL“ šį gebėjimą įgijo tik neseniai, o „MySQL“ tai turėjo jau kurį laiką. Štai nuoroda į „MySQL“ sintaksę:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Atkreipkite dėmesį, kaip tai iš esmės yra atnaujinimas ir įterpimo teiginys, kurį galima apibendrinti kaip „atnaujinti, jei nepavyko įterpti“.

10. Ištrinti

Ištrinti naudojamas visiškai pašalinti įrašus - piktnaudžiavimas gali būti gana žalingas! Pagrindinę sintaksę naudoti labai paprasta:

DELETE FROM people;

Kaip ir dauguma kitų komandų, tai bus ištrinta viskas ! Turite naudoti „a“, kad apribotumėte jį šiek tiek sveikesniu eilučių skaičiumi - idealiu atveju vieną:

DELETE FROM people WHERE name = 'Joe';

Jei kuriate sistemą, dažnai protinga įdiegti „minkštą ištrynimą“. Jūs iš tikrųjų niekada nevykdote ištrynimo komandos, o sukuriate ištrintą stulpelį ir tada patikrinkite tą stulpelį savo pasirinkimuose - tai gali išvengti daugybės galimų nepatogumų, jei galite greitai ir lengvai atkurti tariamai ištrintus įrašus. Tačiau tai nepakeičia tinkamų atsarginių kopijų.

11. Sukurkite lentelę

The sukurti lentelę komanda naudojama lentelėms kurti. Tai dar vienas labai paprastas:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Atkreipkite dėmesį, kaip stulpelių pavadinimai ir apribojimai yra skliausteliuose, o stulpeliams suteikiamas tinkamas duomenų tipas. Nurodomas pirminis raktas, kaip to reikalauja bet koks geras duomenų bazės dizainas.

12. Keisti lentelę

The pakeisti lentelę komanda naudojama keisti lentelės struktūrą. Tai šiek tiek ribota, nes jūsų duomenų bazė neleis jums keisti lentelės, jei esami duomenys sukeltų konfliktą, pavyzdžiui, pakeitus eilutę į sveiką skaičių. Tokiais atvejais pirmiausia pataisykite duomenis, tada pakeiskite lentelę. Štai pavyzdys:

ALTER TABLE people ADD height integer;

Šis pavyzdys žmonių lentelėje prideda stulpelį, pavadintą „aukštis“. Tikrai nėra ribų, ką galite pakeisti.

13. Kritimo stalas

Galutinė komanda yra numestas stalas . Pagalvokite apie tai kaip apie ištrynimą, bet užuot ištrynęs vieną įrašą, jis pašalina kiekvieną įrašą kartu su lentele! Štai kaip jūs jį naudojate:

DROP TABLE people;

Tai gana drastiška komanda ir nėra jokios priežasties, kodėl ją reikia užprogramuoti jūsų sistemoje. Daugeliu atvejų jis turėtų būti atliekamas tik rankiniu būdu, ir tai gali būti labai destruktyvus.

Tai viskas siandienai. Tikiuosi, kad išmokote naudingų gudrybių! Galite išmokti, kaip sukurti svetainę , tada panaudokite savo naujai įgytus įgūdžius, kad jis taptų dinamiškas - tiesiog įsitikinkite, kad nepadarėte šių klaidų ir nepalikite jos pažeidžiamos SQL įterpimo. Jei nesate tikri, kad turite išmokti SQL, ar pagalvojote apie statinį svetainės generatorių?

Kodėl nepalikus komentaro žemiau su mėgstamais SQL patarimais ir gudrybėmis?

Vaizdo kreditai: HYS_NP/„Shutterstock“

Dalintis Dalintis „Tweet“ Paštu Ar verta atnaujinti į „Windows 11“?

„Windows“ buvo pertvarkytas. Bet ar to pakanka norint įtikinti jus pereiti nuo „Windows 10“ prie „Windows 11“?

Skaityti toliau
Susijusios temos
  • Programavimas
  • Programavimas
  • SQL
Apie autorių Joe Coburn(Paskelbti 136 straipsniai)

Joe yra baigęs informatikos studijas Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai jis neskraido dronais ir nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.

Daugiau iš Joe Coburn

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia