13 kõige olulisemat SQL -i käsku, mida iga programmeerija peaks teadma

13 kõige olulisemat SQL -i käsku, mida iga programmeerija peaks teadma

Andmebaasid juhivad kaasaegset veebi. Iga suur või dünaamiline veebisait kasutab mingil viisil andmebaasi ja koos sellega Struktureeritud päringukeel (SQL) , andmetega manipuleerimise võimalused on tõesti lõputud. Kui teate juba SQL -i, kontrollige kindlasti neid programmeerimisoskusi, mida kõik veebisaitide arendajad peaksid teadma.





Täna näitan teile mõnda neist põhilised SQL -käsud peate teadma programmeerijana.





Andmebaasi tabelist tagastatud andmetel on palju nimesid. Andmeid nimetatakse tavaliselt Ridad , Rekordid või Tuples . Ma kasutan neid mõisteid selles artiklis vaheldumisi.



Eessõna

Kõik näited täna põhinevad neljal väljamõeldud tabelil. The klient Tabel sisaldab klientide nime ja vanust:

The kõrgused tabel sisaldab iga inimese nime ja pikkust:



The personal tabel sisaldab töötajate nime ja vanust - täpselt sama, mis klienditabelis:

Finaallaud kutsus inimesed sisaldab inimeste nime ja vanust, nagu ka klientide ja töötajate tabelid:





1. Valige

The vali avaldus on kõige lihtsam ja on oluline, et te sellest aru saaksite, kuna see toetab peaaegu kõiki teisi käske. Peetakse heaks tavaks kirjutada reserveeritud SQL -sõnad suurtähtedega, kuna see muudab käsu hõlpsamini loetavaks ja arusaadavaks.

Nagu nimigi ütleb, on select harjunud vali andmed andmebaasist. Siin on lihtsaim kasutusviis:





SELECT * FROM table;

Sellel on kaks osa. Esimene osa ( VALI * ) määrab, milliseid veerge soovite valida. Tärn näitab, et soovite valida kõik tabeli veerud. Teine osa ( LAUAST ) ütleb teie andmebaasimootorile, kust soovite neid andmeid hankida. Asendage tabel andmebaasi tabeli nimega.

Seda valikut nimetatakse tähe valimiseks. Tärni kasutamine on hea viis tabeli andmete väljaselgitamiseks, kuid ma ei soovita neid kasutada ühegi tootmiskoodi jaoks. Valitud tähe kasutamisel peab andmebaasimootor esitama teile soovitud andmed. Teil ei ole mingit kontrolli andmete tagastamise järjekorra üle, nii et kui keegi lisab tabelisse uue veeru, võite avastada, et teie programmeerimiskeele muutujad ei esinda enam õigeid andmeid. Õnneks on lahendus olemas.

Saate selgesõnaliselt öelda, milliseid veerge soovite alla laadida.

SELECT age, name FROM people;

See päring toob tabelist „inimesed” välja veerud „vanus” ja „nimi”. See selgesõnaline olemine võib olla pisut tüütu, kui teil on palju andmeid, kuid see vähendab tulevikus probleeme ja muudab teie SQL -i hõlpsamini arusaadavaks tulevastele programmeerijatele.

Kui soovite valida täiendavaid andmeid, kuid neid ei salvestata ühtegi tabelisse, saate seda teha järgmiselt.

SELECT age, '1234' FROM people;

Üksikud jutumärkides olevad stringid tagastatakse veeru nime vaste asemel.

2. Kus

Valikukäsk sobib suurepäraselt andmete hankimiseks, aga mis siis, kui soovite tulemusi natuke rohkem filtreerida? Aga kui otsida ainult siniste silmadega inimesi? Aga jaanuaris sündinud inimesed, kes töötavad mehaanikuna? See on koht, kus kus käsk tuleb sisse. See võimaldab valida tingimustele ja lisate selle lihtsalt avalduse lõppu:

SELECT age, name FROM people WHERE age > 10;

See päring on nüüd piiratud inimestega, kes on vanemad kui 10 aastat. Saate ühendada mitu tingimust, kasutades JA operaator:

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

The JA käsk töötab täpselt nagu inglise keeles: see rakendab avaldusele veel ühe tingimuse. Selle näite puhul oleks tagastatud andmed kõik kirjed, mille vanus jääb vahemikku 10–20. Kuna vastavaid tulemusi pole, siis andmeid ei tagastata.

parimad tasuta vr -rakendused androidile

Teine käsk, mida saab sellega koos kasutada, on VÕI . Siin on näide:

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

See päring tagastab kirjed, mille vanus on üle 10 või nimi võrdub 'Joe'. Pange tähele, kuidas on ainult üks võrdusmärk? Enamik programmeerimiskeeli kasutab samaväärsuse kontrollimiseks topeltväärtusi (==). Seda pole enamiku andmebaasimootorite jaoks vaja (kuid see võib olla väga erinev keskkonna kohta, seega kontrollige kõigepealt uuesti).

3. Telli

The tellida tagastatavate tulemuste sortimiseks kasutatakse käsku. See on veel üks lihtne kasutada. Lisage see lihtsalt oma avalduse lõppu:

SELECT name, age FROM people ORDER BY age DESC;

Peate määrama veeru ja järjekorra, mis võib olla ASC tõusmiseks või DESC laskumise eest. Saate tellida mitme veeru järgi:

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

TELLI on võib -olla kõige kasulikum koos teiste käskudega. Mitte kõik päringud ei tagasta andmeid loogilisel või järjestatud viisil - see käsk võimaldab teil seda muuta.

4. Liitu

The liituda käsk on harjunud liituda seotud andmed, mis on salvestatud ühte või mitmesse tabelisse. Sina liituda teise tabeli esimesele tabelile ja määrake, kuidas andmed on ühendatud. Siin on põhinäide:

kuidas teada saada, kas ebay müüja on legitiimne
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Siin toimub paar asja. Peate alustama sünteksist „LEFT JOIN”, mis määrab, et soovite tabeliga liituda, kasutades vasakpoolset liitmist. Seejärel määrake tabel, millega soovite liituda (kõrgused). The USING (nimi) süntaks ütleb, et veeru „nimi” võib leida mõlemast tabelist ja seda tuleks tabelite ühendamiseks kasutada võtmena.

Ärge muretsege, kui teie veergudel on igas tabelis erinevad nimed. Kasutuse „USING” asemel saate kasutada „ON”:

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

On -avalduses on selgesõnaliselt märgitud, milliseid veerge sisestada. Liitumistüüpe on palju ja igaühe üksikasjadesse laskumine võtab kaua aega, seega siin on lühike kokkuvõte nende kasutamisest:

  • (SISEMINE) LIITU - Annab vasted mõlemas tabelis.
  • VASAK (VÄLINE) LIITU - Tagastab kõik vasakpoolsest tabelist pärinevad read koos parempoolse tabeli vastega. Kui vasteid pole, tagastatakse endiselt vasakpoolse tabeli kirjed.
  • ÕIGE (VÄLINE) LIITU - See on vasaku liitmise vastand: tagastatakse kõik parempoolse tabeli read koos vasaku tabeli vastega.
  • TÄIELIK (VÄLIS) LIITU - Tagastab kõik tabelid, millel on vaste.

Sisemine või välimine süntaks on valikuline. See võib lihtsustada asjade mõistmist, kuid te ei pea seda enamikul juhtudel täpsustama.

5. Varjunimed

Nüüd, kui teate põhitõdesid, vaatame teise nimega käsk. Seda kasutatakse tabeli ajutiseks ümbernimetamiseks - rohkem hüüdnime kui midagi muud, kuna see uus nimi eksisteerib ainult teie käitatava tehingu sees. Kasutage seda järgmiselt.

SELECT A.age FROM people A;

Võite kasutada mis tahes kehtivat nime, mis teile meeldib, kuid mulle meeldib kasutada tähestiku tähti. Iga veeru nime ees on varjunimi ees. See varjunimi määratakse tabelile kohe pärast selle deklareerimist. See on täpselt sama, mida teha:

SELECT people.age FROM people;

Pika tabelinime sisestamise asemel võite kirjutada lihtsa ja kergesti meeldejääva tähe - aga mis mõte sellel on? Kui valite mitme tabeli hulgast, on lihtne segadusse sattuda, millised veerud millisesse tabelisse kuuluvad. Kui mõlemal teie tabelil on sama nimega veerud, võib teie andmebaasi päring isegi ebaõnnestuda ilma tabeli nimele või varjunimele selgesõnaliselt viitamata. Siin on näide kahe tabeliga:

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

Ja siin on sama päring varjunimedega:

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

Töötajate tabelile antakse varjunimi 'A' ja klientide tabelile 'B'. Varjatud tabelid aitavad teie koodi hõlpsamini mõista ja vähendavad tippimist.

Võite ka varjunimega veeru ümber nimetada, kasutades käsku 'AS':

SELECT age AS person_age FROM people;

Selle päringu käivitamisel nimetatakse veergu nüüd vanuse asemel isikupäraks.

6. Liit

Liit on suurepärane käsk. See võimaldab ridu üksteisele lisada. Erinevalt liitumistest, mis lisavad sobivaid veerge, saab liit lisada mitteseotud ridu tingimusel, et neil on sama arv ja nimed. Kasutage seda järgmiselt.

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

Võite mõelda liidule kui kahe päringu tulemuste ühendamise viisile. Liit tagastab tulemused ainult siis, kui kahe päringu vahel on ainulaadne rida. Kõigi andmete tagastamiseks, olenemata duplikaatidest, saate kasutada süntaksi „UNION ALL”:

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

Pange tähele, kuidas ridade järjekord muutub? Union tegutseb kõige tõhusamal viisil, seega võivad tagastatud andmed järjekorras erineda.

Võimalik liitmise kasutusjuht on vahesumma: võite liita summaarvestuse päringu konkreetse stsenaariumi üksikute kogusummade päringule.

7. Sisesta

Nüüd teate kõike andmebaasist andmete hankimise kohta, aga kuidas on nende sisestamisega? See on koht, kus sisestada käsk. Siin on näide:

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

Peate määrama tabeli nime (inimesed) ja veerud, mida soovite kasutada (nimi ja vanus). Seejärel kasutatakse sisestatavate väärtuste pakkumiseks süntaksit „VÄÄRTUSED”. Need peavad olema samas järjekorras kui eelnevalt määratud veerud.

Lisade jaoks ei saa määrata kus -klauslit ja peate tagama, et järgite kõiki vajalikke tabelipiiranguid.

8. Värskenda

Pärast teatud andmete sisestamist on loomulik, et peate konkreetseid ridu muutma. Siin on uuendada käsu süntaks:

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

Peate määrama tabeli, mida soovite muuta, ja seejärel kasutage veergude ja nende uute väärtuste määramiseks süntaksi 'SET'. See näide on hea, kuid värskendab iga kirjet - see pole alati soovitav!

Täpsemaks muutmiseks võite kasutada WHERE klausleid täpselt nagu valiku tegemisel:

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

Võite isegi määrata mitu tingimust, kasutades 'AND' ja 'OR':

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

Pange tähele, kuidas sulgusid kasutatakse tingimuste piiramiseks.

surmaekraanide must ekraan Windows 10

9. Üles

Vabandust on kummaliselt kõlav sõna, kuid see on uskumatult kasulik käsk. Oletame, et teie tabelil on piirang ja olete määranud, et soovite kunagi ainult unikaalsete nimedega kirjeid - te ei soovi näiteks salvestada kahte sama nimega rida. Kui proovite sisestada mitut 'Joe' väärtust, annab teie andmebaasimootor vea ja keeldub seda tegemast (täiesti õigesti). UPSERT võimaldab teil kirjet värskendada, kui see on juba olemas. See on uskumatult kasulik! Ilma selle käsuta peaksite kirjutama palju loogikat, et kõigepealt kontrollida, kas kirje on olemas, sisestada, kui seda pole, vastasel juhul laadige õige esmane võti ja seejärel värskendage.

Kahjuks rakendatakse uuendusi erinevates andmebaasimootorites erinevalt. PostgreSQL on selle võime omandanud alles hiljuti, samas kui MySQL -il on see olnud juba mõnda aega. Siin on viitamiseks MySQL -i süntaks:

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

Pange tähele, kuidas see on sisuliselt värskendus ja sisestuslause, mille võib kokku võtta kui „värskendamine, kui sisestamine ebaõnnestus”.

10. Kustuta

Kustuta kasutatakse kirjete täielikuks eemaldamiseks - kuritarvitamise korral võib see olla üsna kahjulik! Põhisüntaksit on väga lihtne kasutada:

DELETE FROM people;

Nagu enamik teisi käske, kustutatakse ka see kõike ! Peate kasutama asukohta, et piirata see mõnevõrra mõistlikumate ridade arvuga - ideaaljuhul üks:

DELETE FROM people WHERE name = 'Joe';

Kui arendate süsteemi, on sageli mõistlik rakendada pehme kustutamine. Te ei käivita tegelikult kustutamiskäsku, vaid loote kustutatud veeru ja seejärel kontrollite seda veergu oma valikutes - see aitab vältida palju piinlikkust, kui saate kiiresti ja hõlpsalt väidetavalt kustutatud kirjeid alla laadida. See ei asenda siiski korralikke varukoopiaid.

11. Loo tabel

The luua tabel tabelite loomiseks kasutatakse käsku. See on veel üks väga lihtne:

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

Pange tähele, kuidas veergude nimed ja piirangud on sulgudes ning veergudele antakse sobiv andmetüüp. Esmane võti on määratud, nagu on nõutav mis tahes heas andmebaasi kujunduses.

12. Alter tabel

The muuda tabelit käsku kasutatakse tabeli struktuuri muutmiseks. See on veidi piiratud, kuna teie andmebaas ei lase teil tabelit muuta, kui olemasolevad andmed tekitaksid konflikti - näiteks stringi muutmine täisarvuks. Sellistel juhtudel parandage kõigepealt andmed ja seejärel muutke tabelit. Siin on näide:

ALTER TABLE people ADD height integer;

See näide lisab inimeste tabelisse veeru nimega 'kõrgus'. Sellel, mida saate muuta, pole tegelikult piire.

13. Kukkumislaud

Viimane käsk on kukkumislaud . Mõelge sellele kui kustutamisele, kuid selle asemel, et kustutada üksainus kirje, eemaldatakse see koos iga tabeliga! Kasutage seda järgmiselt.

DROP TABLE people;

See on üsna drastiline käsk ja pole mingit põhjust, miks seda tuleks teie süsteemi programmeerida. Enamikul juhtudel tuleks seda teha ainult käsitsi ja see võib olla väga hävitav.

Tänaseks on see kõik. Loodan, et õppisite kasulikke trikke! Sa võiksid õppida, kuidas teha veebisait ja seejärel kasutage oma uusi oskusi, et muuta see dünaamiliseks - lihtsalt veenduge, et te neid vigu ei teeks ega jätaks seda SQL -i süstimise suhtes haavatavaks. Kui te pole kindel, kas peate SQL -i õppima, kas olete mõelnud staatilise saidigeneraatori kasutamisele?

Miks mitte jätta allpool kommentaar oma lemmik SQL -i näpunäidete ja nippidega?

Pildikrediit: HYS_NP/Shutterstock

Jaga Jaga Piiksuma E -post Kas tasub Windows 11 -le üle minna?

Windows on ümber kujundatud. Kuid kas sellest piisab, et veenda teid Windows 10 -lt Windows 11 -le üle minema?

Loe edasi
Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • SQL
Autori kohta Joe Coburn(136 artiklit avaldatud)

Joe on lõpetanud arvutiteaduse Ühendkuningriigi Lincolni ülikoolis. Ta on professionaalne tarkvaraarendaja ja kui ta ei lennuta droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videoid tootmas.

Rohkem Joe Coburnilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin