SQLite
 sql >> Database >  >> RDS >> SQLite

Crea una tabella in SQLite

Per creare una tabella in SQLite, usa CREATE TABLE dichiarazione.

Questa istruzione accetta il nome della tabella, i nomi delle colonne e le relative definizioni, nonché alcune altre opzioni.

Esempio

Ecco un esempio di base.

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

Quindi in questo caso, Products è il nome della tabella e contiene tre colonne; ProductId , ProductName e Price .

In questo esempio, ho aggiunto il tipo di dati di ciascuna colonna e alcuni vincoli, ma sono tutti facoltativi.

Specifica lo schema

Il nome della tabella può (facoltativamente) essere preceduto dal nome dello schema. Quando si esegue questa operazione, il nome dello schema deve essere main , temp o il nome di un database allegato.

Quindi potrei fare questo invece:

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

In questo caso, Store è il nome del database allegato in cui voglio creare la tabella.

Il nome della colonna può essere seguito dal tipo di dati e da eventuali vincoli.

Il tipo di dati è facoltativo

Sì, avete letto bene:il tipo di dati è in realtà facoltativo.

SQLite utilizza la tipizzazione dinamica e quindi il tipo di dati di un valore è associato al valore stesso, non al suo contenitore (colonna). Ciò è in contrasto con la maggior parte degli altri sistemi di database SQL, in cui è necessario specificare il tipo di dati quando si crea la colonna.

Quindi potrei fare questo invece:

CREATE TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Vincoli e altre opzioni

Hai la possibilità di specificare eventuali vincoli o altre opzioni che desideri applicare a ciascuna colonna. Questi includono quanto segue:

  • DEFAULT clausola. Specifica un valore o un'espressione predefinita per ciascuna colonna della tabella.
  • Il COLLATE clausola per specificare il nome di una sequenza di confronto da utilizzare come sequenza di confronto predefinita per la colonna. Il valore predefinito è BINARY.
  • PRIMARY KEY clausola. È possibile specificare facoltativamente che una colonna è una chiave primaria. Sia le chiavi primarie a colonna singola che quelle composite (colonne multiple) sono supportate in SQLite.
  • SQLite supporta anche i vincoli UNIQUE, NOT NULL, CHECK e FOREIGN KEY.
  • Un vincolo di colonna generato (chiamato anche colonna calcolata). Si tratta di colonne i cui valori sono una funzione di altre colonne nella stessa riga.
  • Se la tabella è un WITHOUT ROWID tavolo. Questa è una tecnica di ottimizzazione delle prestazioni che omette la colonna "rowid" che è una colonna speciale utilizzata da SQLite per impostazione predefinita. Per ulteriori informazioni su questa tecnica, vedere la documentazione di SQLite.

Tabelle temporanee

Puoi specificare che una tabella è una tabella temporanea utilizzando il TEMP o TEMPORARY parola chiave.

Se si utilizza una di queste parole chiave, queste devono essere inserite tra CREATE e TABLE .

Ecco un esempio:

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

Puoi anche aggiungere il temp schema se lo desideri.

Vedere Come creare una tabella temporanea per ulteriori esempi di creazione di tabelle temporanee in SQLite.

Crea una tabella da un'altra tabella

Puoi anche usare un CREATE TABLE ... AS SELECT istruzione per creare una nuova tabella basata su un'altra tabella. Quando lo fai, la nuova tabella viene popolata con i dati da SELECT istruzione (che seleziona i dati da un'altra o più tabelle).

Ecco un esempio di base:

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

Questo esempio crea una nuova tabella denominata Products2 e lo popola con tutti i dati di Products tavolo.

Tutti i nomi delle colonne sono gli stessi della tabella originale.

È importante notare che le tabelle create in questo modo non hanno CHIAVE PRIMARIA e nessun vincolo di alcun tipo. Inoltre, il valore predefinito di ogni colonna è NULL . Inoltre, la sequenza di confronto predefinita per ogni colonna della nuova tabella è BINARY.