Esimene kasulik päring
What you'll learn
- kirjutama päringuid
SELECT-i järel selge veergude loeteluga ja ridade filtrigaWHEREkaudu - tõlkima ärilise küsimuse SQL-i marsruudil: olem →
FROM, piirangud →WHERE(AND-iga), väljund →SELECT, järjekord →ORDER BY - selgitama, miks
SELECT *on tööpäringutes halb tava - kontrollima päringut valju häälega ümberjutustades: ümberjutustus langes algse küsimusega kokku — päring on mõtte poolest õige
Kaart on selgeks õpitud — ja QUERY muudab reegleid. Seni vaatasid arhiivi tervikuna nagu turist; arhivaar töötab teisiti. Holopaneelil kustub kõik peale ühe tabeli ja ilmub ülesanne: esita küsimus nii, et vastuses ei oleks ühtegi liigset rida ega ühtegi liigset veergu.
Valime vajalikud veerud ja read
Kõige võtmine * kaudu on mugav esmatutvuseks, aga päristöös on see nagu tuua kassasse terve ladu. Tavaliselt on sul vaja konkreetseid välju: loetle need komaga eraldatult SELECT-i järel.
Ridadega on sama lugu: terve vitriini asemel vali ainult vajalik segment WHERE kaudu. Näiteks palume „Kotomarketilt“ ainult kategooria Raamatud kaupu:

Choosing the columns and rows you need
Grabbing everything with * is convenient for a first look, but in real work it’s like hauling the entire warehouse up to the checkout. Usually you need specific fields: list them, comma-separated, after SELECT.
It’s the same with rows: instead of the whole storefront, pick only the segment you need via WHERE. For example, let’s ask Kotomarket for only the products in the Books category:
| name | price |
|---|---|
| SQL для профи | 1290.00 |
| Чистый код | 1490.00 |
| Алгоритмы на практике | 1690.00 |
Ärilisest küsimusest — päringusse
Pärisküsimused jõuavad arhivaarini mitte SQL-is: „millised raamatud on odavamad kui poolteist tuhat?“, „mis elektroonikast on kallim kui 5000?“. Tõlkimine käib alati üht marsruuti pidi:
- Olem → tabel. Millest on küsimus: kaupadest, ostjatest, tellimustest? „Raamatud odavamad kui 1500“ on kaupade kohta, seega
FROM products. - Piirangud → WHERE. Iga tingimus küsimusest on eraldi filtritingimus: kategooria „Raamatud“, hind väiksem kui 1500.
- Mida näidata → SELECT. Mida inimene tahab vastuses näha? Nimetust ja hinda — neid loetlemegi, ülejäänu on müra.
- Vastuse kuju → ORDER BY. „Odavamatest kallimateni“ on sorteerimine hinna järgi.
-- «Какие книги дешевле 1500 и сколько они стоят, от дешёвых к дорогим?»
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Mitu tingimust ühendatakse sõnaga AND — filtrioperaatoreid vaatame üksikasjalikult järgmises peatükis.
Ja hea arhivaari vastupidine harjumus: loe valmis päring valjusti läbi nagu lause. „Kaupadest võta raamatud odavamad kui 1500, näita nimetust ja hinda, sorteeri hinna järgi“ — kui ümberjutustus langes algse küsimusega kokku, on päring mõtte poolest õige. Kui ümberjutustuses kerkis esile „kõik veerud“ või „terve vitriin“ — mine tagasi ja kitsenda.
Interview question
Küsimus vestlusel: miks peetakse SELECT * tööpäringutes halvaks tavaks?
Tugev vastus: esiteks, liigsed andmed: võrku ja mälu kulutatakse veergudele, mida pole vaja, ja andmebaas kaotab võimaluse vastata ainult indeksi põhjal (index-only scan; indeksid — 10. peatükk). Teiseks, haprus: veergude lisamisel või ümbernimetamisel lähevad katki aruanded ja kood, mis arvestab veergude koosseisu ja järjekorraga. Selge veergude loetelu on päringu leping; SELECT * sobib vahest vaid interaktiivseks andmete uurimiseks.
SELECT name FROM products WHERE category = 'Книги'?The index has been read: you know what’s in the five tables and which threads stitch them together. QUERY dims the map, and the next clearance level lights up on the holopanel — the reading terminal.
QUERY: Remember the cardinal property of this place: the archive answers only well-formed questions. From the next clearance on, we learn to ask precisely.