Az első hasznos lekérdezés
What you'll learn
- lekérdezéseket írni a
SELECTutáni kifejezett oszloplistával és a sorokWHEREszerinti szűrésével - egy üzleti kérdést SQL-re fordítani a következő útvonalon: entitás →
FROM, megkötések →WHERE(AND-del), kimenet →SELECT, sorrend →ORDER BY - elmagyarázni, miért rossz gyakorlat a
SELECT *az éles lekérdezésekben - ellenőrizni a lekérdezést hangos elmondással: ha az elmondás egyezik az eredeti kérdéssel, a lekérdezés jelentésében helyes
A térkép tanulmányozva — és a QUERY megváltoztatja a szabályokat. Eddig az egész archívumot szemlélted, mint egy turista; az archivista másképp dolgozik. A holopanelen minden kihuny, egyetlen táblát kivéve, és megjelenik egy feladat: tedd fel úgy a kérdést, hogy a válaszban egyetlen fölösleges sor és egyetlen fölösleges oszlop se legyen.
Kiválasztjuk a szükséges oszlopokat és sorokat
Mindent a *-on át elkérni kényelmes az első ismerkedéskor, de a valódi munkában ez olyan, mintha az egész raktárt a kasszához hoznád. Általában konkrét mezőkre van szükséged: sorold fel őket vesszővel elválasztva a SELECT után.
A sorokkal ugyanígy: az egész kirakat helyett válaszd ki csak a szükséges szegmenst a WHERE-rel. Kérjük el például a „Kotomarket”-től csak a Könyvek kategória termékeit:

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 |
Az üzleti kérdésből — a lekérdezésbe
A valódi kérdések nem SQL-ben érkeznek az archivistához: „milyen könyvek olcsóbbak ezerötszáznál?”, „mi olcsóbb az elektronikából 5000-nél?”. A fordítás mindig egyazon útvonalon halad:
- Entitás → tábla. Miről szól a kérdés: termékekről, vásárlókról, rendelésekről? Az „1500-nál olcsóbb könyvek” a termékekről szól, tehát
FROM products. - Megkötések → WHERE. A kérdés minden feltétele egy-egy külön szűrőfeltétel: a „Könyvek” kategória, az 1500-nál kisebb ár.
- Mit mutassunk → SELECT. Mit szeretne látni az ember a válaszban? A nevet és az árat — ezeket soroljuk fel, a többi zaj.
- A válasz formája → ORDER BY. Az „olcsótól a drágáig” rendezést jelent ár szerint.
-- „Milyen könyvek olcsóbbak 1500-nál, és mennyibe kerülnek, az olcsótól a drágáig?”
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Több feltételt az AND szóval kötünk össze — a szűrőoperátorokat részletesen a következő fejezetben vesszük át.
És a jó archivista fordított szokása: olvasd fel a kész lekérdezést mondatként, hangosan. „A termékekből vedd ki az 1500-nál olcsóbb könyveket, mutasd a nevet és az árat, rendezd ár szerint” — ha az elmondás egyezik az eredeti kérdéssel, a lekérdezés jelentésében helyes. Ha az elmondásban felbukkan az „összes oszlop” vagy az „egész kirakat” — menj vissza, és szűkíts.
Interview question
Interjúkérdés: miért tartják rossz gyakorlatnak a SELECT *-ot az éles lekérdezésekben?
Erős válasz: először is, fölösleges adat: a hálózat és a memória olyan oszlopokra megy el, amelyekre nincs szükség, és az adatbázis elveszti azt a lehetőséget, hogy pusztán index alapján válaszoljon (index-only scan; az indexek a 10. fejezet). Másodszor, törékenység: oszlopok hozzáadásakor vagy átnevezésekor eltörnek a riportok és a kód, amely az oszlopok összetételére és sorrendjére számít. A kifejezett oszloplista a lekérdezés szerződése; a SELECT * legfeljebb interaktív adatfeltárásban helyénvaló.
SELECT name FROM products WHERE category = 'Книги' lekérdezés?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.