Databases mingħajr ċpar

L-ewwel mistoqsija utli

21 min
What you'll learn
  • tikteb mistoqsijiet b’lista espliċita ta’ kolonni wara SELECT u filtru tar-ringieli permezz ta’ WHERE
  • taqleb mistoqsija tan-negozju f’SQL tul ir-rotta: entità → FROM, restrizzjonijiet → WHERE (b’AND), output → SELECT, ordni → ORDER BY
  • tispjega għalfejn SELECT * huwa prattika ħażina fil-mistoqsijiet tax-xogħol
  • tivverifika l-mistoqsija billi tirrakkontaha b’leħen għoli: ir-rakkont qabel mal-mistoqsija oriġinali — il-mistoqsija hija korretta fis-sens

Il-mappa ġiet studjata — u QUERY ibiddel ir-regoli. Sa issa kont tħares lejn l-arkivju kollu, bħal turist; l-arkivista jaħdem mod ieħor. Fuq il-holopanel jintefa kollox ħlief tabella waħda, u tidher task: staqsi l-mistoqsija b’tali mod li fit-tweġiba ma jkun hemm l-ebda ringiela żejda u l-ebda kolonna żejda.

Nagħżlu l-kolonni u r-ringieli meħtieġa

Tieħu kollox permezz ta’ * huwa komdu għall-ewwel introduzzjoni, imma fix-xogħol reali dan huwa bħal iġġib il-maħżen kollu lejn il-kaxxa. Normalment teħtieġ kampi konkreti: elenkahom b’virgola wara SELECT.

Bir-ringieli hu l-istess: minflok il-vetrina kollha agħżel biss is-segment meħtieġ permezz ta’ WHERE. Pereżempju, nitolbu lil «Kotomarket» biss il-prodotti mill-kategorija Kotba:

Kadett idejjaq vetrina olografika b’raġġ-filtru tal-ambra: mir-raġġ jgħaddu biss ftit ringieli-kapsuli bil-kotba
Mistoqsija preċiża lill-arkivju: SELECT isemmi l-kolonni meħtieġa, WHERE jgħaddi biss ir-ringieli meħtieġa.

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:

Liema kotba hemm fuq il-vetrina u kemm jiswew:
Query result
nameprice
SQL для профи1290.00
Чистый код1490.00
Алгоритмы на практике1690.00

Mill-mistoqsija tan-negozju — għall-query

Il-mistoqsijiet veri ma jaslux għand l-arkivista bl-SQL: «liema kotba huma orħos minn elf u nofs?», «xi prodotti tal-elettronika huma għaljin aktar minn 5000?». It-traduzzjoni dejjem tmur tul l-istess rotta:

  1. Entità → tabella. Dwar xiex hija l-mistoqsija: dwar il-prodotti, il-klijenti, l-ordnijiet? «Kotba orħos minn 1500» — dwar il-prodotti, allura FROM products.
  2. Restrizzjonijiet → WHERE. Kull kundizzjoni mill-mistoqsija — kundizzjoni separata tal-filtru: il-kategorija «Kotba», prezz inqas minn 1500.
  3. X’turi → SELECT. X’irid jara l-bniedem fit-tweġiba? L-isem u l-prezz — propju lilhom nelenkaw, il-bqija huwa storbju.
  4. Forma tat-tweġiba → ORDER BY. «Mill-irħas għall-għaljin» — issortjar skont il-prezz.
-- «Liema kotba huma orħos minn 1500 u kemm jiswew, mill-irħas għall-għaljin?»
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;

Diversi kundizzjonijiet jingħaqdu bil-kelma AND — l-operaturi tal-filtru naqsmuhom fid-dettall fil-kapitlu li jmiss.

U d-drawwa bil-maqlub tal-arkivista t-tajjeb: aqra l-query lesta b’leħen għoli bħala frażi. «Mill-prodotti tieħu l-kotba orħos minn 1500, turi l-isem u l-prezz, tissortja skont il-prezz» — jekk ir-rakkont qabel mal-mistoqsija oriġinali, il-query hija korretta fis-sens. Jekk fir-rakkont tfaċċa «il-kolonni kollha» jew «il-vetrina kollha» — erġa’ lura u dejjaq.

Interview question

Mistoqsija minn intervista: għalfejn SELECT * jitqies prattika ħażina fil-mistoqsijiet tax-xogħol?

Tweġiba qawwija: l-ewwel, data żejda: in-network u l-memorja jinħlew fuq kolonni li mhumiex meħtieġa, u d-database titlef il-possibbiltà li twieġeb bl-indiċi biss (index-only scan; l-indiċijiet — il-Kapitlu 10). It-tieni, fraġilità: meta jiżdiedu jew jissemmew mill-ġdid il-kolonni, jinkisru r-rapporti u l-kodiċi li jistrieħu fuq il-kompożizzjoni u l-ordni tal-kolonni. Lista espliċita ta’ kolonni hija l-kuntratt tal-query; SELECT * huwa xieraq biss fl-esplorazzjoni interattiva tad-data.

Check yourself
X’se turi l-query 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.

Practice: solve the tasks
Solved 0 of 2