Löschen Sie eine Spalte in der SQLite-Datenbank
Beim Hinzufügen neuer Spalten werden Standardwerte bereitgestellt. Beim Löschen bestehender Spalten werden manchmal alle Werte gelöscht und je nach Anwendungsfall sogar gesichert.
In diesem Artikel wird anhand einiger relevanter Beispiele erläutert, wie Sie eine Spalte aus einer SQLite-Datenbanktabelle entfernen.
Löschen Sie eine Spalte aus einer SQLite-Datenbanktabelle
Wir können eine Spalte aus einer SQLite-Datenbanktabelle auf zwei Arten löschen.
Löschen Sie eine Spalte mit der Anweisung ALTER TABLE
SQL bietet eine ALTER TABLE
-Anweisung, mit der bestehende Spalten in einer bestehenden Datenbanktabelle hinzugefügt, gelöscht und geändert werden können. Im Folgenden sind die beiden uns zur Verfügung stehenden Syntaxen aufgeführt, mit denen wir eine Spalte löschen können.
Syntax:
ALTER TABLE <table_name> DROP COLUMN <column_name>;
ALTER TABLE <table_name> DROP <column_name>;
Die obigen SQL-Anweisungen löschen die Spalte column_name
aus der bestehenden Tabelle table_name
. Das Schlüsselwort DROP
gibt an, dass die Spalte bei der Ausführung gelöscht wird.
Sehen Sie sich das folgende SQL-Skript für eine Demo an.
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
age INT NOT NULL,
gender TEXT NOT NULL
);
SELECT "Before Removal";
SELECT "--------------";
SELECT name FROM PRAGMA_TABLE_INFO("students"); -- Display all names columns
ALTER TABLE students DROP COLUMN last_name; -- Removing [last_name] column
SELECT "";
SELECT "After Removal";
SELECT "-------------";
SELECT name FROM PRAGMA_TABLE_INFO("students"); -- Display all names columns
Ausgang:
Before Removal
--------------
id
first_name
last_name
age
gender
After Removal
-------------
id
first_name
age
gender
Das obige SQL-Skript erstellt eine neue Tabelle, students
, in der ausgewählten Datenbank. Als nächstes druckt es alle Spaltennamen der neu erstellten Tabelle und entfernt dann mit der Anweisung ALTER TABLE
die Spalte last_Name
.
Zuletzt druckt es wieder alle Spaltennamen. Aus der obigen Ausgabe sehen wir, dass die Spalte last_name
nicht mehr in der Tabelle existiert und die Anweisung ALTER TABLE
sie erfolgreich entfernt hat.
Löschen Sie eine Spalte, indem Sie eine neue Tabelle erstellen
Dieser Ansatz ist extrem naiv und nimmt mehr Zeit in Anspruch als der vorherige Ansatz. Die Idee ist, eine neue Tabelle mit allen neuen Spalten von Grund auf neu zu erstellen (zu löschende Spalten sind nicht Teil dieser Tabelle).
Kopieren Sie als Nächstes alle Daten aus der alten Tabelle nach Bedarf in diese neue Tabelle. Löschen oder löschen Sie schließlich die alte Tabelle und verwenden Sie die neue Tabelle nach Bedarf.
Ein Beispiel finden Sie im folgenden SQL-Skript.
-- creating the old table
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
age INT NOT NULL
);
-- inserting some data into the old table
INSERT INTO students VALUES (1, "Stefan", "Salvatore", 13);
INSERT INTO students VALUES (2, "Damon", "Salvatore", 14);
INSERT INTO students VALUES (3, "Elena", "Gilbert", 12);
INSERT INTO students VALUES (4, "Caroline", "Forbes", 12);
INSERT INTO students VALUES (5, "Bonnie", "Bennett", 13);
-- printing old table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
SELECT "";
-- creating new table
CREATE TABLE new_students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INT NOT NULL
);
-- inserting data from an old table into the new table
INSERT INTO new_students SELECT id, first_name, age FROM students;
-- printing new table
SELECT "New Students";
SELECT "--------";
SELECT * FROM new_students;
SELECT "";
-- dropping or deleting the old table
DROP TABLE students;
-- renaming the new table to the old table's name
ALTER TABLE new_students RENAME TO students;
-- printing new table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
SELECT "";
Ausgang:
Students
--------
1|Stefan|Salvatore|13
2|Damon|Salvatore|14
3|Elena|Gilbert|12
4|Caroline|Forbes|12
5|Bonnie|Bennett|13
New Students
--------
1|Stefan|13
2|Damon|14
3|Elena|12
4|Caroline|12
5|Bonnie|13
Students
--------
1|Stefan|13
2|Damon|14
3|Elena|12
4|Caroline|12
5|Bonnie|13
Das obige SQL-Skript erstellt zunächst eine Tabelle students
; es versucht, die alte Tabelle nachzuahmen. Als nächstes fügt es mit der Anweisung INSERT INTO
einige Zeilen in die neu erstellte Tabelle ein und druckt dann den Tabelleninhalt.
Nun wird eine neue Tabelle erstellt, nämlich new_students
; es ahmt die neue Tabelle nach. Beachten Sie, dass sich das Schema der Tabelle new_students
von der Tabelle students
unterscheidet; es hat nicht die Spalte last_name
.
Als nächstes werden mit der Anweisung INSERT INTO
alle Zeilen aus der Tabelle students
in new_students
eingefügt.
Beachten Sie, dass außer dem last_name
alles andere eingefügt wird. Außerdem spielt die Reihenfolge der Spalten in der SELECT
-Anweisung beim Einfügen von Daten aus einer Tabelle in eine andere eine Rolle, und nach dem Einfügen wird die neue Tabelle gedruckt.
Da wir nun die alte Tabelle nicht mehr benötigen, wird die Tabelle students
mit der Anweisung DROP TABLE
gelöscht und die Tabelle new_students
mit der Anweisung ALTER TABLE
in students
umbenannt. Abschließend wird die neue Tabelle mit dem neuen Namen students
gedruckt.