MySQL AUTO_INCREMENT con ejemplos

¿Qué es el incremento automático?

El incremento automático es una función que opera con tipos de datos numéricos. Genera automáticamente valores numéricos secuenciales cada vez que se inserta un registro en una tabla para un campo definido como incremento automático.

¿Cuándo se utiliza el incremento automático?

En la lección sobre normalización de bases de datos, vimos cómo se pueden almacenar datos con una redundancia mínima, almacenándolos en muchas tablas pequeñas, relacionadas entre sí mediante claves primarias y externas.

MySQL AUTO_INCREMENT con ejemplos

Una clave principal debe ser única ya que identifica de forma única una fila en una base de datos. Pero, ¿cómo podemos asegurarnos de que la clave primaria sea siempre única? Una de las posibles soluciones sería utilizar una fórmula para generar la clave principal, que verifique la existencia de la clave en la tabla, antes de agregar datos. Esto puede funcionar bien, pero como puede ver, el enfoque es complicado.plex y no infalible. Para evitar tales complexidad y para garantizar que la clave principal sea siempre única, podemos usar la función de incremento automático de MySQL para generar claves principales. El incremento automático se utiliza con el tipo de datos INT. El tipo de datos INT admite valores con y sin signo. Los tipos de datos sin signo solo pueden contener números positivos. Como práctica recomendada, se recomienda definir la restricción sin firmar en la clave primaria de incremento automático.

Sintaxis de incremento automático

Veamos ahora el guión utilizado para crear la tabla de categorías de películas.

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

Observe el "AUTO_INCREMENT" en el campo categor_id. Esto hace que el ID de categoría se genere automáticamente cada vez que se inserta una nueva fila en la tabla. No se suministra al insertar datos en la tabla, MySQL lo genera.

De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementará en 1 por cada nuevo registro.

Examinemos el contenido actual de la tabla de categorías.

SELECT * FROM `categories`;

La ejecución del script anterior en MySQL Workbench contra myflixdb nos da lo siguientewing resultados.

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

Ahora insertemos una nueva categoría en la tabla de categorías.

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

Ejecutando el script anterior contra myflixdb en Banco de trabajo MySQL nos da el siguientewing resultados que se muestran a continuación.

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

Tenga en cuenta que no proporcionamos la identificación de la categoría. MySQL lo generó automáticamente porque la identificación de la categoría está definida como incremento automático.

Si desea obtener la última identificación de inserción generada por MySQL, puede usar la función LAST_INSERT_ID para hacerlo. El script que se muestra a continuación obtiene la última identificación que se generó.

SELECT LAST_INSERT_ID();

La ejecución del script anterior proporciona el último número de incremento automático generado por la consulta INSERT. Los resultados se muestran a continuación.

MySQL AUTO_INCREMENT

Resumen

  • El atributo de incremento automático cuando se especifica en una columna con tipos de datos numéricos, genera números secuencialmente cada vez que se agrega una nueva fila a la base de datos.
  • El incremento automático se usa comúnmente para generar claves primarias.
  • El tipo de datos definido en el incremento automático debe ser lo suficientemente grande para dar cabida a muchos registros. Definir TINYINT como el tipo de datos para un campo de incremento automático limita la cantidad de registros que se pueden agregar a la tabla a 255 solo, ya que cualquier valor más allá de eso no sería aceptado por el tipo de datos TINYINT.
  • Se considera una buena práctica especificar la restricción sin signo en las claves primarias de incremento automático para evitar tener números negativos.
  • Cuando se elimina una fila de una tabla, su identificación incrementada automáticamente no se reutiliza. MySQL continúa generando nuevos números secuencialmente.
  • De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementará en 1 por cada nuevo registro.
  • Para permitir que la secuencia AUTO_INCREMENT comience con otro valor, use AUTO_INCREMENT = 10