SQLite Créer, modifier, supprimer une table avec des exemples

⚡ Résumé intelligent

SQLite La gestion des tables repose sur trois commandes de définition de données : CREATE TABLE pour définir une table, ALTER TABLE pour la renommer ou ajouter et modifier des colonnes, et DROP TABLE pour la supprimer complètement de la base de données.

  • (I.e. Créer des tables : L'instruction CREATE TABLE définit le nom d'une table et ses colonnes, et chaque colonne nécessite un nom et un type de données.
  • 🛡️ Évitez les erreurs : L'ajout de IF NOT EXISTS à CREATE TABLE, ou de IF EXISTS à DROP TABLE, évite les échecs lorsqu'une table existe déjà ou est manquante.
  • Modifier les tables : ALTER TABLE renomme une table, ajoute une colonne et, dans les versions modernes, permet de renommer une table et d'y ajouter une colonne. SQLite renomme ou supprime une seule colonne.
  • 🇧🇷 Tables de dépôt : La commande DROP TABLE supprime définitivement une table ainsi que toutes les lignes et tous les index qui lui sont associés.
  • 📑 Copier les tableaux : CREATE TABLE AS SELECT crée une nouvelle table à partir des colonnes et des lignes renvoyées par une requête.
  • 🤖 Aide à l'IA : Les assistants IA de conversion texte-SQL et GitHub Copilot génèrent des instructions CREATE, ALTER et DROP à partir d'invites en langage clair.

SQLite Créer une table de dépôt modifiée

Les sections ci-dessous expliquent comment créer des tables, modifier leur structure et supprimer des tables. SQLite3 avec des exemples, couvrant les commandes CREATE TABLE, ALTER TABLE et DROP TABLE.

SQLite Créer une table

Syntaxe

Vous trouverez ci-dessous la syntaxe de l'instruction CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Pour créer une table, vous devez utiliser la requête « CREATE TABLE » comme suit :

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Entre les deux parenthèses après le nom de la table, vous définissez les colonnes des tables, chaque colonne doit avoir les propriétés suivantes :

  • Un nom, le nom de la colonne, il doit être unique parmi les colonnes de la table.
  • Un type de données – le type de données de la colonne.
  • Les contraintes de colonnes optionnelles seront expliquées dans les sections suivantes de ce tutoriel.

SQLite CRÉER UNE TABLE SI ELLE N'EXISTE PAS

Lorsqu'un script s'exécute plusieurs fois, une simple instruction CREATE TABLE échoue si la table existe déjà et s'arrête avec une erreur. SQLite Ce problème est résolu grâce à la clause optionnelle IF NOT EXISTS, qui crée la table uniquement lorsqu'elle est absente et ne fait rien lorsqu'elle existe déjà.

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

L'instruction ci-dessus ne génère jamais l'erreur « la table existe déjà », ce qui permet de la conserver sans risque en tête d'un script d'installation ou de migration.

Le même principe s'applique en sens inverse lors de la suppression d'une table. L'ajout de IF EXISTS à DROP TABLE évite une erreur lorsque la table a déjà été supprimée.

DROP TABLE IF EXISTS guru99;

Ces deux clauses sont courantes dans les scripts automatisés, car elles permettent d'exécuter le même fichier à plusieurs reprises sans nettoyage manuel entre les exécutions.

Drop table

Pour supprimer une table, utilisez la commande « DROP TABLE » suivie du nom de la table, comme suit :

DROP TABLE guru99;

Alter table

Vous pouvez utiliser la commande « ALTER TABLE » pour renommer une table comme suit :

ALTER TABLE guru99 RENAME TO guru100;

Pour vérifier que le nom de la table a bien été modifié, vous pouvez utiliser la commande « .tables » pour afficher la liste des tables. Le nom de la table devrait maintenant être modifié comme suit :

SQLite Résultat de la commande .tables montrant que le tableau a été renommé de guru99 à guru100.

Comme vous pouvez le constater, le nom de la table « guru99 » est changé en « guru100 » après la commande « alter table ».

SQLite ajouter des colonnes - Utilisation de la commande ALTER TABLE

Vous pouvez également utiliser la commande « ALTER TABLE » pour ajouter des colonnes :

ALTER TABLE guru100 ADD COLUMN Age INT;

Cela modifiera la table « guru100 » et y ajoutera une nouvelle colonne « Âge ».

Si aucun résultat ne s'affiche, cela signifie que la requête a réussi et que la colonne a été ajoutée. L'absence de résultat signifie que le curseur se positionnera après « sqlite> » sans texte, comme ceci :

SQLite La ligne de commande n'affiche aucune sortie après une commande ALTER TABLE ADD COLUMN réussie.

Pour vérifier que la colonne a bien été ajoutée, vous pouvez utiliser la commande « .schema guru100 ». Celle-ci affichera la définition de la table et vous devriez y voir la nouvelle colonne que nous venons d'ajouter.

SQLite Sortie .schema guru100 montrant la nouvelle colonne Âge ajoutée à la table

SQLite ALTER TABLE : Renommer et supprimer une colonne

Outre l'ajout d'une colonne, les versions modernes de SQLite Il est également possible de renommer une seule colonne et d'en supprimer une. La fonction de renommage de colonne est disponible depuis [date manquante]. SQLite 3.25, et cela met à jour le nom à l'intérieur de la définition de la table ainsi que dans chaque index, déclencheur et vue qui fait référence à la colonne.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Pour supprimer une colonne, SQLite 3.35 et versions ultérieures prennent en charge une clause DROP COLUMN directe :

ALTER TABLE guru100 DROP COLUMN Age;

Il est impossible de supprimer une colonne qui fait partie d'une clé primaire, d'une contrainte d'unicité ou d'un index. SQLite Pour les versions dépourvues de l'option DROP COLUMN, la solution classique consiste à créer une nouvelle table avec les colonnes souhaitées, à copier les lignes, à supprimer l'ancienne table, puis à renommer la nouvelle.

Comment copier un tableau dans SQLite Utilisation de CREATE TABLE AS SELECT

Il arrive qu'on ait besoin d'une copie d'une table, soit comme sauvegarde avant une modification risquée, soit comme point de départ pour une nouvelle table. SQLite construit cela en une seule étape avec CREATE TABLE AS SELECT, qui crée une nouvelle table dont les colonnes proviennent d'une requête et la remplit avec les lignes renvoyées par cette requête.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

La nouvelle table « guru100_backup » reçoit les mêmes colonnes et toutes les lignes de « guru100 ». Pour ne copier que certaines lignes, ajoutez une clause WHERE à la requête SELECT :

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

Il est important de noter que la commande CREATE TABLE AS SELECT copie les noms, les types et les données des colonnes, mais pas les clés primaires, les autres contraintes ni les index. Vous devrez les ajouter vous-même à la nouvelle table si celle-ci doit respecter les mêmes règles que la table d'origine.

SQLite Insérer une valeur dans un tableau

Pour insérer des valeurs dans une table, nous utilisons l'instruction « INSERT INTO » comme suit :

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

Vous pouvez omettre les noms de colonnes après le nom de la table et l'écrire comme suit :

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

Dans ce cas, où vous oubliez les noms de colonnes des tableaux, le nombre de valeurs insérées doit être exactement le même nombre de colonnes du tableau. Ensuite chaque valeur sera insérée dans la colonne de correspondance. Par exemple, pour l'instruction d'insertion suivante :

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

Le résultat de cette déclaration sera le suivant :

SQLite Instruction INSERT INTO ajoutant une ligne de valeurs dans la table guru100

  • La valeur 1 sera insérée dans la colonne « id ».
  • La valeur « Mike » sera insérée dans la colonne « Nom », et
  • La valeur 25 sera insérée dans la colonne « Âge ».

INSERT… Instruction DEFAULT VALUES

Vous pouvez remplir le tableau avec les valeurs par défaut des colonnes en une seule fois, comme suit :

INSERT INTO Tablename DEFAULT VALUES;

Si une colonne n'accepte ni les valeurs nulles ni les valeurs par défaut, vous obtiendrez une erreur indiquant que la contrainte NOT NULL a été violée pour cette colonne. Voici un exemple :

SQLite Erreur lors de l'insertion de valeurs par défaut : la contrainte NOT NULL a échoué.

FAQ

Non. SQLite Il n'existe pas de commande TRUNCATE TABLE. Pour vider une table, exécutez DELETE FROM nom_de_la_table sans clause WHERE, puis utilisez VACUUM pour récupérer l'espace disque libéré. ​​La structure de la table et ses colonnes sont conservées.

La commande DELETE supprime les lignes d'une table tout en conservant la table, ses colonnes et sa structure, prêtes pour de nouvelles données. La commande DROP TABLE supprime la table entière, y compris sa définition, ses index et ses déclencheurs ; la table n'existe donc plus dans la base de données.

À la SQLite En ligne de commande, la commande `.tables.` affiche le nom de chaque table. En SQL, interrogez la table de schéma intégrée avec la requête `SELECT name FROM sqlite_master WHERE type = 'table';`, qui fonctionne également depuis toute application connectée à la base de données.

Une table temporaire est créée avec CREATE TEMP TABLE ou CREATE TEMPORARY TABLE. Elle n'est visible que par la connexion à la base de données qui l'a créée et est supprimée automatiquement lorsque cette connexion se ferme, ce qui la rend utile pour stocker les résultats intermédiaires de requêtes.

Oui. Une clé primaire est facultative. SQLite. Lorsque vous en omettez un, SQLite Chaque ligne conserve un identifiant caché de 64 bits. Les contraintes de colonne telles que PRIMARY KEY, UNIQUE et NOT NULL sont facultatives lors de la définition d'une table.

Par défaut non. SQLite utilise des types dynamiquesping avec l'affinité de type, une colonne accepte des valeurs de presque tous les types, quel que soit son type déclaré. Pour imposer une vérification stricte, créez la table en tant que table STRICT, ajoutée dans SQLite 3.37.

Oui. Les assistants SQL basés sur l'IA transforment une description en langage naturel de vos données en instructions CREATE TABLE avec colonnes, types de données et clés. La précision est encore meilleure lorsque vous fournissez au modèle votre schéma existant, car il réutilise alors les noms de tables et de colonnes réels.

Oui. Copilote GitHub suggère ALTER TABLE, DROP TABLE, et autres SQLite déclarations en ligne dans des éditeurs tels que VS CodeIl lit vos fichiers de migration et vos requêtes existantes, de sorte que ses suggestions correspondent aux noms réels de vos tables et colonnes.

Résumez cet article avec :