Die erste nützliche Abfrage
What you'll learn
- Abfragen mit einer expliziten Spaltenliste nach
SELECTund einem Zeilenfilter überWHEREschreiben - eine Geschäftsfrage in SQL übersetzen, entlang dieser Route: Entität →
FROM, Einschränkungen →WHERE(mitAND), Ausgabe →SELECT, Reihenfolge →ORDER BY - erklären, warum
SELECT *in produktiven Abfragen schlechte Praxis ist - eine Abfrage prüfen, indem du sie laut nacherzählst: Wenn die Nacherzählung zur ursprünglichen Frage passt, ist die Abfrage inhaltlich richtig
Die Karte ist studiert — und QUERY ändert die Regeln. Bisher hast du das Archiv als Ganzes betrachtet, wie ein Besucher. Ein Archivar arbeitet anders. Auf dem Holopanel erlischt alles bis auf eine Tabelle, und eine Aufgabe erscheint: Stelle deine Frage so, dass in der Antwort keine einzige überflüssige Zeile und keine einzige überflüssige Spalte landet.
Wir wählen die nötigen Spalten und Zeilen
Für ein erstes Kennenlernen ist es praktisch, alles mit * zu holen. In der echten Arbeit ist das aber, als würde man das ganze Lager zur Kasse bringen. Meist brauchst du bestimmte Felder: Zähle sie nach SELECT durch Kommata getrennt auf.
Mit den Zeilen ist es genauso: Statt des ganzen Schaufensters wählst du über WHERE nur das nötige Segment. Bitten wir «Kotomarket» zum Beispiel nur um die Produkte aus der Kategorie Bücher:

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 |
Von der Geschäftsfrage zur Abfrage
Echte Fragen erreichen den Archivar nicht in SQL: „Welche Bücher sind billiger als fünfzehnhundert?“, „Was aus der Elektronik kostet mehr als 5000?“. Die Übersetzung folgt immer derselben Route:
- Entität → Tabelle. Worum geht es in der Frage: um Produkte, Käufer, Bestellungen? „Bücher billiger als 1500“ handelt von Produkten, also
FROM products. - Einschränkungen → WHERE. Jede Bedingung aus der Frage wird zu einer eigenen Filterbedingung: Kategorie „Bücher“, Preis kleiner als 1500.
- Was anzeigen → SELECT. Was soll der Mensch in der Antwort sehen? Name und Preis — die zählen wir auf, der Rest ist Lärm.
- Form der Antwort → ORDER BY. „Von günstig zu teuer“ bedeutet Sortierung nach Preis.
-- „Które książki są tańsze niż 1500 i ile kosztują, od tanich do drogich?”
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1500
ORDER BY price;
Mehrere Bedingungen werden mit dem Wort AND verbunden — die Filteroperatoren behandeln wir im nächsten Kapitel ausführlich.
Und hier die Gegenprobe eines guten Archivars: Lies die fertige Abfrage laut wie einen Satz. „Aus den Produkten die Bücher unter 1500 nehmen, Name und Preis anzeigen, nach Preis sortieren“ — wenn diese Nacherzählung zur ursprünglichen Frage passt, ist die Abfrage inhaltlich richtig. Tauchen in der Nacherzählung „alle Spalten“ oder „das ganze Schaufenster“ auf, geh zurück und grenze sie enger ein.
Interview question
Frage aus dem Vorstellungsgespräch: Warum gilt SELECT * in produktiven Abfragen als schlechte Praxis?
Starke Antwort: Erstens wegen überflüssiger Daten: Netzwerk und Speicher werden für Spalten verbraucht, die niemand braucht, und die Datenbank verliert unter Umständen die Möglichkeit, allein aus dem Index zu antworten (index-only scan; Indizes — Kapitel 10). Zweitens wegen Brüchigkeit: Wenn Spalten hinzukommen oder umbenannt werden, können Berichte und Code brechen, die von Zusammensetzung und Reihenfolge der Spalten ausgehen. Eine explizite Spaltenliste ist der Vertrag der Abfrage; SELECT * ist höchstens beim interaktiven Erkunden von Daten sinnvoll.
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.