sql >> Database >  >> RDS >> SQLite

Een tabel maken in SQLite

Om een ​​tabel in SQLite te maken, gebruik je de CREATE TABLE verklaring.

Deze verklaring accepteert de tabelnaam, de kolomnamen en hun definities, evenals enkele andere opties.

Voorbeeld

Hier is een eenvoudig voorbeeld.

CREATE TABLE Products(
  ProductId INTEGER PRIMARY KEY AUTOINCREMENT, 
  ProductName TEXT NOT NULL,
  Price NUMERIC
);

Dus in dit geval Products is de naam van de tabel en bevat drie kolommen; ProductId , ProductName , en Price .

In dit voorbeeld heb ik het gegevenstype van elke kolom toegevoegd, evenals enkele beperkingen, maar deze zijn allemaal optioneel.

Geef het schema op

De naam van de tabel kan (optioneel) worden voorafgegaan door de schemanaam. Wanneer u dit doet, moet de schemanaam ofwel main . zijn , temp , of de naam van een bijgevoegde database.

Dus ik zou dit in plaats daarvan kunnen doen:

CREATE TABLE Store.Products(
  ProductId, 
  ProductName,
  Price
);

In dit geval Store is de naam van de bijgevoegde database waarin ik de tabel wil maken.

De kolomnaam kan worden gevolgd door het gegevenstype en eventuele beperkingen.

Gegevenstype is optioneel

Ja, u leest het goed - het gegevenstype is eigenlijk optioneel.

SQLite gebruikt dynamisch typen en daarom is het gegevenstype van een waarde gekoppeld aan de waarde zelf, niet aan de container (kolom). Dit in tegenstelling tot de meeste andere SQL-databasesystemen, waar u het gegevenstype moet specificeren wanneer u de kolom maakt.

Dus ik zou dit in plaats daarvan kunnen doen:

CREATE TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Beperkingen en andere opties

U hebt de mogelijkheid om eventuele beperkingen of andere opties op te geven die u op elke kolom wilt toepassen. Deze omvatten het volgende:

  • DEFAULT clausule. Dit specificeert een standaardwaarde of uitdrukking voor elke kolom in de tabel.
  • De COLLATE om de naam op te geven van een sorteervolgorde die als standaardsorteervolgorde voor de kolom moet worden gebruikt. De standaardwaarde is BINAIR.
  • PRIMARY KEY clausule. U kunt optioneel specificeren dat een kolom een ​​primaire sleutel is. Zowel enkele kolom als samengestelde (meerdere kolommen) primaire sleutels worden ondersteund in SQLite.
  • SQLite ondersteunt ook UNIQUE, NOT NULL, CHECK en FOREIGN KEY-beperkingen.
  • Een gegenereerde kolombeperking (ook wel een berekende kolom genoemd). Dit zijn kolommen waarvan de waarden een functie zijn van andere kolommen in dezelfde rij.
  • Of de tafel een WITHOUT ROWID is tafel. Dit is een techniek voor prestatie-optimalisatie die de kolom "rowid" weglaat, een speciale kolom die standaard door SQLite wordt gebruikt. Zie de SQLite-documentatie voor meer informatie over deze techniek.

Tijdelijke tabellen

U kunt specificeren dat een tabel een tijdelijke tabel is met behulp van de TEMP of TEMPORARY trefwoord.

Als u een van deze trefwoorden gebruikt, moeten deze worden ingevoegd tussen de CREATE en TABLE .

Hier is een voorbeeld:

CREATE TEMP TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Je kunt ook de temp . toevoegen schema als je wilt.

Zie Een tijdelijke tabel maken voor meer voorbeelden van het maken van tijdelijke tabellen in SQLite.

Maak een tabel van een andere tafel

U kunt ook een CREATE TABLE ... AS SELECT . gebruiken statement om een ​​nieuwe tabel te maken op basis van een andere tabel. Wanneer u dit doet, wordt de nieuwe tabel gevuld met de gegevens uit de SELECT statement (die gegevens uit een andere tabel of tabellen selecteert).

Hier is een eenvoudig voorbeeld:

CREATE TABLE Store.Products2 AS 
SELECT * FROM Store.Products;

In dit voorbeeld wordt een nieuwe tabel gemaakt met de naam Products2 en vult het met alle gegevens van de Products tafel.

Alle kolomnamen zijn hetzelfde als in de originele tabel.

Het is belangrijk op te merken dat tabellen die op deze manier zijn gemaakt geen PRIMAIRE SLEUTEL hebben en geen enkele vorm van beperkingen. De standaardwaarde van elke kolom is ook NULL . Ook is de standaard sorteervolgorde voor elke kolom van de nieuwe tabel BINAIR.


  1. Is het een slecht ontwerp om arrays in een database te gebruiken?

  2. PostgreSQL JOIN met arraytype met volgorde van arrayelementen, hoe te implementeren?

  3. SQL-update top1 rijquery

  4. Salesforce-gegevens vertalen naar EDI-indeling