SQLite
 sql >> Base de données >  >> RDS >> SQLite

Créer une table dans SQLite

Pour créer une table dans SQLite, utilisez le CREATE TABLE déclaration.

Cette instruction accepte le nom de la table, les noms des colonnes et leurs définitions, ainsi que d'autres options.

Exemple

Voici un exemple de base.

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

Donc dans ce cas, Products est le nom de la table et contient trois colonnes ; ProductId , ProductName , et Price .

Dans cet exemple, j'ai ajouté le type de données de chaque colonne ainsi que certaines contraintes, mais elles sont toutes facultatives.

Spécifier le schéma

Le nom de la table peut (éventuellement) être précédé du nom du schéma. Lorsque vous faites cela, le nom du schéma doit être soit main , temp , ou le nom d'une base de données attachée.

Je pourrais donc faire ceci à la place :

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

Dans ce cas, Store est le nom de la base de données attachée dans laquelle je veux créer la table.

Le nom de la colonne peut être suivi du type de données et de toute contrainte.

Le type de données est facultatif

Oui, vous avez bien lu - le type de données est en fait facultatif.

SQLite utilise le typage dynamique. Ainsi, le type de données d'une valeur est associé à la valeur elle-même, et non à son conteneur (colonne). Cela contraste avec la plupart des autres systèmes de base de données SQL, où vous devez spécifier le type de données lorsque vous créez la colonne.

Je pourrais donc faire ceci à la place :

CREATE TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Contraintes et autres options

Vous avez la possibilité de spécifier les contraintes ou autres options que vous souhaitez appliquer à chaque colonne. Il s'agit notamment des éléments suivants :

  • DEFAULT clause. Cela spécifie une valeur ou une expression par défaut pour chaque colonne de la table.
  • Le COLLATE clause pour spécifier le nom d'une séquence de classement à utiliser comme séquence de classement par défaut pour la colonne. La valeur par défaut est BINAIRE.
  • PRIMARY KEY clause. Vous pouvez éventuellement spécifier qu'une colonne est une clé primaire. Les clés primaires à colonne unique et composites (colonnes multiples) sont prises en charge dans SQLite.
  • SQLite prend également en charge les contraintes UNIQUE, NOT NULL, CHECK et FOREIGN KEY.
  • Une contrainte de colonne générée (également appelée colonne calculée). Ce sont des colonnes dont les valeurs sont fonction des autres colonnes de la même ligne.
  • Si la table est un WITHOUT ROWID table. Il s'agit d'une technique d'optimisation des performances qui omet la colonne "rowid" qui est une colonne spéciale que SQLite utilise par défaut. Pour plus d'informations sur cette technique, consultez la documentation SQLite.

Tableaux temporaires

Vous pouvez spécifier qu'une table est une table temporaire en utilisant soit le TEMP ou TEMPORARY mot-clé.

Si vous utilisez l'un de ces mots-clés, ils doivent être insérés entre le CREATE et TABLE .

Voici un exemple :

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

Vous pouvez également ajouter le temp schéma si vous le souhaitez.

Voir Comment créer une table temporaire pour plus d'exemples de création de tables temporaires dans SQLite.

Créer un tableau à partir d'un autre tableau

Vous pouvez également utiliser un CREATE TABLE ... AS SELECT pour créer une nouvelle table basée sur une autre table. Lorsque vous faites cela, la nouvelle table est remplie avec les données du SELECT instruction (qui sélectionne les données d'une ou plusieurs autres tables).

Voici un exemple de base :

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

Cet exemple crée une nouvelle table appelée Products2 et le remplit avec toutes les données des Products table.

Tous les noms de colonne sont les mêmes que dans le tableau d'origine.

Il est important de noter que les tables créées de cette manière n'ont pas de PRIMARY KEY et aucune contrainte d'aucune sorte. De plus, la valeur par défaut de chaque colonne est NULL . De plus, la séquence de classement par défaut pour chaque colonne de la nouvelle table est BINARY.