SQLite Tabel met voorbeelden maken, wijzigen en neerzetten

⚡ Slimme samenvatting

SQLite Tabelbeheer is gebaseerd op drie datadefinitiecommando's: CREATE TABLE om een ​​tabel te definiëren, ALTER TABLE om deze te hernoemen of kolommen toe te voegen en te wijzigen, en DROP TABLE om deze volledig uit de database te verwijderen.

  • 📐 Tabellen maken: De CREATE TABLE-instructie definieert een tabelnaam en de bijbehorende kolommen, waarbij elke kolom een ​​naam en een gegevenstype nodig heeft.
  • 🛡️ Vermijd fouten: Door IF NOT EXISTS toe te voegen aan CREATE TABLE, of IF EXISTS aan DROP TABLE, worden fouten voorkomen wanneer een tabel al bestaat of ontbreekt.
  • Tabellen wijzigen: De opdracht ALTER TABLE hernoemt een tabel, voegt een kolom toe en in moderne versies SQLite Hernoemt of verwijdert een enkele kolom.
  • 🗑️ Verwijder tabellen: Met het commando DROP TABLE wordt een tabel, inclusief alle rijen en indexen die erbij horen, permanent verwijderd.
  • 📑 Kopieer tabellen: Met CREATE TABLE AS SELECT wordt een nieuwe tabel gemaakt op basis van de kolommen en rijen die door een query worden geretourneerd.
  • 🤖 AI-assistentie: AI-assistenten die tekst naar SQL converteren en GitHub Copilot genereren CREATE-, ALTER- en DROP-instructies op basis van eenvoudige Engelse prompts.

SQLite Maak een Alter Drop-tabel aan

De onderstaande secties laten zien hoe u tabellen kunt maken, hun structuur kunt wijzigen en tabellen kunt verwijderen. SQLite3 met voorbeelden, waarin de commando's CREATE TABLE, ALTER TABLE en DROP TABLE aan bod komen.

SQLite Maak een tabel

Syntaxis

Hieronder vindt u de syntaxis van de instructie CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Om een ​​tabel te maken, gebruikt u de query "CREATE TABLE" als volgt:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Binnen de twee haakjes na de tabelnaam definieert u de kolommen van de tabellen. Elke kolom moet de volgende eigenschappen hebben:

  • Een naam, de kolomnaam, deze moet uniek zijn onder de kolommen van de tabel.
  • Een gegevenstype – het gegevenstype van de kolom.
  • Optionele kolombeperkingen, zoals we in latere delen van deze handleiding zullen uitleggen.

SQLite MAAK TABEL ALS NIET BESTAAT

Als een script meer dan eens wordt uitgevoerd, mislukt een eenvoudige CREATE TABLE-instructie als de tabel al bestaat en stopt het met een foutmelding. SQLite Dit wordt opgelost met de optionele IF NOT EXISTS-clausule, die de tabel alleen aanmaakt als deze ontbreekt en niets doet als deze al bestaat.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

De bovenstaande instructie geeft nooit de foutmelding "tabel bestaat al", waardoor deze veilig bovenaan een installatie- of migratiescript kan worden geplaatst.

Hetzelfde principe werkt ook omgekeerd wanneer je een tabel verwijdert. Door IF EXISTS toe te voegen aan DROP TABLE voorkom je een foutmelding wanneer de tabel al verwijderd is:

DROP TABLE IF EXISTS guru99;

Beide clausules komen vaak voor in geautomatiseerde scripts, omdat ze ervoor zorgen dat hetzelfde bestand herhaaldelijk kan worden uitgevoerd zonder handmatige opschoning tussen de uitvoeringen.

Laat de tafel vallen

Om een ​​tabel te verwijderen, gebruikt u de opdracht "DROP TABLE" gevolgd door de tabelnaam, zoals hieronder weergegeven:

DROP TABLE guru99;

Tabel wijzigen

Je kunt de opdracht "ALTER TABLE" gebruiken om een ​​tabel als volgt te hernoemen:

ALTER TABLE guru99 RENAME TO guru100;

Om te controleren of de tabelnaam is gewijzigd, kunt u de opdracht ".tables" gebruiken om de lijst met tabellen weer te geven. De tabelnaam zou nu als volgt gewijzigd moeten zijn:

SQLite De uitvoer van .tables laat zien dat de tabel is hernoemd van guru99 naar guru100.

Zoals je ziet, wordt de tabelnaam "guru99" na het commando "alter table" gewijzigd in "guru100".

SQLite kolommen toevoegen - Met behulp van de opdracht ALTER TABLE

Je kunt ook de opdracht "ALTER TABLE" gebruiken om kolommen toe te voegen:

ALTER TABLE guru100 ADD COLUMN Age INT;

Dit zal de tabel "guru100" wijzigen en een nieuwe kolom "Leeftijd" eraan toevoegen.

Als je geen uitvoer ziet, betekent dit dat de instructie succesvol was en de kolom is toegevoegd. Geen uitvoer betekent dat de cursor na "sqlite>" staat zonder tekst erachter, zoals dit:

SQLite De opdrachtregel geeft geen uitvoer weer na een succesvolle ALTER TABLE ADD COLUMN-opdracht.

Om te controleren of de kolom is toegevoegd, kunnen we de opdracht “.schema guru100” gebruiken. Hiermee krijg je de tabeldefinitie te zien, en zou je de zojuist toegevoegde kolom moeten zien:

SQLite .schema guru100-uitvoer die de nieuwe kolom 'Leeftijd' toont die aan de tabel is toegevoegd.

SQLite ALTER TABLE: Kolom hernoemen en verwijderen

Naast het toevoegen van een kolom, omvatten moderne versies van SQLite Je kunt ook een enkele kolom hernoemen en een kolom verwijderen. Het hernoemen van een kolom is beschikbaar sinds... SQLite 3.25, en het werkt de naam bij in de tabeldefinitie, evenals in elke index, trigger en weergave die naar de kolom verwijst.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Om een ​​kolom te verwijderen, SQLite 3.35 en latere versies ondersteunen een directe DROP COLUMN-clausule:

ALTER TABLE guru100 DROP COLUMN Age;

Een kolom kan niet worden verwijderd als deze deel uitmaakt van een primaire sleutel, een unieke beperking of een index. Op oudere versies SQLite Voor versies die geen DROP COLUMN-functie hebben, is de klassieke oplossing om een ​​nieuwe tabel te maken met de gewenste kolommen, de rijen te kopiëren, de oude tabel te verwijderen en tot slot de nieuwe tabel een andere naam te geven.

Hoe kopieer je een tabel in SQLite Gebruikmakend van CREATE TABLE AS SELECT

Soms heb je een kopie van een tabel nodig, bijvoorbeeld als back-up vóór een risicovolle wijziging of als uitgangspunt voor een nieuwe tabel. SQLite Dit wordt in één stap gedaan met CREATE TABLE AS SELECT, waarmee een nieuwe tabel wordt aangemaakt waarvan de kolommen afkomstig zijn uit een query, en die vervolgens wordt gevuld met de rijen die de query retourneert.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

De nieuwe tabel “guru100_backup” ontvangt dezelfde kolommen en alle rijen van “guru100”. Om slechts enkele rijen te kopiëren, voegt u een WHERE-clausule toe aan de SELECT-query:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Een belangrijk punt om te onthouden is dat CREATE TABLE AS SELECT de kolomnamen, gegevenstypen en data kopieert, maar niet de primaire sleutels, andere beperkingen of indexen. Deze moet u zelf aan de nieuwe tabel toevoegen als de kopie dezelfde regels moet hanteren als het origineel.

SQLite Voeg waarde in een tabel in

Om waarden in een tabel in te voegen, gebruiken we de "INSERT INTO"-instructie als volgt:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

U kunt de kolomnamen na de tabelnaam weglaten en deze als volgt schrijven:

INSERT INTO Tablename VALUES(value1, value2, ….);

In een dergelijk geval, waarbij u de kolomnamen uit de tabellen weglaat, moet het aantal ingevoegde waarden hetzelfde exacte aantal kolommen van de tabel zijn. Vervolgens wordt elke waarde ingevoegd in de correspondentiekolom. Bijvoorbeeld, voor de volgende insert-instructie:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Het resultaat van deze verklaring is als volgt:

SQLite INSERT INTO-instructie die een rij waarden toevoegt aan de guru100-tabel.

  • De waarde 1 wordt in de kolom "id" ingevoegd.
  • De waarde 'Mike' wordt in de kolom 'Naam' ingevoegd, en
  • De waarde 25 wordt in de kolom 'Leeftijd' ingevoerd.

INSERT … DEFAULT VALUES-instructie

U kunt de tabel als volgt in één keer vullen met de standaardwaarden voor de kolommen:

INSERT INTO Tablename DEFAULT VALUES;

Als een kolom geen null-waarde of standaardwaarde toestaat, krijgt u een foutmelding met de tekst "NOT NULL-beperking mislukt" voor die kolom. Bijvoorbeeld:

SQLite Foutmelding 'NOT NULL-beperking mislukt' bij het invoegen van standaardwaarden.

Veelgestelde vragen

Nee. SQLite Er bestaat geen TRUNCATE TABLE-opdracht. Om een ​​tabel leeg te maken, voert u DELETE FROM table_name uit zonder WHERE-clausule en gebruikt u vervolgens VACUUM om de vrijgekomen schijfruimte terug te winnen. De tabelstructuur en de kolommen blijven behouden.

Met DELETE worden rijen uit een tabel verwijderd, maar de tabel zelf, inclusief de kolommen en de structuur, blijft behouden voor nieuwe gegevens. DROP TABLE verwijdert de volledige tabel, inclusief de definitie, indexen en triggers, waardoor de tabel niet langer in de database bestaat.

Op de SQLite In de commandoregel print de opdracht `.tables.` alle tabelnamen. Vanuit SQL kunt u de ingebouwde schematabel opvragen met `SELECT name FROM sqlite_master WHERE type = 'table';`, wat ook werkt vanuit elke applicatie die met de database is verbonden.

Een tijdelijke tabel wordt aangemaakt met CREATE TEMP TABLE of CREATE TEMPORARY TABLE. Deze is alleen zichtbaar voor de databaseverbinding die de tabel heeft aangemaakt en wordt automatisch verwijderd wanneer die verbinding wordt verbroken. Dit maakt de tabel handig voor het opslaan van tussentijdse queryresultaten.

Ja. Een primaire sleutel is optioneel in SQLiteAls je er een weglaat, SQLite Er wordt nog steeds een verborgen 64-bits rij-ID bewaard die elke rij identificeert. Kolombeperkingen zoals PRIMARY KEY, UNIQUE en NOT NULL zijn allemaal optioneel bij het definiëren van een tabel.

Standaard niet. SQLite maakt gebruik van dynamische typing Met type-affiniteit accepteert een kolom waarden van vrijwel elk type, ongeacht het gedeclareerde type. Om strikte controle af te dwingen, maakt u de tabel aan als een STRICT-tabel, toegevoegd in SQLite 3.37.

Ja. AI-assistenten die tekst naar SQL converteren, zetten een beschrijving van uw gegevens in begrijpelijke taal om in CREATE TABLE-instructies met kolommen, gegevenstypen en sleutels. De nauwkeurigheid verbetert wanneer u het model uw bestaande schema geeft, omdat het dan de echte tabel- en kolomnamen hergebruikt.

Ja. GitHub-copiloot suggereert ALTER TABLE, DROP TABLE en andere SQLite statements inline in editors like VS CodeHet leest je migratiebestanden en bestaande query's, zodat de suggesties overeenkomen met de daadwerkelijke tabel- en kolomnamen.

Vat dit bericht samen met: