MySQL AUTO_INCREMENT avec exemples

Qu’est-ce que l’incrémentation automatique ?

Auto Increment est une fonction qui fonctionne sur les types de données numériques. Il génère automatiquement des valeurs numériques séquentielles chaque fois qu'un enregistrement est inséré dans une table pour un champ défini comme incrémentation automatique.

Quand utiliser l’incrémentation automatique ?

Dans la leçon sur la normalisation des bases de données, nous avons vu comment les données peuvent être stockées avec une redondance minimale, en stockant les données dans de nombreuses petites tables, liées les unes aux autres à l'aide de clés primaires et étrangères.

MySQL AUTO_INCREMENT avec exemples

Une clé primaire doit être unique car elle identifie de manière unique une ligne dans une base de données. Mais comment pouvons-nous garantir que la clé primaire est toujours unique ? L'une des solutions possibles serait d'utiliser une formule pour générer la clé primaire, qui vérifie l'existence de la clé, dans la table, avant d'ajouter des données. Cela peut bien fonctionner, mais comme vous pouvez le voir, l'approche est complexe et pas infaillible. Afin d'éviter une telle complexité et de garantir que la clé primaire est toujours unique, nous pouvons utiliser MySQLFonctionnalité d'incrémentation automatique de 's pour générer des clés primaires. L'incrémentation automatique est utilisée avec le type de données INT. Le type de données INT prend en charge les valeurs signées et non signées. Les types de données non signés ne peuvent contenir que des nombres positifs. En tant que bonne pratique, il est recommandé de définir la contrainte non signée sur la clé primaire d'incrémentation automatique.

Syntaxe d'incrémentation automatique

Examinons maintenant le script utilisé pour créer la table des catégories de films.

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

Notez le « AUTO_INCREMENT » sur le champcategory_id. Cela provoque la génération automatique de l’ID de catégorie chaque fois qu’une nouvelle ligne est insérée dans le tableau. Il n'est pas fourni lors de l'insertion de données dans le tableau, MySQL le génère.

Par défaut, la valeur de départ de AUTO_INCREMENT est 1, et elle sera incrémentée de 1 pour chaque nouvel enregistrement

Examinons le contenu actuel de la table des catégories.

SELECT * FROM `categories`;

Exécuter le script ci-dessus dans MySQL Le workbench contre myflixdb nous donne les résultats suivants.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Insérons maintenant une nouvelle catégorie dans le tableau des catégories.

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

Exécution du script ci-dessus sur myflixdb dans MySQL établi nous donne les résultats suivants présentés ci-dessous.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Notez que nous n'avons pas fourni l'identifiant de la catégorie. MySQL il l'a généré automatiquement pour nous car l'identifiant de catégorie est défini comme incrément automatique.

Si vous souhaitez obtenir le dernier identifiant d'insertion généré par MySQL, vous pouvez utiliser la fonction LAST_INSERT_ID pour ce faire. Le script ci-dessous obtient le dernier identifiant généré.

SELECT LAST_INSERT_ID();

L'exécution du script ci-dessus donne le dernier numéro d'incrémentation automatique généré par la requête INSERT. Les résultats sont montrés plus bas.

MySQL INCRÉMENTATION AUTOMATIQUE

Résumé

  • L'attribut d'incrémentation automatique, lorsqu'il est spécifié sur une colonne avec des types de données numériques, génère des nombres séquentiellement chaque fois qu'une nouvelle ligne est ajoutée à la base de données.
  • L'incrément automatique est couramment utilisé pour générer des clés primaires.
  • Le type de données défini sur l'incrément automatique doit être suffisamment grand pour accueillir de nombreux enregistrements. La définition de TINYINT comme type de données pour un champ d'incrémentation automatique limite le nombre d'enregistrements pouvant être ajoutés à la table à 255 uniquement, car toute valeur au-delà ne serait pas acceptée par le type de données TINYINT.
  • Il est considéré comme une bonne pratique de spécifier la contrainte non signée sur les clés primaires à incrémentation automatique pour éviter d'avoir des nombres négatifs.
  • Lorsqu'une ligne est supprimée d'une table, son identifiant incrémenté automatiquement n'est pas réutilisé. MySQL continue de générer de nouveaux numéros de manière séquentielle.
  • Par défaut, la valeur de départ de AUTO_INCREMENT est 1, et elle sera incrémentée de 1 pour chaque nouvel enregistrement
  • Pour laisser la séquence AUTO_INCREMENT commencer avec une autre valeur, utilisez AUTO_INCREMENT = 10