SQLite Tabelle mit Beispielen erstellen, ändern und löschen

⚡ Intelligente Zusammenfassung

SQLite Die Tabellenverwaltung basiert auf drei Datendefinitionsbefehlen: CREATE TABLE zum Definieren einer Tabelle, ALTER TABLE zum Umbenennen oder Hinzufügen und Ändern von Spalten und DROP TABLE zum vollständigen Entfernen aus der Datenbank.

  • 📐 Tabellen erstellen: Die CREATE TABLE-Anweisung definiert einen Tabellennamen und seine Spalten, wobei jede Spalte einen Namen und einen Datentyp benötigt.
  • 🛡️ Fehler vermeiden: Durch Hinzufügen von IF NOT EXISTS zu CREATE TABLE oder IF EXISTS zu DROP TABLE werden Fehler vermieden, wenn eine Tabelle bereits existiert oder fehlt.
  • Tabellen ändern: ALTER TABLE benennt eine Tabelle um, fügt eine Spalte hinzu und in modernen Systemen SQLite Eine einzelne Spalte wird umbenannt oder gelöscht.
  • 🗑️ Drop-Tabellen: Der Befehl DROP TABLE löscht eine Tabelle sowie alle zugehörigen Zeilen und Indizes endgültig.
  • 📑 Tabellen kopieren: CREATE TABLE AS SELECT erstellt eine neue Tabelle aus den Spalten und Zeilen, die von einer Abfrage zurückgegeben werden.
  • 🤖 KI-Unterstützung: KI-gestützte Text-zu-SQL-Assistenten und GitHub Copilot generieren CREATE-, ALTER- und DROP-Anweisungen aus einfachen englischen Eingabeaufforderungen.

SQLite Tabelle erstellen, löschen

In den folgenden Abschnitten wird gezeigt, wie man Tabellen erstellt, deren Struktur ändert und Tabellen per Drag & Drop einfügt. SQLite3 mit Beispielen, die die Befehle CREATE TABLE, ALTER TABLE und DROP TABLE behandeln.

SQLite Tabelle erstellen

Syntax

Nachfolgend finden Sie die Syntax der CREATE TABLE-Anweisung.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Um eine Tabelle zu erstellen, verwenden Sie die Abfrage „CREATE TABLE“ wie folgt:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

In den beiden Klammern nach dem Tabellennamen definieren Sie die Spalten der Tabelle, jede Spalte sollte folgende Eigenschaften haben:

  • Ein Name, der Spaltenname, der unter den Spalten der Tabelle eindeutig sein sollte.
  • Ein Datentyp – der Spaltendatentyp.
  • Optionale Spaltenbeschränkungen, wie wir in den späteren Abschnitten dieses Tutorials erläutern werden.

SQLite CREATE TABLE IF NOT EXISTS

Wenn ein Skript mehr als einmal ausgeführt wird, schlägt eine einfache CREATE TABLE-Anweisung fehl, wenn die Tabelle bereits existiert, und stoppt mit einer Fehlermeldung. SQLite Dies wird mit der optionalen IF NOT EXISTS-Klausel gelöst, die die Tabelle nur dann erstellt, wenn sie fehlt, und nichts unternimmt, wenn sie bereits vorhanden ist.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

Die obige Anweisung löst niemals den Fehler „Tabelle existiert bereits“ aus, weshalb sie bedenkenlos am Anfang eines Setup- oder Migrationsskripts stehen kann.

Das gleiche Prinzip funktioniert umgekehrt, wenn Sie eine Tabelle löschen. Durch Hinzufügen von IF EXISTS zu DROP TABLE wird ein Fehler vermieden, wenn die Tabelle bereits gelöscht ist:

DROP TABLE IF EXISTS guru99;

Beide Klauseln sind in automatisierten Skripten üblich, da sie es ermöglichen, dieselbe Datei wiederholt auszuführen, ohne dass zwischen den Ausführungen eine manuelle Bereinigung erforderlich ist.

Tabelle löschen

Um eine Tabelle zu löschen, verwenden Sie den Befehl „DROP TABLE“ gefolgt vom Tabellennamen wie folgt:

DROP TABLE guru99;

Tabelle ändern

Sie können den Befehl „ALTER TABLE“ verwenden, um eine Tabelle wie folgt umzubenennen:

ALTER TABLE guru99 RENAME TO guru100;

Um zu überprüfen, ob der Tabellenname geändert wurde, können Sie den Befehl „.tables“ verwenden, um die Liste der Tabellen anzuzeigen. Der Tabellenname sollte sich nun wie folgt geändert haben:

SQLite Die Ausgabe von .tables zeigt, dass die Tabelle von guru99 in guru100 umbenannt wurde.

Wie Sie sehen können, wurde der Tabellenname „guru99“ nach dem Befehl „alter table“ in „guru100“ geändert.

SQLite Spalten hinzufügen – mit dem Befehl ALTER TABLE

Sie können auch den Befehl „ALTER TABLE“ verwenden, um Spalten hinzuzufügen:

ALTER TABLE guru100 ADD COLUMN Age INT;

Dadurch wird die Tabelle „guru100“ verändert und eine neue Spalte „Alter“ hinzugefügt.

Wenn keine Ausgabe angezeigt wird, bedeutet dies, dass die Anweisung erfolgreich ausgeführt wurde und die Spalte hinzugefügt wurde. Keine Ausgabe bedeutet, dass sich der Cursor hinter „sqlite>“ befindet, ohne dass anschließend Text folgt, wie hier gezeigt:

SQLite Die Befehlszeile zeigt nach erfolgreichem ALTER TABLE ADD COLUMN keine Ausgabe an.

Um jedoch zu überprüfen, ob die Spalte hinzugefügt wurde, können wir den Befehl „.schema guru100“ verwenden. Dadurch erhalten Sie die Tabellendefinition, und Sie sollten die soeben hinzugefügte neue Spalte sehen:

SQLite Die Ausgabe von .schema guru100 zeigt die neue Spalte „Alter“, die der Tabelle hinzugefügt wurde.

SQLite ALTER TABLE: Spalte umbenennen und löschen

Neben dem Hinzufügen einer Spalte bieten moderne Versionen von SQLite Man kann auch einzelne Spalten umbenennen und andere entfernen. Die Möglichkeit, Spalten umzubenennen, besteht seit … SQLite 3.25, und es aktualisiert den Namen sowohl in der Tabellendefinition als auch in jedem Index, Trigger und jeder Ansicht, die auf die Spalte verweist.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Um eine Spalte zu entfernen, SQLite 3.35 und spätere Versionen unterstützen eine direkte DROP COLUMN-Klausel:

ALTER TABLE guru100 DROP COLUMN Age;

Eine Spalte kann nicht gelöscht werden, wenn sie Teil eines Primärschlüssels, einer eindeutigen Einschränkung oder eines Index ist. SQLite Bei Versionen ohne DROP COLUMN besteht die klassische Vorgehensweise darin, eine neue Tabelle mit den gewünschten Spalten zu erstellen, die Zeilen zu kopieren, die alte Tabelle zu löschen und schließlich die neue umzubenennen.

Wie kopiert man eine Tabelle in SQLite Mit CREATE TABLE AS SELECT

Manchmal benötigt man eine Kopie einer Tabelle, entweder als Sicherungskopie vor einer riskanten Änderung oder als Ausgangspunkt für eine neue Tabelle. SQLite Dies wird in einem Schritt mit CREATE TABLE AS SELECT erstellt, wodurch eine neue Tabelle erstellt wird, deren Spalten aus einer Abfrage stammen, und die mit den von dieser Abfrage zurückgegebenen Zeilen gefüllt wird.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Die neue Tabelle „guru100_backup“ übernimmt dieselben Spalten und alle Zeilen aus „guru100“. Um nur bestimmte Zeilen zu kopieren, fügen Sie der SELECT-Anweisung eine WHERE-Klausel hinzu:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Wichtig ist, dass CREATE TABLE AS SELECT zwar Spaltennamen, Datentypen und Daten kopiert, aber keine Primärschlüssel, andere Einschränkungen oder Indizes. Diese müssen Sie der neuen Tabelle selbst hinzufügen, wenn die Kopie dieselben Regeln wie das Original erfüllen soll.

SQLite Wert in eine Tabelle einfügen

Um Werte in eine Tabelle einzufügen, verwenden wir die Anweisung „INSERT INTO“ wie folgt:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Sie können die Spaltennamen nach dem Tabellennamen weglassen und ihn wie folgt schreiben:

INSERT INTO Tablename VALUES(value1, value2, ….);

In einem solchen Fall, in dem Sie die Spaltennamen aus den Tabellen weglassen, muss die Anzahl der eingefügten Werte genau der Anzahl der Spalten der Tabelle entsprechen. Dann wird jeder Wert in die entsprechende Spalte eingefügt. Zum Beispiel für die folgende Einfügeanweisung:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Das Ergebnis dieser Anweisung wird wie folgt sein:

SQLite INSERT INTO-Anweisung zum Hinzufügen einer Zeile mit Werten zur Tabelle guru100

  • In die Spalte „id“ wird der Wert 1 eingefügt.
  • Der Wert 'Mike' wird in die Spalte „Name“ eingefügt, und
  • In die Spalte „Alter“ wird der Wert 25 eingefügt.

INSERT … DEFAULT VALUES-Anweisung

Sie können die Tabelle wie folgt gleichzeitig mit den Standardwerten für die Spalten füllen:

INSERT INTO Tablename DEFAULT VALUES;

Wenn eine Spalte weder NULL-Werte noch Standardwerte zulässt, erhalten Sie für diese Spalte die Fehlermeldung „NOT NULL-Einschränkung fehlgeschlagen“. Beispiel:

SQLite Fehler aufgrund einer nicht gültigen NOT NULL-Bedingung beim Einfügen von Standardwerten

Häufig gestellte Fragen

Nein. SQLite Es gibt keinen Befehl TRUNCATE TABLE. Um eine Tabelle zu leeren, führen Sie DELETE FROM Tabellenname ohne WHERE-Klausel aus und verwenden Sie anschließend VACUUM, um den freigegebenen Speicherplatz freizugeben. Die Tabellenstruktur und ihre Spalten bleiben erhalten.

DELETE entfernt Zeilen aus einer Tabelle, die Tabelle selbst, ihre Spalten und ihre Struktur bleiben jedoch für neue Daten erhalten. DROP TABLE löscht die gesamte Tabelle inklusive Definition, Indizes und Triggern, sodass die Tabelle nicht mehr in der Datenbank existiert.

Im SQLite In der Kommandozeile gibt der Befehl `.tables` alle Tabellennamen aus. Per SQL kann die integrierte Schematabelle mit `SELECT name FROM sqlite_master WHERE type = 'table';` abgefragt werden. Dies funktioniert auch von jeder Anwendung aus, die mit der Datenbank verbunden ist.

Eine temporäre Tabelle wird mit CREATE TEMP TABLE oder CREATE TEMPORARY TABLE erstellt. Sie ist nur für die Datenbankverbindung sichtbar, die sie erstellt hat, und wird automatisch gelöscht, sobald diese Verbindung geschlossen wird. Daher eignet sie sich gut zum Speichern von Zwischenergebnissen von Abfragen.

Ja. Ein Primärschlüssel ist optional in SQLiteWenn Sie eine weglassen, SQLite Es wird weiterhin eine versteckte 64-Bit-Rowid gespeichert, die jede Zeile identifiziert. Spaltenbeschränkungen wie PRIMARY KEY, UNIQUE und NOT NULL sind bei der Tabellendefinition optional.

Standardmäßig nein. SQLite verwendet dynamische Typenping mit Typaffinität, sodass eine Spalte Werte fast jedes Typs akzeptiert, unabhängig von ihrem deklarierten Typ. Um eine strikte Typprüfung zu erzwingen, erstellen Sie die Tabelle als STRICT-Tabelle, die in hinzugefügt wird. SQLite 3.37

Ja. KI-gestützte Text-zu-SQL-Assistenten wandeln eine Beschreibung Ihrer Daten in natürlicher Sprache in CREATE TABLE-Anweisungen mit Spalten, Datentypen und Schlüsseln um. Die Genauigkeit verbessert sich, wenn Sie dem Modell Ihr bestehendes Schema zur Verfügung stellen, da es dann die tatsächlichen Tabellen- und Spaltennamen wiederverwendet.

Ja. GitHub-Copilot schlägt ALTER TABLE, DROP TABLE und andere vor. SQLite Inline-Anweisungen in Editoren wie z. B. VS CodeEs liest Ihre Migrationsdateien und bestehenden Abfragen, sodass die Vervollständigungen mit Ihren tatsächlichen Tabellen- und Spaltennamen übereinstimmen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: