MySQL AUTO_INCREMENT avec des exemples

Anonim

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

L'incrémentation automatique est une fonction qui fonctionne sur des 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 examiné 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.

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 nous assurer 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 la fonction d'incrémentation automatique de MySQL 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. Comme meilleure pratique, il est recommandé de définir la contrainte non signée sur la clé primaire à incrémentation automatique.

Syntaxe d'incrémentation automatique

Regardons maintenant le script utilisé pour créer le tableau 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" dans le champ category_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 la table, MySQL le génère.

Par défaut, la valeur de départ pour AUTO_INCREMENT est 1, et elle augmentera de 1 pour chaque nouvel enregistrement

Examinons le contenu actuel du tableau des catégories.

SELECT * FROM `categories`;

L'exécution du script ci-dessus dans MySQL 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');

L'exécution du script ci-dessus contre myflixdb dans MySQL Workbench nous donne les résultats suivants indiqué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 catégorie. MySQL l'a généré automatiquement pour nous car l'ID de catégorie est défini comme incrémentation automatique.

Si vous souhaitez obtenir le dernier identifiant d'insertion généré par MySQL, vous pouvez utiliser la fonction LAST_INSERT_ID pour le 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.

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 de manière séquentielle chaque fois qu'une nouvelle ligne est ajoutée dans la base de données.
  • L'incrémentation automatique est couramment utilisée 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 qui peuvent ê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 pour AUTO_INCREMENT est 1, et elle augmentera de 1 pour chaque nouvel enregistrement
  • Pour laisser la séquence AUTO_INCREMENT commencer avec une autre valeur, utilisez AUTO_INCREMENT = 10