Din første nyttige forespørgsel
What you'll learn
- at skrive forespørgsler med en udtrykkelig liste af kolonner efter
SELECTog et rækkefilter viaWHERE - at oversætte et forretningsspørgsmål til SQL ad ruten: entitet →
FROM, begrænsninger →WHERE(medAND), output →SELECT, rækkefølge →ORDER BY - at forklare, hvorfor
SELECT *er dårlig praksis i forespørgsler, der kører i drift - at tjekke en forespørgsel ved at gengive den højt: stemmer gengivelsen med det oprindelige spørgsmål, er forespørgslen rigtig efter mening
Kortet er studeret — og QUERY ændrer reglerne. Indtil nu har du betragtet arkivet som helhed, som en turist; en arkivar arbejder anderledes. På holopanelet slukkes alt på nær én tabel, og en opgave dukker op: stil dit spørgsmål, så svaret ikke indeholder en eneste overflødig række eller en eneste overflødig kolonne.
Vi vælger de kolonner og rækker, vi skal bruge
At tage alt via * er praktisk ved den første kontakt, men i virkeligt arbejde er det som at slæbe hele lageret op til kassen. Som regel skal du bruge konkrete felter: remse dem op med komma efter SELECT.
Med rækkerne er det det samme: i stedet for hele butiksdisken vælger du kun det nødvendige segment via WHERE. Lad os for eksempel bede Kotomarket om kun varerne fra kategorien Bøger:

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 |
Fra forretningsspørgsmål — til forespørgsel
De rigtige spørgsmål når ikke arkivaren på SQL: »hvilke bøger er billigere end halvandet tusind?«, »hvad af elektronikken koster mere end 5000?«. Oversættelsen går altid ad én rute:
- Entitet → tabel. Hvad handler spørgsmålet om: varer, kunder, ordrer? »Bøger billigere end 1500« handler om varer, altså
FROM products. - Begrænsninger → WHERE. Hvert vilkår fra spørgsmålet er et separat filtervilkår: kategorien »Bøger«, prisen under 1500.
- Hvad skal vises → SELECT. Hvad vil personen gerne se i svaret? Navn og pris — dem remser vi op, resten er støj.
- Svarets form → ORDER BY. »Fra billig til dyr« — en sortering efter pris.
-- »Hvilke bøger er billigere end 1500, og hvad koster de, fra billig til dyr?«
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Flere vilkår forbindes med ordet AND — filteroperatorerne gennemgår vi grundigt i næste kapitel.
Og den gode arkivars omvendte vane: læs den færdige forespørgsel højt som en sætning. »Tag bøgerne billigere end 1500 fra varerne, vis navn og pris, sortér efter pris« — stemmer gengivelsen med det oprindelige spørgsmål, er forespørgslen rigtig efter mening. Dukker »alle kolonner« eller »hele butiksdisken« op i gengivelsen — så gå tilbage og indsnævr.
Interview question
Spørgsmål fra en jobsamtale: hvorfor regnes SELECT * for dårlig praksis i forespørgsler, der kører i drift?
Et stærkt svar: for det første overflødige data: netværk og hukommelse bruges på kolonner, der ikke er brug for, og databasen mister muligheden for at svare alene ud fra indekset (index-only scan; indekser — kapitel 10). For det andet skrøbelighed: når kolonner tilføjes eller omdøbes, knækker rapporter og kode, der regner med kolonnernes sammensætning og rækkefølge. En udtrykkelig liste af kolonner er forespørgslens kontrakt; SELECT * er højst på sin plads i interaktiv udforskning af data.
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.