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.
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 principal sea siempre única? Una de las posibles soluciones sería utilizar una fórmula para generar la clave principal, que compruebe la existencia de la clave en la tabla antes de añadir datos. Esto puede funcionar bien, pero como puede ver, el enfoque es complejo y no infalible. Para evitar dicha complejidad y garantizar que la clave principal sea siempre única, podemos utilizar MySQLFunción de incremento automático de 's 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 signo en la clave principal 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`;
Ejecutando el script anterior en MySQL El banco de trabajo contra myflixdb nos da los siguientes 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 MySQL banco de trabajo nos da los siguientes 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 para nosotros 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, puedes 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.
Resum
- 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