Um eine Tabelle in SQLite zu löschen, verwenden Sie DROP TABLE
Aussage.
Durch Ausführen dieser Anweisung wird die Tabelle aus der Datenbank entfernt. Es wird vollständig aus dem Datenbankschema und der Plattendatei entfernt. Daher kann die Tabelle nicht wiederhergestellt werden. Alle mit der Tabelle verknüpften Indizes und Trigger werden ebenfalls gelöscht.
Eine grundlegende DROP TABLE
Erklärung
Sehen wir uns zuerst die Tabellen in unserer Datenbank an:
sqlite> .tables Albums Albums1 Albums2 Artists
Wir haben ein paar freie Tabellen aus unseren vorherigen Übungen, also lassen Sie uns eine fallen.
Der folgende Code löscht Albums1 Tabelle:
DROP TABLE Albums1;
Nachdem wir diesen Code ausgeführt haben, können wir unsere Tabellen erneut überprüfen:
sqlite> .tables Albums Albums2 Artists
Die Tabelle wurde entfernt.
Überprüfen Sie, ob die Tabelle existiert
Sie können den IF EXISTS
verwenden -Klausel, um zu prüfen, ob die Tabelle existiert, bevor SQLite versucht, sie zu löschen.
Dadurch werden Fehler vermieden, die normalerweise generiert würden, wenn die Tabelle nicht existiert.
Versuchen wir zunächst, eine nicht vorhandene Tabelle ohne zu löschen mit dem IF EXISTS
Klausel. Lassen Sie uns versuchen, das zu löschen, was wir gerade gelöscht haben:
DROP TABLE Album1;
Daraus ergibt sich Folgendes:
sqlite> DROP TABLE Album1; Error: no such table: Album1
OK, also versuchen wir es noch einmal, aber diesmal mit dem IF EXISTS
Klausel:
DROP TABLE IF EXISTS Album1;
Ergebnis:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
Es ist also nichts passiert. Wichtig, es wurde kein Fehler ausgegeben.
Lösche eine Tabelle mit Primärschlüsseln
Was passiert also, wenn wir versuchen, eine Tabelle zu löschen, die Primärschlüssel enthält, und es gibt Fremdschlüssel, die darauf verweisen?
Versuchen wir es:
DROP TABLE Artists;
Ergebnis:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
Wie erwartet scheiterte es. Wenn Sie also eine Tabelle löschen müssen, müssen Sie zuerst alle zugehörigen Tabellen löschen.
SQLite versucht tatsächlich, die Daten zu löschen, bevor es eine Tabelle löscht. Es ist diese Löschaktion, die bewirkt, dass alle Fremdschlüssel-Einschränkungsprüfungen stattfinden.
SQLite löscht auch alle Indizes oder Trigger, die der Tabelle zugeordnet sind, bevor es den Löschvorgang (und den anschließenden Löschvorgang) ausführt.