Résumé :dans ce tutoriel, vous apprendrez à créer de nouvelles tables en utilisant SQLite CREATE TABLE déclaration en utilisant diverses options.
Introduction à SQLite CREATE TABLE déclaration
Pour créer une nouvelle table dans SQLite, vous utilisez CREATE TABLE déclaration en utilisant la syntaxe suivante :
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];Code language: SQL (Structured Query Language) (sql) Dans cette syntaxe :
- Tout d'abord, spécifiez le nom de la table que vous souhaitez créer après le
CREATE TABLEmots clés. Le nom de la table ne peut pas commencer parsqlite_car il est réservé à l'usage interne de SQLite. - Deuxièmement, utilisez
IF NOT EXISTSpossibilité de créer une nouvelle table si elle n'existe pas. Tentative de création d'une table qui existe déjà sans utiliser leIF NOT EXISTSl'option entraînera une erreur. - Troisièmement, spécifiez éventuellement le
schema_nameauquel appartient la nouvelle table. Le schéma peut être la base de données principale,tempbase de données ou toute base de données attachée. - Quatrièmement, spécifiez la liste des colonnes de la table. Chaque colonne a un nom, un type de données et la contrainte de colonne. SQLite prend en charge
PRIMARY KEY,UNIQUE,NOT NULL, etCHECKcontraintes de colonne. - Cinquièmement, spécifiez les contraintes de table telles que
PRIMARY KEY,FOREIGN KEY,UNIQUE, etCHECKcontraintes. - Enfin, utilisez éventuellement le
WITHOUT ROWIDoption. Par défaut, une ligne dans une table a une colonne implicite, appeléerowid,oidou_rowid_colonne. LerowidLa colonne stocke une clé entière signée 64 bits qui identifie de manière unique la ligne à l'intérieur de la table. Si vous ne voulez pas que SQLite crée lerowidcolonne, vous spécifiez leWITHOUT ROWIDoption. Une table qui contient lerowidla colonne est connue sous le nom derowidtable. Notez que leWITHOUT ROWIDl'option n'est disponible que dans SQLite 3.8.2 ou version ultérieure.
Notez que la clé primaire d'une table est une colonne ou un groupe de colonnes qui identifient de manière unique chaque ligne de la table.
SQLite CREATE TABLE exemples
Supposons que vous deviez gérer des contacts à l'aide de SQLite.
Chaque contact dispose des informations suivantes :
- Prénom
- Nom de famille
- Téléphone
L'exigence est que l'e-mail et le téléphone doivent être uniques. De plus, chaque contact appartient à un ou plusieurs groupes, et chaque groupe peut avoir zéro ou plusieurs contacts.
Sur la base de ces exigences, nous avons proposé trois tableaux :
- Les
contactstable qui stocke les informations de contact. - Les
groupstable qui stocke les informations de groupe. - Les
contact_groupstable qui stocke la relation entre les contacts et les groupes.
Le schéma de base de données suivant illustre les tables :contacts groups , et contact_groups.
L'instruction suivante crée les contacts tableau.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);Code language: SQL (Structured Query Language) (sql) Essayez-le
Le contact_id est la clé primaire des contacts tableau.
Étant donné que la clé primaire se compose d'une colonne, vous pouvez utiliser la contrainte de colonne.
Le first_name et last_name les colonnes ont TEXT classe de stockage et ces colonnes sont NOT NULL . Cela signifie que vous devez fournir des valeurs lorsque vous insérez ou mettez à jour des lignes dans les contacts tableau.
L'email et le téléphone sont uniques donc nous utilisons le UNIQUE contrainte pour chaque colonne.
L'instruction suivante crée les groups tableau :
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql) Essayez-le
Les groups table est assez simple avec deux colonnes :group_id et name . Le group_id colonne est la colonne de clé primaire.
L'instruction suivante crée contact_groups tableau :
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);Code language: SQL (Structured Query Language) (sql) Essayez-le
Les contact_groups table a une clé primaire composée de deux colonnes :contact_id et group_id .
Pour ajouter la contrainte de clé primaire de table, vous utilisez cette syntaxe :
PRIMARY KEY (contact_id, group_id)Code language: SQL (Structured Query Language) (sql)
De plus, le contact_id et group_id sont les clés étrangères. Par conséquent, vous utilisez FOREIGN KEY contrainte de définir une clé étrangère pour chaque colonne.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql) FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)
Notez que nous en discuterons dans la FOREIGN KEY contrainte en détail dans le tutoriel suivant.
Dans ce didacticiel, vous avez appris à créer une nouvelle table avec diverses options à l'aide de SQLite CREATE TABLE déclaration.