Menu

SQL Befehle: Liste gängiger SQL-Anweisungen mit Beispielen

Die SQL Befehle, die du täglich brauchst, gruppiert nach ihrer Aufgabe (DDL, DML, DQL und TCL), jeweils mit einem Beispiel, das du in SQLite ausführen kannst.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Die SQL Befehle im Überblick

SQL Befehle lassen sich nach ihrer Aufgabe in einige Gruppen einteilen. Die Tabelle zeigt die, die du am häufigsten brauchst, und jeder Abschnitt unten führt einen davon aus.

BefehlGruppeWas er macht
CREATE TABLEDDLLegt eine neue Tabelle mit ihren Spalten an
ALTER TABLEDDLFügt eine Spalte hinzu, benennt sie um oder benennt eine Tabelle um
DROP TABLEDDLLöscht eine Tabelle mit allen Zeilen
INSERTDMLFügt neue Zeilen hinzu
UPDATEDMLÄndert Werte in bestehenden Zeilen
DELETEDMLEntfernt Zeilen
SELECTDQLLiest Zeilen, gefiltert mit WHERE und sortiert mit ORDER BY
BEGIN, COMMIT, ROLLBACKTCLFasst Änderungen zusammen, sodass sie gemeinsam gelingen oder scheitern

DDL steht für Data Definition Language, DML für Data Manipulation Language, DQL für Data Query Language und TCL für Transaction Control Language. Die Namen sind weniger wichtig als die Aufteilung: DDL ändert die Form der Datenbank, DML ändert, was in ihr steht.

CREATE TABLE: Eine Tabelle anlegen

CREATE TABLE gibt der Tabelle einen Namen und führt ihre Spalten mit Typen und Regeln auf. Jeder andere Befehl auf dieser Seite braucht eine Tabelle, mit der er arbeiten kann.

Die Seite zu CREATE TABLE behandelt Regeln wie NOT NULL, UNIQUE und DEFAULT.

INSERT: Zeilen hinzufügen

INSERT INTO fügt eine oder mehrere Zeilen hinzu. Nenne die Spalten und dann die Werte in derselben Reihenfolge.

Die Spalte id hat sich selbst gefüllt: Ein INTEGER PRIMARY KEY bekommt die nächste Nummer, wenn du ihn weglässt. Mehr dazu unter INSERT.

SELECT: Zeilen lesen

SELECT ist der Befehl, den du am häufigsten schreibst. Wähle die Spalten, filtere Zeilen mit WHERE und sortiere sie mit ORDER BY.

Nur Zeilen, die die WHERE-Bedingung erfüllen, kommen zurück, die höchste Note zuerst. Die Details stehen unter SELECT-Grundlagen und WHERE.

UPDATE: Zeilen ändern

UPDATE setzt neue Werte in Zeilen, die schon existieren. Die WHERE-Klausel bestimmt, welche Zeilen das sind; lässt du sie weg, ändert sich jede Zeile.

Wenn du nicht sicher bist, welche Zeilen eine WHERE-Klausel trifft, führe sie zuerst als SELECT aus. Die Seite UPDATE zeigt weitere Muster.

DELETE: Zeilen entfernen

DELETE FROM entfernt die Zeilen, auf die seine WHERE-Klausel passt. Wie bei UPDATE betrifft es jede Zeile, wenn die Klausel fehlt.

Chens Zeile ist weg, die anderen bleiben unverändert. Siehe DELETE.

ALTER TABLE und DROP TABLE: Eine Tabelle ändern oder entfernen

ALTER TABLE ändert eine bestehende Tabelle, ohne ihre Zeilen zu verlieren. DROP TABLE entfernt die Tabelle vollständig.

Eine neue Spalte ist in bestehenden Zeilen NULL, bis du sie füllst. ALTER und DROP TABLE listet auf, was SQLite erlaubt.

JOIN: Tabellen verbinden

Ein JOIN liest Zeilen aus zwei Tabellen gleichzeitig und ordnet sie über eine gemeinsame Spalte einander zu.

Boris hat keine Einschreibungen, deshalb lässt ein INNER JOIN ihn weg. Ein LEFT JOIN würde ihn behalten, mit leerem Kurs.

GROUP BY: Zeilen zusammenfassen

GROUP BY fasst Zeilen mit demselben Wert zu einer Zeile zusammen, und eine Aggregatfunktion wie COUNT oder AVG fasst jede Gruppe zusammen.

Aggregatfunktionen und GROUP BY und HAVING gehen weiter.

BEGIN, COMMIT und ROLLBACK: Änderungen bündeln

Eine Transaktion lässt mehrere Änderungen als eine zählen. COMMIT behält sie alle; ROLLBACK macht sie alle rückgängig.

Die Überweisung wurde mit COMMIT bestätigt und die zweite Änderung zurückgerollt, deshalb hat Ada am Ende 70 und Boris 80. Transaktionen erklärt, wann du sie einsetzen solltest.

Wo SQLite sich unterscheidet

Die Befehle auf dieser Seite sind Standard-SQL, und was du hier lernst, gilt auch in MySQL und PostgreSQL. Die ausführbaren Beispiele sind aber für SQLite geschrieben, und in den größeren Datenbanken ändern sich drei Details:

  • Tabellen auflisten. Die Beispiele lesen sqlite_master, die eigene Schematabelle von SQLite. MySQL verwendet SHOW TABLES, PostgreSQL die View information_schema.tables (oder \dt in psql).
  • Automatische IDs. In SQLite nummeriert eine als INTEGER PRIMARY KEY deklarierte Spalte neue Zeilen selbst; deshalb lassen die INSERT-Beispiele id weg. MySQL braucht AUTO_INCREMENT an der Spalte, PostgreSQL eine Identity-Spalte (GENERATED BY DEFAULT AS IDENTITY) oder SERIAL.
  • Rechte und Schemaänderungen. SQLite kennt weder GRANT noch REVOKE, weil eine SQLite-Datenbank eine einzelne Datei ohne Benutzerkonten ist, und sein ALTER TABLE kann den Typ einer Spalte nicht ändern.

Häufig gestellte Fragen

Was sind die grundlegenden SQL Befehle?

Fünf Befehle decken den größten Teil der täglichen Arbeit ab: CREATE TABLE legt eine Tabelle an, INSERT fügt Zeilen hinzu, SELECT liest sie, UPDATE ändert sie und DELETE entfernt sie. Danach kommen ALTER TABLE, DROP TABLE, JOIN, GROUP BY und die Transaktionsbefehle BEGIN, COMMIT und ROLLBACK.

Was ist der Unterschied zwischen DDL und DML?

DDL (Data Definition Language) ändert die Struktur der Datenbank: CREATE, ALTER und DROP. DML (Data Manipulation Language) ändert die Zeilen in den Tabellen: INSERT, UPDATE und DELETE. SELECT liest nur und wird deshalb oft getrennt als DQL aufgeführt.

Unterscheiden SQL Befehle zwischen Groß- und Kleinschreibung?

Nein. SELECT, select und Select funktionieren alle. Schlüsselwörter in Großbuchstaben zu schreiben ist eine Konvention, damit sie sich von Tabellen- und Spaltennamen abheben. Text in Anführungszeichen wird allerdings exakt verglichen, deshalb sind 'Ada' und 'ada' in SQLite verschiedene Strings, solange du keinen Vergleich ohne Beachtung der Groß- und Kleinschreibung verlangst.

Funktionieren diese Befehle in MySQL und PostgreSQL genauso?

Die Anweisungen sind Standard-SQL und bedeuten in allen dreien dasselbe, was du hier lernst, gilt also auch dort. Die ausführbaren Beispiele sind aber für SQLite geschrieben: Tabellen werden hier über sqlite_master aufgelistet, automatische IDs brauchen in MySQL AUTO_INCREMENT und in PostgreSQL eine Identity-Spalte, und SQLite kennt weder GRANT noch REVOKE.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S