Löschen Sie eine Spalte in der SQLite-Datenbank

Vaibhav Vaibhav 21 Juni 2023
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - SQLite Database