sql >> Databasteknik >  >> RDS >> SQLite

SQLite - Släpp en tabell

För att släppa en tabell i SQLite, använd DROP TABLE uttalande.

Att köra denna sats tar bort tabellen från databasen. Den är helt borttagen från databasschemat och diskfilen. Därför kan tabellen inte återställas. Alla index och triggers associerade med tabellen raderas också.

En grundläggande DROP TABLE Uttalande

Låt oss först granska tabellerna i vår databas:

sqlite> .tables
Albums   Albums1  Albums2  Artists

Vi har ett par lediga bord från våra tidigare övningar, så låt oss släppa ett.

Följande kod tar bort Album1 tabell:

DROP TABLE Albums1;

Efter att ha kört den koden kan vi granska våra tabeller igen:

sqlite> .tables
Albums   Albums2  Artists

Tabellen har tagits bort.

Kontrollera om tabellen finns

Du kan använda koden IF EXISTS sats för att kontrollera om tabellen finns innan SQLite försöker släppa den.

Genom att göra detta förhindrar du alla fel som normalt skulle genereras om tabellen inte finns.

Låt oss först försöka släppa en icke-existerande tabell utan med hjälp av IF EXISTS klausul. Låt oss försöka släppa den vi just släppte:

DROP TABLE Album1;

Detta resulterar i följande:

sqlite> DROP TABLE Album1;
Error: no such table: Album1

OK, så låt oss försöka igen, men den här gången med IF EXISTS klausul:

DROP TABLE IF EXISTS Album1;

Resultat:

sqlite> DROP TABLE IF EXISTS Album1;
sqlite> 

Så ingenting hände. Viktigt är att inget fel skapades.

Släpp en tabell med primära nycklar

Så vad händer om vi försöker släppa en tabell som innehåller primärnycklar och det finns främmande nycklar som refererar till dem?

Låt oss prova det:

DROP TABLE Artists;

Resultat:

sqlite> DROP TABLE Artists;
Error: FOREIGN KEY constraint failed

Som väntat misslyckades det. Så om du behöver släppa en tabell måste du släppa alla tillhörande tabeller först.

SQLite försöker faktiskt ta bort data innan den släpper en tabell. Det är den här borttagningsåtgärden som gör att kontroller av främmande nycklar sker.

SQLite tar också bort alla index eller triggers som är associerade med tabellen innan den utför borttagningen (och efterföljande släpp).


  1. Inkrementell belastning i SSIS

  2. Hur kan jag initiera en MySQL-databas med schema i en Docker-behållare?

  3. MySQL 8.0 - Klienten stöder inte autentiseringsprotokoll som begärs av servern; överväg att uppgradera MySQL-klienten

  4. Kan vi använda trådning i PL/SQL?