In diesem Kapitel erhältst du eine fundierte Einführung in die grundlegenden SQL-Befehle, die das Fundament jeder Arbeit mit Datenbanken bilden. Du lernst Schritt für Schritt, wie du gezielt Informationen aus einer Datenbank abrufst, die gewünschten Datensätze auswählst und bestehende Daten gezielt bearbeitest. Dabei legen wir besonderen Wert darauf, dass du nicht nur die einzelnen Befehle kennenlernst, sondern auch verstehst, wie sie zusammenwirken, um komplexe Datenabfragen zu ermöglichen.
Wir beginnen mit der wohl wichtigsten Anweisung in SQL: SELECT. Sie bildet die Basis für nahezu jede Abfrage und erlaubt es dir, Daten aus einer oder mehreren Tabellen abzurufen. Im Anschluss erweitern wir dein Wissen um weitere essenzielle Bausteine: Mit WHERE lernst du Bedingungen zu formulieren, um nur relevante Datensätze zu filtern. ORDER BY hilft dir dabei, deine Ergebnisse sinnvoll zu sortieren, und mit LIMIT kannst du die Anzahl der zurückgegebenen Zeilen einschränken.
All diese Befehle greifen ineinander, sodass du sehr schnell lernst, Abfragen zu erstellen, die nicht nur korrekt, sondern auch praktisch und effizient sind. Am Ende dieses Kapitels wirst du in der Lage sein, die wichtigsten Werkzeuge von SQL sicher einzusetzen und eigene Abfragen für typische Alltagsszenarien zu schreiben.
2.1 SQL-Syntax
SQL-Befehle folgen einer klaren Struktur, die oft als Syntax bezeichnet wird. Wenn du dich an diese Regeln hältst, versteht die Datenbank deine Anweisungen korrekt. Anders als bei vielen Programmiersprachen ist die SQL-Syntax recht überschaubar, aber es gibt ein paar wichtige Punkte, die du dir von Anfang an merken solltest:
Groß- und Kleinschreibung
SQL ist in der Regel nicht zwischen Groß- und Kleinschreibung unterscheidend (case-insensitive). Das bedeutet:
SELECT name FROM benutzer;
select name from benutzer;
SeLeCt name FrOm benutzer;
Alle drei Varianten liefern dasselbe Ergebnis.
Best Practice: Damit dein Code übersichtlich und leicht verständlich bleibt, hat sich eine Konvention durchgesetzt:
- SQL-Schlüsselwörter wie
SELECT,FROM,WHERE,ORDER BYschreibt man in Großbuchstaben. - Tabellennamen und Spaltennamen schreibt man in Kleinbuchstaben.
Semikolon am Ende
Ein SQL-Befehl endet in der Regel mit einem Semikolon (;):
SELECT name FROM benutzer;
Manchmal funktioniert ein einzelner Befehl auch ohne Semikolon, aber sobald du mehrere Befehle in einem Skript ausführst, muss das Semikolon als Trennzeichen vorhanden sein. Es ist deshalb eine gute Angewohnheit, es immer zu setzen.
Kommentare
Wie in anderen Programmiersprachen kannst du auch in SQL Kommentare verwenden, um deinen Code zu dokumentieren oder dir Notizen zu machen. Kommentare werden von der Datenbank ignoriert.
-
Einzeilige Kommentare beginnen mit
--und gelten bis zum Ende der Zeile:-- Nur die Namen aller Benutzer abrufen SELECT name FROM benutzer; -
Mehrzeilige Kommentare stehen zwischen
/* ... */:/* Diese Abfrage gibt alle Benutzer zurück, inklusive ihrer E-Mail-Adresse und Gruppenzugehörigkeit */ SELECT name, email, gruppe FROM benutzer;
Kommentare sind besonders hilfreich, wenn du komplexere Abfragen schreibst oder mit anderen im Team arbeitest.
Im nächsten Abschnitt schauen wir uns die grundlegenden Schlüsselwörter
SELECT, FROM und WHERE genauer an.
Dazu verwenden wir wieder unsere Beispiel-Tabelle benutzer mit den Spalten:
idnamealteremailgruppe
2.2 SELECT-Anweisung
SELECT, weil du damit entscheidest, welche Spalten und Werte die Datenbank zurückgeben soll.
Die allgemeine Syntax lautet:
SELECT spaltenname
FROM tabellenname;
spaltenname: Gibt an, welche Spalte(n) du sehen möchtest.tabellenname: Gibt an, aus welcher Tabelle die Daten stammen.
Beispiel 1: Eine einzelne Spalte auswählen
Angenommen, du willst aus der Tabelle benutzer nur die Namen aller Benutzer abrufen. Dann lautet dein Befehl:SELECT name
FROM benutzer;
Das Ergebnis ist eine Tabelle, die nur die Spalte name enthält.
So kannst du dich gezielt auf die Informationen konzentrieren, die du gerade benötigst.
Beispiel 2: Mehrere Spalten auswählen
Du kannst auch mehrere Spalten gleichzeitig abrufen, indem du sie durch Kommas trennst:
SELECT name, email, gruppe
FROM benutzer;
Die Ergebnistabelle enthält jetzt drei Spalten: name, email und gruppe. Das ist praktisch, wenn du einen Überblick über verschiedene Eigenschaften der Benutzer haben möchtest, ohne gleich die gesamte Tabelle zu laden.
Alle Spalten abrufen
Manchmal möchtest du aber die komplette Tabelle sehen. Dafür gibt es die Abkürzung* (Sternchen), die für „alle Spalten“ steht:
SELECT *
FROM benutzer;
Die Ausgabe zeigt dir alle Daten der Tabelle – also jede Spalte und jede Zeile.
⚠️ Hinweis: Obwohl SELECT * sehr bequem ist, solltest du es in größeren Projekten
mit Vorsicht verwenden. Es kann unnötig viele Daten laden und Abfragen langsamer machen.
In der Praxis ist es meistens besser, nur die wirklich benötigten Spalten explizit anzugeben.
Warum ist SELECT so wichtig?
- Es ist die Grundlage fast aller SQL-Abfragen.
- Mit
SELECTbestimmst du, welche Informationen du aus der Datenbank siehst. - Du kannst
SELECTspäter mit weiteren Klauseln kombinieren (z. B.WHERE,ORDER BY,LIMIT), um deine Ergebnisse zu filtern, zu sortieren und zu begrenzen.
2.3 FROM-Klausel
Die FROM-Klausel ist ein zentraler Bestandteil der SELECT-Anweisung.
Sie gibt der Datenbank an, aus welcher Tabelle oder welchen Tabellen die Daten abgerufen werden sollen. Ohne die FROM-Klausel wüsste die Datenbank nicht, wo sie die angeforderten Informationen suchen soll.
Die allgemeine Syntax lautet:
SELECT spaltenname
FROM tabellenname;
spaltenname: Gibt an, welche Spalte(n) du abrufen möchtest. Mit*kannst du alle Spalten auswählen.tabellenname: Die Tabelle, aus der die Daten stammen.
Beispiel 1: Alle Spalten aus einer Tabelle abrufen
Um die gesamte Tabelle benutzer zu sehen, verwendest du:
SELECT *
FROM benutzer;
Die Datenbank liefert alle Spalten und Zeilen der Tabelle zurück. Dies ist oft der Ausgangspunkt für erste Abfragen, wenn du die Datenstruktur erkunden möchtest.
Beispiel 2: Daten aus mehreren Tabellen abrufen (Grundlage für Joins)
Die FROM-Klausel kann auch mehrere Tabellen angeben. Dies bildet die Basis für Joins, mit denen Daten aus verschiedenen Tabellen kombiniert werden:
SELECT benutzer.name, bestellungen.datum
FROM benutzer, bestellungen
WHERE benutzer.id = bestellungen.benutzer_id;
In diesem Beispiel werden die Tabellen benutzer und bestellungen miteinander verknüpft. Die Datenbank liefert nur die Kombinationen zurück, bei denen die Benutzer-ID in beiden Tabellen übereinstimmt.
Warum ist die FROM-Klausel so wichtig?
- Datenquelle: Sie legt fest, aus welcher Tabelle die Daten stammen.
- Flexibilität: Du kannst Daten aus einer oder mehreren Tabellen abrufen.
- Grundlage für Joins: Ohne FROM-Klausel ist keine Verbindung zwischen Tabellen möglich,
was für komplexe Abfragen essenziell ist.
2.4 WHERE-Klausel
Die WHERE-Klausel ist eines der wichtigsten Werkzeuge in SQL, um Daten gezielt zu filtern.
Mit ihr kannst du Bedingungen festlegen, sodass nur die Datensätze zurückgegeben werden, die deinen Kriterien entsprechen.
Ohne eine WHERE-Klausel würde eine SELECT-Abfrage alle Zeilen einer Tabelle liefern –
in den meisten Fällen willst du aber nur einen Teil der Daten sehen.
Die grundlegende Syntax lautet:
SELECT spaltenname
FROM tabellenname
WHERE bedingung;
spaltenname: Gibt an, welche Spalten du abrufen möchtest. Mit*kannst du alle Spalten auswählen.tabellenname: Die Tabelle, aus der die Daten stammen.bedingung: Die Bedingung, die erfüllt sein muss, damit eine Zeile in das Ergebnis aufgenommen wird.
Beispiel 1: Einfache Filterung
Angenommen, du möchtest alle Benutzer abrufen, die älter als 22 Jahre sind:
SELECT *
FROM benutzer
WHERE alter > 22;
Die Ergebnistabelle enthält nur die Zeilen, in denen der Wert der Spalte alter größer als 22 ist. Alle anderen Datensätze werden automatisch ausgeschlossen.
Beispiel 2: Filterung nach mehreren Bedingungen
Du kannst mehrere Bedingungen kombinieren, z. B. mit AND oder OR:
SELECT name, email
FROM benutzer
WHERE alter > 22 AND gruppe = 1;
Hier werden nur Benutzer angezeigt, die älter als 22 Jahre sind und der Gruppe 1 angehören.
Warum ist WHERE so wichtig?
- Gezielte Datenabfrage: Du entscheidest, welche Zeilen relevant sind.
- Performance: Abfragen mit WHERE sind oft schneller, weil unnötige Daten nicht geladen werden.
- Flexibilität: Bedingungen lassen sich beliebig kombinieren (z. B.
AND,OR, Vergleichsoperatoren,LIKE,IN).
2.5 ORDER BY-Klausel
Die ORDER BY-Klausel wird verwendet, um die Ergebnisse einer SQL-Abfrage geordnet zurückzugeben.
Standardmäßig liefert SQL die Daten in der Reihenfolge, wie sie in der Tabelle gespeichert sind. Mit ORDER BY
kannst du die Daten nach einer oder mehreren Spalten sortieren – entweder aufsteigend (ASC)
oder absteigend (DESC).
Die grundlegende Syntax lautet:
SELECT spaltenname
FROM tabellenname
ORDER BY spaltenname ASC|DESC;
spaltenname: Die Spalte, nach der sortiert werden soll.ASC: Aufsteigende Reihenfolge (klein → groß, A → Z). Dies ist die Standardoption.DESC: Absteigende Reihenfolge (groß → klein, Z → A).
Beispiel 1: Nach einer Spalte aufsteigend sortieren
SELECT *
FROM benutzer
ORDER BY name ASC;
Die Datenbank liefert alle Benutzer, sortiert nach name von A bis Z.
Beispiel 2: Nach einer Spalte absteigend sortieren
SELECT *
FROM benutzer
ORDER BY alter DESC;
Jetzt werden die Benutzer nach alter von höchstem zu niedrigstem Wert sortiert.
Beispiel 3: Nach mehreren Spalten sortieren
SELECT name, gruppe, alter
FROM benutzer
ORDER BY gruppe ASC, alter DESC;
Zuerst werden die Benutzer nach gruppe aufsteigend sortiert, innerhalb jeder Gruppe nach alter absteigend. Dies ist besonders praktisch für komplexe Sortierungen, z. B. für Reports oder Übersichten.
Tipps für die Praxis
- Bei numerischen Spalten erfolgt die Reihenfolge nach Zahlenwerten.
- Bei Textspalten wird alphabetisch sortiert.
- Standardmäßig ist die Sortierung
ASC, du musst ASC also nur zur besseren Lesbarkeit angeben. ORDER BYkann in Kombination mitWHEREundLIMITverwendet werden, um gefilterte Ergebnisse sortiert und begrenzt zurückzugeben.
2.6 LIMIT-Klausel
Die LIMIT-Klausel wird verwendet, um die Anzahl der Zeilen zu begrenzen, die eine SQL-Abfrage zurückgibt. Sie ist besonders nützlich, wenn du nur eine bestimmte Anzahl von Ergebnissen anzeigen möchtest oder große Tabellen effizient durchsuchen willst, ohne unnötig viele Daten zu laden.
Die grundlegende Syntax lautet:
SELECT spaltenname
FROM tabellenname
LIMIT anzahl;
spaltenname: Die Spalten, die du abrufen möchtest (z. B.*für alle Spalten).tabellenname: Die Tabelle, aus der die Daten stammen.anzahl: Die maximale Anzahl der zurückgegebenen Zeilen.
Beispiel 1: Die ersten 10 Zeilen abrufen
SELECT *
FROM benutzer
LIMIT 10;
Die Datenbank liefert nur die ersten zehn Zeilen der Tabelle zurück. Ohne vorherige Sortierung erfolgt die Ausgabe in der Reihenfolge, wie die Zeilen in der Tabelle gespeichert sind.
Beispiel 2: Kombination mit ORDER BY
SELECT *
FROM benutzer
ORDER BY alter DESC
LIMIT 5;
Zuerst werden die Benutzer nach alter absteigend sortiert, anschließend nur die fünf ältesten Benutzer angezeigt. Dies eignet sich z. B. für Top-Listen oder Ranglisten.
Beispiel 3: Kombination mit WHERE
SELECT name, gruppe
FROM benutzer
WHERE gruppe = 'Admin'
ORDER BY name ASC
LIMIT 3;
Nur Benutzer aus der Gruppe 'Admin' werden berücksichtigt, alphabetisch nach name sortiert
und die ersten drei Ergebnisse zurückgegeben.
Hinweise
LIMIT ist besonders praktisch, wenn nur ein Teil der Ergebnisse benötigt wird. In Kombination mit ORDER BY
lassen sich gezielt die Top-N-Werte abrufen. Beachte: In einigen SQL-Dialekten wie MS SQL Server wird anstelle von LIMIT
TOP verwendet.
2.7 Kombination der Klauseln
In SQL kannst du die Klauseln WHERE, ORDER BY und LIMIT kombinieren, um präzise und effiziente Abfragen zu erstellen. Jede Klausel übernimmt dabei eine bestimmte Funktion: WHERE filtert die Daten nach bestimmten Bedingungen, ORDER BY sortiert die gefilterten Daten nach einer oder mehreren Spalten, und LIMIT begrenzt die Anzahl der zurückgegebenen Zeilen.
Durch die Kombination dieser Klauseln lassen sich gezielt nur die Informationen abrufen, die du wirklich benötigst, ohne unnötige Daten zu laden. Dies ist besonders praktisch, wenn du große Tabellen durchschaust oder Top-N-Auswertungen erstellen möchtest.
Die allgemeine Syntax sieht so aus:
SELECT spaltenname
FROM tabellenname
WHERE bedingung
ORDER BY spaltenname ASC|DESC
LIMIT anzahl;
spaltenname: Die Spalten, die zurückgegeben werden sollen.tabellenname: Die Tabelle, aus der die Daten stammen.bedingung: Filterkriterien, die die zurückgegebenen Zeilen erfüllen müssen.ASC/DESC: Auf- oder absteigende Sortierung.anzahl: Maximale Anzahl der zurückgegebenen Zeilen.
Beispiel 1: Die 5 ältesten Benutzer abrufen
SELECT name
FROM benutzer
ORDER BY alter DESC
LIMIT 5;
Hier werden zunächst alle Benutzer nach Alter absteigend sortiert, sodass die ältesten zuerst erscheinen. Anschließend liefert die Abfrage nur die fünf obersten Ergebnisse.
Beispiel 2: Gefilterte Top-N-Auswahl nach Gruppe
SELECT name, email
FROM benutzer
WHERE gruppe = 1
ORDER BY alter DESC
LIMIT 3;
Nur Benutzer der Gruppe 1 werden berücksichtigt. Die Ergebnisse werden nach Alter absteigend sortiert, und es werden die drei ältesten Benutzer dieser Gruppe zurückgegeben.
Beispiel 3: Sortieren nach mehreren Kriterien
SELECT name, gruppe, alter
FROM benutzer
WHERE alter > 20
ORDER BY gruppe ASC, alter DESC
LIMIT 10;
Die Abfrage liefert alle Benutzer, die älter als 20 Jahre sind. Zunächst werden die Ergebnisse nach Gruppe aufsteigend sortiert und innerhalb jeder Gruppe nach Alter absteigend. Anschließend werden nur die obersten zehn Datensätze zurückgegeben.
Diese Kombination aus WHERE, ORDER BY und LIMIT ermöglicht sehr präzise und performante Abfragen, gerade bei größeren Tabellen oder komplexen Datenstrukturen. Die Reihenfolge der Klauseln ist dabei immer: WHERE → ORDER BY → LIMIT.
2.8 Zusammenfassung
In diesem Kapitel hast du die Grundlagen von SQL kennengelernt, die das Fundament für jede Arbeit mit relationalen Datenbanken bilden. Du hast gesehen, dass SQL-Befehle einer klaren Syntax folgen und dass es wichtig ist, die Struktur einer Abfrage korrekt zu gestalten, damit die Datenbank deine Anweisungen versteht.
Mit der SELECT-Anweisung hast du gelernt, wie du gezielt bestimmte Spalten oder alle Spalten einer Tabelle abrufen kannst. Die FROM-Klausel gibt an, aus welcher Tabelle die Daten stammen, während die WHERE-Klausel es dir ermöglicht, die Ergebnisse nach bestimmten Bedingungen zu filtern. So kannst du nur die Zeilen auswählen, die für deine Abfrage relevant sind.
Darüber hinaus hast du erfahren, wie die ORDER BY-Klausel dazu dient, die abgerufenen Daten nach einer oder mehreren Spalten sortiert auszugeben – sowohl in aufsteigender als auch in absteigender Reihenfolge. Mit der LIMIT-Klausel kannst du schließlich die Anzahl der zurückgegebenen Zeilen einschränken, was besonders bei großen Tabellen oder Top-N-Auswertungen hilfreich ist.
Schließlich hast du gelernt, dass sich WHERE, ORDER BY und LIMIT kombinieren lassen, um präzise und effiziente Abfragen zu erstellen. Durch das Zusammenspiel dieser grundlegenden Werkzeuge kannst du schnell und sicher Daten aus einer Datenbank abfragen, sortieren und filtern, sodass du in der Praxis genau die Informationen erhältst, die du benötigst.
Im nächsten Kapitel werden wir darauf aufbauen und tiefer in das Filtern, Sortieren und Arbeiten mit komplexeren Abfragen eintauchen, um noch gezieltere Datenanalysen durchführen zu können.
Quiz zu den Grundlagen von SQL
Teste dein Wissen mit diesen Fragen:
Welcher Befehl wird verwendet, um Daten aus einer Tabelle abzurufen?
a)
FILTERb)
SELECTc)
GET
Wie filterst du Daten, die einem bestimmten Kriterium entsprechen?
a) Mit
ORDER BYb) Mit
LIMITc) Mit
WHERE
Wie sortierst du Daten in absteigender Reihenfolge?
a)
ORDER BY spaltenname ASCb)
ORDER BY spaltenname DESCc)
ORDER BY spaltenname LIMIT
Antworten:
1. b) SELECT
2. c) WHERE
3. b) ORDER BY spaltenname DESC
Was ist eine SQL-Datenbank? Einfach erklärt für Einsteiger
Jeden Tag fallen unzählige Daten an – Kundendaten, Bestellungen, Blogartikel...
Artikel lesenKommentare in SQL: Warum und wie du deine Abfragen dokumentierst
Du öffnest eine SQL-Abfrage von vor sechs Monaten – und...
Artikel lesenIst SQL eine Programmiersprache? Ein Blick auf die Definition
Bevor wir entscheiden, ob SQL eine Programmiersprache ist, lohnt es...
Artikel lesenLIMIT und OFFSET: Warum du nicht immer alle Ergebnisse auf einmal sehen willst
Stell dir vor, du würdest jedes Mal eine 1000-seitige PDF-Datei...
Artikel lesenWarum deine SQL-Abfrage keine Ergebnisse liefert – 5 häufige Ursachen
Du hast deine SQL-Abfrage geschrieben, sie läuft ohne Fehlermeldung durch...
Artikel lesenINNER JOIN vs. OUTER JOIN vs. CROSS JOIN – anschaulich erklärt mit Beispielen
JOINs sind ein zentrales Werkzeug in SQL, mit dem Daten...
Artikel lesenSQL für Data Analysts: Typische Business-Fragen in SQL übersetzt
In Unternehmen entstehen täglich zahlreiche Fragen, die die Geschäftsleitung, das...
Artikel lesenCTEs verstehen: Dein Einstieg in die SQL-WITH-Klausel
SQL-Abfragen können schnell unübersichtlich werden, besonders wenn du mehrere Verschachtelungen...
Artikel lesen