Prima interogare utilă
What you'll learn
- să scrii interogări cu o listă explicită de coloane după
SELECTși cu un filtru de rânduri prinWHERE - să traduci o întrebare de business în SQL pe ruta: entitate →
FROM, restricții →WHERE(cuAND), afișare →SELECT, ordine →ORDER BY - să explici de ce
SELECT *este o practică proastă în interogările de producție - să verifici sensul unei interogări spunând-o cu voce tare: dacă formularea coincide cu întrebarea inițială, interogarea e corectă ca sens
Harta e studiată, iar QUERY schimbă regulile. Până acum ai privit arhiva în întregime, ca un vizitator; arhivarul lucrează altfel. Pe holopanou se stinge totul în afară de un tabel și apare o sarcină: pune întrebarea astfel încât în răspuns să nu existe niciun rând în plus și nicio coloană în plus.
Alegem coloanele și rândurile de care avem nevoie
Să iei totul prin * e comod la prima explorare, dar în munca reală e ca și cum ai aduce la tejghea tot depozitul. De obicei ai nevoie de anumite câmpuri: enumeră-le după SELECT, despărțite prin virgulă.
La fel stau lucrurile și cu rândurile: în loc să iei tot raftul, alege doar segmentul de care ai nevoie prin WHERE. De exemplu, să cerem din „Kotomarket” doar produsele din categoria Cărți:

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 |
Din întrebarea de business în interogare
Întrebările reale nu ajung la arhivar în SQL: „care cărți sunt mai ieftine de 1500?”, „ce produse din electronice costă peste 5000?”. Traducerea urmează mereu aceeași rută:
- Entitate → tabel. Despre ce este întrebarea: despre produse, cumpărători, comenzi? „Cărți mai ieftine de 1500” este despre produse, deci
FROM products. - Restricții → WHERE. Fiecare condiție din întrebare devine o condiție separată de filtru: categoria „Cărți”, prețul mai mic de 1500.
- Ce să arătăm → SELECT. Ce vrea omul să vadă în răspuns? Denumirea și prețul — pe acestea le enumerăm, restul este zgomot.
- Forma răspunsului → ORDER BY. „De la ieftine la scumpe” înseamnă sortare după preț.
-- „Care cărți sunt mai ieftine de 1500 și cât costă, de la ieftine la scumpe?”
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Mai multe condiții se unesc cu cuvântul AND — operatorii de filtrare îi vom analiza în detaliu în capitolul următor.
Un alt obicei bun de arhivar: citește interogarea gata făcută cu voce tare, ca pe o frază. „Din produse ia cărțile mai ieftine de 1500, arată denumirea și prețul, sortează după preț” — dacă formularea coincide cu întrebarea inițială, interogarea e corectă ca sens. Dacă a apărut „toate coloanele” sau „tot raftul”, întoarce-te și îngustează.
Interview question
Întrebare de interviu: de ce SELECT * este considerat o practică proastă în interogările de producție?
Răspuns puternic: în primul rând, aduce date inutile: rețeaua și memoria se consumă pe coloane de care nu ai nevoie, iar baza pierde uneori posibilitatea de a răspunde doar din index (index-only scan; indecșii — Capitolul 10). În al doilea rând, este fragil: la adăugarea sau redenumirea coloanelor se pot strica rapoartele și codul care se bazează pe setul și ordinea coloanelor. O listă explicită de coloane este contractul interogării; SELECT * este potrivit cel mult pentru explorarea interactivă a datelor.
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.