Zurück zur Artikelliste Artikel
11 Leseminuten

SQL-Syntax

Im heutigen Artikel geben wir Ihnen einen Überblick über die grundlegende SQL-Syntax, wobei wir uns auf die SELECT, INSERT INTO, UPDATEund DELETE Anweisungen.

SQL ist eine Programmiersprache, die speziell für die Kommunikation mit Datenbanken entwickelt wurde. Sie ermöglicht es Ihnen, Daten aus einer Datenbank abzurufen oder die Daten in der Datenbank zu ändern.

Wie jede Programmiersprache hat auch SQL eine Syntax, an die Sie sich halten müssen. Mit anderen Worten, es gibt Regeln für die Befehle, die Sie befolgen müssen, wenn Ihr Code funktionieren soll.

Die SQL-Syntax lernt man am besten mit den grundlegenden SQL-Anweisungen. Sie können dann darauf aufbauen und komplexeren Code nach denselben Regeln schreiben. Wenn Sie neu in SQL sind, empfehlen wir Ihnen unseren SQL für Anfänger interaktiven Kurs. Er behandelt die Anweisung SELECT und andere sehr gebräuchliche SQL-Anweisungen und -Funktionen. Sie lernen zum Beispiel, wie Sie Daten mit der WHERE Klausel und logischen Operatoren filtern können. In diesem Kurs lernen Sie, Daten aus mehreren Tabellen mit JOINzu kombinieren, Daten mit GROUP BY zu Gruppen zusammenzufassen und Abfrageergebnisse mit den Set-Operatoren UNION, UNION ALL und INTERSECT zu kombinieren.

Mit mehr als 120 interaktiven Übungen, SQL für Anfänger ist ein guter Start, um den Umgang mit SQL zu lernen. Sie können auch unseren kostenlosen SQL für Anfänger Spickzettel verwenden, während Sie diesen Artikel lesen.

Wir haben bereits mehrfach über Datenbanken gesprochen. Was ist so spezifisch an ihnen, dass sie eine eigene Programmiersprache brauchen?

Wie sind Datenbanken organisiert?

Die Datenbanken bestehen aus einer oder mehreren Tabellen. Der Zweck der Tabellen ist es, Daten in einer organisierten Weise zu speichern. Das Schlüsselwort ist hier "organisiert", was bedeutet, dass die Tabellen eine bestimmte Struktur haben müssen.

Jede Tabelle hat einen Namen, um die Tabellen innerhalb der Datenbank zu unterscheiden - vorzugsweise einen Namen, der so beschreibend ist, dass man weiß, welche Daten in dieser Tabelle gespeichert sind.

Jede Tabelle hat Spalten, die auch Namen haben. Die Spalten definieren die Daten in der Tabelle, während die Spaltennamen sie beschreiben. Die Tabellen haben auch Zeilen, in denen die Daten gespeichert werden. Die folgende Tabelle heißt zum Beispiel employees. Sie hat die folgenden Spalten:

  • id - Die ID-Nummer des Mitarbeiters.
  • first_name - Der Vorname des Mitarbeiters.
  • last_name - Der Nachname des Mitarbeiters.
  • salary - Das Gehalt des Mitarbeiters.
  • department - Die Abteilung des Mitarbeiters.

Die Daten der Tabelle sind unten dargestellt:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Wie Sie sehen können, hat die Tabelle zehn Zeilen, wobei jede Zeile Daten für einen Mitarbeiter enthält.

Allgemeine SQL-Anweisungen und ihre Syntax

Um SQL zur Abfrage von Daten zu verwenden, benötigen Sie SQL-Anweisungen. Es handelt sich dabei um Befehle an die Datenbank, die eine Aufgabe entsprechend dem Code ausführt.

Die SQL-Anweisungen enden normalerweise mit einem Semikolon. Dies ist kein zwingender Bestandteil der Syntax: Die Abfrage funktioniert auch ohne dieses Zeichen. Es ist jedoch eine gute Praxis, SQL-Anweisungen mit einem Semikolon zu beenden. Es trägt zur Lesbarkeit des Codes bei, vor allem, wenn Sie viel Code schreiben. In den folgenden Beispielen werden wir uns an diese Praxis halten.

Schauen wir uns nun einige der gebräuchlichsten SQL-Anweisungen an.

SELECT-Anweisung

Die Anweisung SELECT wird für den Abruf von Daten aus Datenbanken verwendet. Sie können alle Daten oder nur die Informationen in bestimmten Spalten auswählen. Sie können mit dieser Anweisung auch Daten filtern, Berechnungen und Datenaggregationen durchführen und andere Dinge tun.

Sehen wir uns nun einige der Möglichkeiten von SELECT und die Funktionsweise seiner Syntax an.

Alle Daten aus der Tabelle auswählen

Die Syntax für die Auswahl aller Daten aus der Tabelle lautet:

SELECT *
FROM table;

Zuerst schreiben Sie SELECT. Danach geben Sie an, dass Sie alle Daten auswählen wollen. Wenn wir "alle Daten" sagen, meinen wir "alle Spalten der Tabelle" - ein Sternchen (*) in der SELECT-Anweisung bewirkt genau das.

Danach müssen Sie der Datenbank mitteilen, aus welcher Tabelle Sie die Daten abrufen wollen. Dies ist die zweite Zeile des Codes, die mit der FROM -Klausel beginnt. Sie kündigt an, dass die Tabelle unmittelbar nach diesem Wort angegeben wird, also schreiben Sie einfach den Namen der Tabelle.

So funktioniert es:

SELECT *
FROM employees;

Dieser Code lässt sich mit "select all columns from the table" übersetzen employees. Und genau das tut er auch!

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Bestimmte Spalten aus der Tabelle auswählen

Der einzige Unterschied zur obigen Syntax besteht darin, dass Sie bestimmte Spalten auflisten, anstatt ein Sternchen zu schreiben:

SELECT column1,
	 column2
FROM table;

Wenn Sie die Spalten auflisten, ist es wichtig, dass Sie die Spalten mit einem Komma trennen, sonst funktioniert der Code nicht.

Es ist auch wichtig zu beachten, dass nach der letzten Spalte kein Komma steht.

Es ist zwar nicht notwendig, jede Tabellenspalte in eine neue Zeile zu schreiben, aber es ist eine gute Praxis. Wir raten Ihnen, dies zu befolgen. Es hilft bei der Lesbarkeit des Codes, wenn die Anweisungen komplexer werden. Wenn Sie jede Spalte in eine eigene Zeile schreiben, ist es einfacher nachzuvollziehen, welche Spalten Sie ausgewählt haben und ob Sie einen Syntaxfehler gemacht haben - z. B. ist es einfacher festzustellen, dass Sie ein Komma zwischen den Spaltennamen vergessen haben.

Wenden wir diese Syntax auf unsere Beispieltabelle an:

SELECT first_name,
	 last_name
FROM employees;

Diese Abfrage wählt die Spalten first_name und last_name aus der Tabelle aus employees.

first_namelast_name
NancyChapman
SteveMason
KateWilliams
FrankHasbeen
HillaryAdailton
DanielJackson
SusanDeutsch
DereckVans
SamNelson
MariaLopez

Daten mit WHERE filtern

In der Anweisung SELECT können Sie andere Klauseln verwenden, z. B. WHERE.

SELECT …
FROM table
WHERE …;

Dies ist die gleiche SELECT Anweisung wie zuvor. Der einzige Unterschied besteht darin, dass Sie die Klausel WHERE schreiben, nachdem Sie die Tabelle in der Klausel FROM angegeben haben.

Mit der WHERE Klausel können Sie die zurückgegebenen Daten filtern, indem Sie eine oder mehrere Bedingungen festlegen, die erfüllt sein müssen.

Ein Beispiel:

SELECT first_name,
	 last_name,
	 salary
FROM employees
WHERE salary > 3000;

Diese Abfrage wählt den Vor- und Nachnamen der Mitarbeiter und ihr Gehalt aus. Dies sind alles Spalten aus der Tabelle employees. Ich möchte jedoch nur die Mitarbeiter anzeigen, die ein Gehalt von über 3.000 haben. Dazu schreibe ich zuerst die WHERE Klausel. Dann kommt die Bedingung: die Spalte salary muss größer als 3.000 sein.

Hier sind die Daten, die die Abfrage zurückgibt:

first_namelast_namesalary
FrankHasbeen5,711.49
HillaryAdailton3,066.52
DanielJackson3,066.52
SusanDeutsch5,039.13
DereckVans4,434.27

Es gibt fünf Angestellte mit einem Gehalt von mehr als 3.000 und sie sind alle oben aufgeführt.

Dies ist nur eine der vielen Möglichkeiten, WHERE zu verwenden. Weitere Informationen finden Sie in diesem Leitfaden zum Schreiben der WHERE-Klausel.

Gruppieren von Zeilen mit GROUP BY

Wenn Sie die GROUP BY Klausel in der SELECT Anweisung verwenden, können Sie Zeilen in Gruppen gruppieren.

SELECT …
FROM table
GROUP BY …; 

Die Syntax zeigt eine Standardanweisung SELECT. Auf die FROM -Klausel folgt die GROUP BY -Klausel, in der Sie die Spalten auflisten, nach denen die Daten gruppiert werden sollen. Die Zeilen werden nach den Daten in einer bestimmten Spalte oder Spalten gruppiert; Zeilen mit demselben Spaltenwert befinden sich in derselben Gruppe.

Eine der praktischen Anwendungen von GROUP BY ist die Zählung der Anzahl der Mitarbeiter in jeder Abteilung. Dazu müssen Sie die Spalte department auswählen und die Aggregatfunktion COUNT() verwenden, um die Anzahl der Mitarbeiter zu zählen. Wenn Sie GROUP BY verwenden, können Sie das Ergebnis nach der Abteilung gruppieren. Und schon haben Sie es: die Anzahl der Mitarbeiter nach Abteilung.

Für Beispiele, wie GROUP BY funktioniert, lesen Sie GROUP BY in SQL Explained oder 5 GROUP BY Beispiele.

Daten mit HAVING filtern

Die Klausel HAVING wird am häufigsten zusammen mit der Klausel GROUP BY verwendet. Sie erfüllt denselben Zweck wie WHERE, nur dass WHERE die Daten vor der Aggregation filtert, während HAVING die aggregierten Datensätze filtert. Aus diesem Grund müssen Sie immer HAVING nach GROUP BY schreiben:

SELECT …
FROM table
GROUP BY …
HAVING …;

Die Bedingungen in HAVING werden auf dieselbe Weise geschrieben wie in der Klausel WHERE. Da die Daten nach der Aggregation gefiltert werden, sind Aggregatfunktionen in HAVING erlaubt.

Wie verwenden Sie dies im wirklichen Leben? Ein gängiges Beispiel ist die Berechnung des Durchschnittsgehalts nach Abteilung und die anschließende Verwendung von HAVING, um nur die Abteilungen mit einem Durchschnittsgehalt über einem bestimmten Betrag anzuzeigen.

Ausführliche Beispiele für die Funktionsweise dieser Klausel finden Sie unter Die SQL HAVING-Klausel erklärt.

Abfrageergebnisse mit ORDER BY sortieren

Eine der am häufigsten verwendeten Klauseln in der Anweisung SELECT ist ORDER BY. Sie wird verwendet, um die Abfrageergebnisse in aufsteigender oder absteigender Reihenfolge zu sortieren. Je nach Datentyp kann dies bedeuten, dass die Daten vom höchsten zum niedrigsten Wert, vom ältesten zum neuesten Datum oder alphabetisch sortiert werden.

Mit der ORDER BY Klausel können Sie die Ergebnisse nach einer oder mehreren Spalten sortieren.

Hier ist die Syntax:

SELECT …
FROM table
…
ORDER BY …;

Eine einfache und praktische Anwendung von ORDER BY ist die Sortierung von Mitarbeitern nach ihrem Gehalt, vom höchsten zum niedrigsten.

Ausführliche Beispiele für diese Klausel finden Sie in How to Sort Records with the ORDER BY Clause.

INSERT INTO-Anweisung

Dieser Befehl wird verwendet, um Daten in die Datenbank einzufügen. Hier ist die Syntax:

INSERT INTO table (column1, column2, …)
VALUES (value1, value2, …);

Nach INSERT INTO müssen Sie den Namen der Tabelle angeben, in die Sie die Daten einfügen möchten. Dann schreiben Sie in die Klammern die Spalten, die Sie ändern wollen. Wie in SELECT werden die Spalten durch ein Komma getrennt.

Danach folgt der Befehl VALUES. In die Klammern schreiben Sie die Werte, die Sie in die Tabelle einfügen wollen. Auch diese Werte werden durch Kommas getrennt. Schauen Sie sich dieses Beispiel an:

INSERT INTO employees (id, first_name, last_name)
VALUES (11, 'Obi-Wan', 'Kenobi');

Diese Abfrage fügt Daten in die Tabelle employees. Sie ändert die Spalten id, first_name und last_name. Die neue Zeile, die in die Tabelle eingefügt wird, ist für den Mitarbeiter Obi-Wan Kenobi, dessen ID 11 ist.

Wenn Sie alle Spalten dieser Tabelle auswählen würden (Sie wissen, wie das geht!), würden Sie folgendes Ergebnis erhalten:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Accounting
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Da ich die Werte für Gehalt und Abteilung für den neuen Mitarbeiter nicht festgelegt habe, sind sie leer. Die Datenbank verwendet NULL, um leere Werte zu markieren.

UPDATE-Anweisung

UPDATE wird verwendet, um Daten in der Tabelle zu ändern. Dieser Befehl wird normalerweise mit der WHERE Klausel ausgeführt. Andernfalls würden alle Daten in der Tabelle geändert werden.

Die Syntax sieht wie folgt aus:

UPDATE table
SET column1 = value1, column2 = value2, …
WHERE …;

Nachdem Sie UPDATE geschrieben haben, geben Sie den Namen der Tabelle an, die aktualisiert werden soll. Dann kommt der Befehl SET. Er setzt die Spalten auf einen bestimmten Wert. Mit anderen Worten: Sie geben an, welche Spalte mit welchen Werten aktualisiert werden soll. Sie verwenden ein Gleichheitszeichen, um die Werte zu setzen, wobei jede Spalte und ihr neuer Wert durch ein Komma getrennt werden. WHERE dient dazu, die Aktualisierungen nur auf die Werte zu beschränken, die eine bestimmte Bedingung erfüllen.

Hier ist ein Beispiel für die Aktualisierung der Werte in der Tabelle employees:

UPDATE employees
SET department = 'Sales'
WHERE id = 2;

In dieser Abfrage gebe ich an, dass ich die Tabelle aktualisieren möchte employees. Dann möchte ich in der Spalte department für den Mitarbeiter mit der ID 2 den Wert "Verkauf" haben. Dieser Mitarbeiter ist von der Buchhaltung in den Verkauf gewechselt; deshalb ist diese Aktualisierung erforderlich.

Hier ist die aktualisierte Tabelle:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting
11Obi-WanKenobiNULLNULL

Das Ergebnis zeigt, dass Steve Mason jetzt im Vertrieb tätig ist.

DELETE-Anweisung

Wie Sie wahrscheinlich schon erraten haben, wird dieser Befehl zum Löschen von Daten aus der Tabelle verwendet.

Auch hier spielt die WHERE Klausel eine wichtige Rolle. Sie erlaubt es, nur bestimmte Daten zu löschen, d. h. Daten, die die Bedingung in der Klausel WHERE erfüllen. Wenn Sie WHERE weglassen, löscht die Anweisung DELETE alle Daten aus der Tabelle.

Dies ist die Syntax:

DELETE
FROM table
WHERE …;

Nach DELETE folgt die Klausel FROM. Ähnlich wie die Anweisung SELECT enthält sie den Namen der Tabelle, aus der Sie Daten löschen wollen. Danach müssen Sie die WHERE Klausel schreiben, wenn Sie nicht alle Daten in der Tabelle löschen wollen.

Hier ist ein praktisches Beispiel:

DELETE 
FROM employees
WHERE id = 11;

Diese Abfrage löscht alle Zeilen, deren ID 11 ist. Hier ist das Ergebnis:

idfirst_namelast_namesalarydepartment
1NancyChapman1,486.13Operations
2SteveMason2,886.25Sales
3KateWilliams1,158.44Accounting
4FrankHasbeen5,711.49Operations
5HillaryAdailton3,066.52Operations
6DanielJackson3,066.52Sales
7SusanDeutsch5,039.13Operations
8DereckVans4,434.27Sales
9SamNelson2,044.19Accounting
10MariaLopez1,995.32Accounting

Ich habe den neuen Mitarbeiter Obi-Wan Kenobi aus der Tabelle gelöscht.

Von der SQL-Syntax zu SQL-Anweisungen

Um in SQL - wie in jeder natürlichen Sprache - eine Aussage zu machen, müssen Sie die Syntax kennen. Dies öffnet viele sonst verschlossene Türen.

Wie Sie gesehen haben, können Sie, wenn Sie nur die Grundlagen kennen, Daten aus der Tabelle auswählen, sie filtern und gruppieren. Dies ist die Anweisung SELECT, und die Kenntnis dieses grundlegenden Befehls ist nur ein Anfang. Es gibt noch einige andere gängige SQL-Anweisungen, mit denen Sie Daten in die Tabelle einfügen, sie ändern oder löschen können.

Jede Sprache lernt man schneller, wenn man sie jeden Tag benutzt. Bei SQL bedeutet dies, dass Sie regelmäßig Code schreiben müssen. Es könnte schwierig sein, Gelegenheiten zu finden, SQL zu "sprechen", aber keine Sorge. Im Kurs gibt es viele davon. SQL für Anfänger Kurs. Versuchen Sie es einfach. Ehe Sie sich versehen, werden Sie SQL fließend beherrschen!