sql >> Database >  >> RDS >> SQLite

SQLite - Zet een tabel neer

Om een ​​tabel in SQLite neer te zetten, gebruik je de DROP TABLE verklaring.

Als u deze instructie uitvoert, wordt de tabel uit de database verwijderd. Het wordt volledig verwijderd uit het databaseschema en het schijfbestand. Daarom kan de tafel niet worden hersteld. Alle indices en triggers die aan de tabel zijn gekoppeld, worden ook verwijderd.

Een basis DROP TABLE Verklaring

Laten we eerst de tabellen in onze database bekijken:

sqlite> .tables
Albums   Albums1  Albums2  Artists

We hebben een paar vrije tafels van onze vorige oefeningen, dus laten we er een laten vallen.

De volgende code verwijdert de Albums1 tafel:

DROP TABLE Albums1;

Nadat we die code hebben uitgevoerd, kunnen we onze tabellen opnieuw bekijken:

sqlite> .tables
Albums   Albums2  Artists

De tafel is verwijderd.

Controleer of de tabel bestaat

U kunt de IF EXISTS . gebruiken om te controleren of de tabel bestaat voordat SQLite deze probeert te verwijderen.

Hierdoor worden fouten voorkomen die normaal zouden worden gegenereerd als de tabel niet bestaat.

Laten we eerst proberen een niet-bestaande tafel te verwijderen zonder met behulp van de IF EXISTS clausule. Laten we proberen degene die we zojuist hebben laten vallen te laten vallen:

DROP TABLE Album1;

Dit resulteert in het volgende:

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

OK, dus laten we het opnieuw proberen, maar deze keer met de IF EXISTS clausule:

DROP TABLE IF EXISTS Album1;

Resultaat:

sqlite> DROP TABLE IF EXISTS Album1;
sqlite> 

Er gebeurde dus niets. Belangrijk is dat er geen fout is opgetreden.

Laat een tabel met primaire sleutels vallen

Dus wat gebeurt er als we proberen een tabel te verwijderen die primaire sleutels bevat, en er zijn externe sleutels die ernaar verwijzen?

Laten we het proberen:

DROP TABLE Artists;

Resultaat:

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

Zoals verwacht is het mislukt. Dus als u een tafel moet verwijderen, moet u eerst alle bijbehorende tafels verwijderen.

SQLite probeert in feite de gegevens te verwijderen voordat het een tabel laat vallen. Het is deze verwijderactie die ervoor zorgt dat eventuele externe sleutelbeperkingen worden gecontroleerd.

SQLite verwijdert ook alle indices of triggers die aan de tabel zijn gekoppeld voordat het de verwijderingsbewerking (en daaropvolgende verwijdering) uitvoert.


  1. Voorkomt deze code SQL-injectie?

  2. 3 manieren om alle triggers voor een bepaalde tabel in PostgreSQL op te sommen

  3. ScaleGrid gerangschikt in top 100 cloudserviceproviders

  4. Hoe vindt u de slechtst presterende query's in SQL Server 2008?