13 najpomembnejših ukazov SQL, ki bi jih moral poznati vsak programer

13 najpomembnejših ukazov SQL, ki bi jih moral poznati vsak programer

Podatkovne baze poganjajo sodoben splet. Vsako veliko ali dinamično spletno mesto na nek način uporablja zbirko podatkov in v kombinaciji z njo Jezik strukturiranih poizvedb (SQL) , možnosti za manipulacijo s podatki so res neskončne. Če že poznate SQL, preverite te programske veščine, ki bi jih morali poznati vsi razvijalci spletnih mest.





Danes vam bom pokazal nekaj jedro ukazov SQL morate vedeti kot programer.





Obstaja veliko imen za podatke, vrnjene iz tabele zbirke podatkov. Podatki se običajno imenujejo Vrstice , Zapisi , oz Ploščice . V tem članku bom te izraze uporabljal zamenljivo.





Predgovor

Vsi današnji primeri bodo temeljili na štirih izmišljenih tabelah. The stranko tabela vsebuje ime in starost strank:

The višine tabela vsebuje ime in višino katere koli osebe:



The osebje tabela vsebuje ime in starost zaposlenih - popolnoma enaka tabeli strank:

Končna miza se imenuje ljudi vsebuje ime in starost ljudi, tako kot tabele strank in osebja:





1. Izberite

The izberite stavek je najpreprostejši in nujno ga morate razumeti, saj podpira skoraj vse druge ukaze. Velja za najboljšo prakso, da svoje rezervirane besede SQL zapišete z velikimi tiskanimi črkami, saj olajša branje in razumevanje ukaza.

Kot že ime pove, je select navajen izberite podatke iz baze podatkov. Tu je najpreprostejša uporaba:





SELECT * FROM table;

Pri tem obstajata dva dela. Prvi del ( IZBERI * ) določa, katere stolpce želite izbrati. Zvezdica označuje, da želite izbrati vse stolpce v tabeli. Drugi del ( IZ mize ) pove mehanizmu baze podatkov, od kod želite pridobiti te podatke. Zamenjajte 'table' z imenom vaše tabele baze podatkov.

Ta izbira je znana kot 'select star'. Uporaba zvezdice je dober način, da ugotovite, kateri podatki so v tabeli, vendar vam ne priporočam, da jih uporabite za kakršno koli proizvodno kodo. Ko uporabljate izbrano zvezdico, je na mehanizmu zbirke podatkov, da vam predstavi želene podatke. Nimate nobenega nadzora nad vrstnim redom vrnitve podatkov, zato če kdo doda nov stolpec v tabelo, boste morda ugotovili, da spremenljivke v vašem programskem jeziku ne predstavljajo več pravilnih podatkov. Na srečo obstaja rešitev.

Izrecno lahko navedete, katere stolpce želite pridobiti, na primer:

SELECT age, name FROM people;

Ta poizvedba prikliče stolpca »starost« in »ime« iz tabele »ljudje«. Če imate veliko podatkov, je lahko to izrecno rahlo dolgočasno, vendar bo to v prihodnosti zmanjšalo težave, poleg tega pa bodo vaši bodoči programerji lažje razumeli vaš SQL.

Če želite izbrati dodaten podatek, vendar ni shranjen v nobeni tabeli, lahko to storite tako:

SELECT age, '1234' FROM people;

Vsak niz v enojnih narekovajih bo vrnjen, namesto da se ujema z imenom stolpca.

2. Kje

Ukaz select je odličen za pridobivanje podatkov, kaj pa, če želite rezultate malo bolj filtrirati? Kaj pa pridobiti samo ljudi, ki imajo modre oči? Kaj pa ljudje, rojeni januarja, ki delajo kot mehaniki? Tukaj je kje Prihaja ukaz. To vam omogoča, da za izbiro uporabite pogoje in jih preprosto dodate na konec stavka:

SELECT age, name FROM people WHERE age > 10;

Ta poizvedba je zdaj omejena na ljudi, starejše od 10 let. S kombinacijo lahko kombinirate več pogojev IN operater:

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

The IN ukaz deluje tako kot v angleškem jeziku: za stavek uporabi drug pogoj. V tem primeru bi bili vrnjeni podatki vsi zapisi, stari od 10 do 20 let. Ker ni ujemajočih se rezultatov, se ne vrnejo nobeni podatki.

kako izboljšati delovanje iger na prenosnem računalniku

Drug ukaz, ki ga lahko uporabite skupaj s tem, je ALI . Tukaj je primer:

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

Ta poizvedba vrne zapise, pri katerih je starost večja od 10 let ali pa je ime enako 'Joe'. Opazite, kako obstaja samo en znak enakosti? Večina programskih jezikov uporablja dvojne enačbe (==) za preverjanje enakovrednosti. To ni potrebno za veliko večino motorjev baz podatkov (lahko pa zelo glede na okolje, zato najprej dvakrat preverite).

3. Naročilo

The naročilo ukaz se uporablja za razvrščanje vrnjenih rezultatov. Je še enostaven za uporabo. Preprosto ga dodajte na konec izjave:

SELECT name, age FROM people ORDER BY age DESC;

Določiti morate stolpec in vrstni red, ki je lahko ASC za vzpenjanje oz DESC za spuščanje. Lahko naročite po več stolpcih, kot je ta:

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

NAROČI PO je morda najbolj uporaben v kombinaciji z drugimi ukazi. Vse poizvedbe ne bodo vrnile podatkov logično ali urejeno - ta ukaz vam omogoča, da to spremenite.

4. Pridružite se

The pridružite se ukaz je vajen pridružite se povezane podatke, shranjene v eni ali več tabelah. Ti pridružite se drugo tabelo v prvo tabelo in določite, kako so podatki povezani. Tu je osnovni primer:

kaj je zareza na mobilnem telefonu
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Tukaj se dogaja nekaj stvari. Začeti morate s sintakso 'LEFT JOIN', ki določa, da se želite pridružiti tabeli s pridružitvijo vrste left. Nato določite tabelo, ki se ji želite pridružiti (višine). The UPORABA (ime) sintaksa navaja, da je stolpec 'ime' v obeh tabelah in da ga je treba uporabiti kot ključ za združevanje tabel.

Ne skrbite, če imajo vaši stolpci različna imena v vsaki tabeli. Namesto 'UPORABE' lahko uporabite 'ON':

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

V stavku on je izrecno navedeno, na katere stolpce je treba vnesti ključ. Obstaja veliko vrst združevanja, zato bi trajalo veliko časa, da se podrobno opišemo vsakega posebej, zato je tukaj kratek povzetek njihove uporabe:

  • (NOTRANJA) PRIDRUŽI SE - Vrne vrstice z ujemanjem v obeh tabelah.
  • LEVI (ZUNANJI) PRIDRUŽI SE - Vrne vse vrstice iz leve tabele z vsemi ujemanji iz desne tabele. Če ni ujemanj, se levi zapisi tabele še vedno vrnejo.
  • PRAVI (ZUNANJI) PRIDRUŽI SE - To je nasprotje levega spoja: vrnejo se vse vrstice iz desne tabele skupaj z vsemi ujemanji v levi tabeli.
  • POLNO (ZUNANJO) PRIDRUŽITE SE - Vrne vse zapise z ujemanjem v kateri koli tabeli.

Sintaksa 'INNER' ali 'OUTER' ni obvezna. Lahko olajša razumevanje stvari, vendar vam ga v veliki večini časa ni treba navajati.

5. Vzdevki

Zdaj veste osnove, poglejmo vzdevek ukaz. To se uporablja za začasno preimenovanje tabele - bolj vzdevek kot karkoli drugega, saj to novo ime obstaja samo znotraj posamezne transakcije, ki jo izvajate. Tako ga uporabljate:

SELECT A.age FROM people A;

Uporabite lahko poljubno veljavno ime, jaz pa uporabljam črke abecede. Pred imenom vsakega stolpca je vzdevek predpona. Ta vzdevek je tabeli dodeljen takoj po razglasitvi. To je popolnoma enako kot to:

SELECT people.age FROM people;

Namesto da bi morali vnesti dolgo ime tabele, lahko vnesete preprosto in lahko zapomljivo črko - toda kaj je smisel? No, če izbirate med več kot eno tabelo, se lahko preprosto zmotite, kateri stolpci pripadajo kateri tabeli. Če imata obe tabeli stolpce z istim imenom, se lahko poizvedba po zbirki podatkov celo ne zažene, ne da bi izrecno navedli ime ali vzdevek tabele. Tu je primer dveh tabel:

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

In tukaj je ista poizvedba z vzdevki:

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

Tabela zaposlenih ima vzdevek 'A', tabela strank pa vzdevek 'B'. Poenotenje tabel resnično pomaga olajšati razumevanje vaše kode in zmanjša količino tipkanja, ki ga morate narediti.

Stolpec z vzdevkom lahko preimenujete tudi z ukazom 'AS':

SELECT age AS person_age FROM people;

Ko se izvede ta poizvedba, se bo stolpec zdaj imenoval 'person_age' namesto 'age'.

6. Unija

Unija je odličen ukaz. Omogoča dodajanje vrstic med seboj. Za razliko od spojev, ki dodajajo ujemajoče se stolpce, lahko zveza doda nepovezane vrstice, če imajo enako število in ime stolpcev. Tako ga uporabljate:

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

Sindikat si lahko predstavljate kot način združevanja rezultatov dveh poizvedb. Zveza bo vrnila rezultate le, če je med dvema poizvedbama edinstvena vrstica. S sintakso 'UNION ALL' lahko vrnete vse podatke, ne glede na podvojene podatke:

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

Opazite, kako se vrstni red vrstic spreminja? Union deluje na najučinkovitejši način, zato se lahko vrnjeni podatki razlikujejo po vrstnem redu.

Možen primer uporabe za združitev je vmesni seštevek: poizvedbo o skupnem seštevku lahko združite v poizvedbo o posameznih vsotah za določen scenarij.

7. Vstavi

Zdaj veste vse o pridobivanju podatkov iz baze podatkov, kaj pa vstavljanje? Tukaj je vstavi pride ukaz. Tu je primer:

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

Določiti morate ime tabele (osebe) in stolpce, ki jih želite uporabiti (ime in starost). Sintaksa 'VALUES' se nato uporabi za podajanje vrednosti za vstavljanje. Ti morajo biti v istem vrstnem redu kot predhodno določeni stolpci.

Klavzule where za vložke ne morete podati, zato morate zagotoviti, da upoštevate vse potrebne omejitve tabel, ki so prisotne.

8. Posodobitev

Ko vnesete nekaj podatkov, je povsem naravno, da morate spremeniti določene vrstice. Tukaj je nadgradnja sintaksa ukaza:

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

Določiti morate tabelo, ki jo želite spremeniti, in nato s sintakso 'SET' podati stolpce in njihove nove vrednosti. Ta primer je dober, vendar bo posodobil vsak zapis - nekaj, kar ni vedno zaželeno!

Če želite biti natančnejši, lahko uporabite klavzule 'WHERE', tako kot pri izbiri:

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

Z 'AND' in 'OR' lahko celo določite več pogojev:

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

Upoštevajte, kako se oklepaji uporabljajo za omejevanje pogojev.

kako pospešiti prenos Steam -a

9. Navzgor

Ups je čudno zveneča beseda, vendar je neverjetno uporaben ukaz. Recimo, da imate na mizi omejitev in ste navedli, da si želite le zapisov z edinstvenimi imeni - na primer ne želite shraniti dveh vrstic z istim imenom. Če bi poskušali vnesti več vrednosti 'Joe', bi vaš mehanizem zbirke podatkov povzročil napako in je zavrnil (povsem upravičeno). UPSERT vam omogoča, da posodobite zapis, če že obstaja. To je neverjetno uporabno! Brez tega ukaza bi morali napisati veliko logike, da najprej preverite, ali zapis obstaja, vstavite, če ga ni, sicer pridobite pravilen primarni ključ in nato posodobite.

Žal se popravki različno izvajajo v različnih motorjih baz podatkov. PostgreSQL je to sposobnost pridobil šele pred kratkim, medtem ko jo je MySQL imel že kar nekaj časa. Za referenco je tukaj sintaksa MySQL:

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

Upoštevajte, da je to v bistvu posodobitev in vstavek, ki ga lahko povzamemo kot »posodobitev, če vstavljanje ni uspelo«.

10. Izbriši

Izbriši se uporablja za popolno odstranitev zapisov - lahko je zelo škodljiva, če jo zlorabite! Osnovna skladnja je zelo enostavna za uporabo:

DELETE FROM people;

Tako kot večina drugih ukazov bo tudi ta izbrisan vse ! Če želite omejiti na nekoliko bolj razumno število vrstic - v idealnem primeru eno:

DELETE FROM people WHERE name = 'Joe';

Če razvijate sistem, je pogosto pametno uvesti 'mehko brisanje'. Nikoli ne zaženete ukaza za brisanje, temveč ustvarite izbrisani stolpec in nato preverite ta stolpec med izbranimi - lahko se izognete številnim potencialnim zadregam, če lahko hitro in enostavno pridobite domnevno izbrisane zapise. Vendar to ne nadomešča ustreznih varnostnih kopij.

11. Ustvari tabelo

The ustvarite tabelo ukaz se uporablja za ustvarjanje tabel. To je še eno zelo preprosto:

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

Upoštevajte, kako sta imena in omejitve stolpcev v oklepajih, stolpci pa imajo ustrezen podatkovni tip. Določen je primarni ključ, kot je potrebno pri vsaki dobri zasnovi baze podatkov.

12. Spremeni tabelo

The spremeniti mizo ukaz se uporablja za spreminjanje strukture tabele. To je nekoliko omejeno, saj vam zbirka podatkov ne dovoljuje spreminjanja tabele, če bi obstoječi podatki povzročili konflikt - na primer spremenite niz v celo število. V teh primerih najprej popravite podatke in nato spremenite tabelo. Tukaj je primer:

ALTER TABLE people ADD height integer;

Ta primer v stolpec oseb doda stolpec 'višina' tipa integer. V resnici ni omejitev, kaj lahko spremenite.

13. Spustna tabela

Končni ukaz je spustna miza . Pomislite na to kot na brisanje, namesto da izbrišete en sam zapis, odstrani vsak zapis skupaj s tabelo! Tako ga uporabljate:

DROP TABLE people;

To je precej drastičen ukaz in ni razloga, da bi ga bilo treba programirati v sistem. V veliki večini primerov ga je treba izvesti le ročno, lahko pa tudi zelo uničujoče.

To je vse za danes. Upam, da ste se naučili nekaj uporabnih trikov! Lahko bi se naučil, kako naredite spletno stran , nato pa z novo pridobljenimi veščinami poskrbite, da bo dinamična - pazite le, da ne naredite teh napak ali da ostanejo ranljivi za vbrizgavanje SQL. Če niste prepričani, da se morate naučiti SQL, ste razmišljali o generatorju statičnih spletnih mest?

Zakaj spodaj ne pustite komentarja s svojimi najljubšimi nasveti in zvijačami SQL?

Zasluge za sliko: HYS_NP/Shutterstock

Deliti Deliti Cvrkutati E-naslov Ali je vredno nadgraditi na Windows 11?

Windows je bil preoblikovan. Toda ali je to dovolj, da vas prepriča, da preidete z operacijskega sistema Windows 10 na Windows 11?

Preberite Naprej
Sorodne teme
  • Programiranje
  • Programiranje
  • SQL
O avtorju Joe Coburn(136 objavljenih člankov)

Joe je diplomiral iz računalništva na Univerzi v Lincolnu v Veliki Britaniji. Je poklicni razvijalec programske opreme in ko ne leti z brezpilotnimi letali ali ne piše glasbe, ga pogosto najdejo pri fotografiranju ali ustvarjanju videoposnetkov.

Več od Joea Coburna

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite