MySQL AUTO_INCREMENT con esempi

Anonim

Cos'è l'incremento automatico?

L'incremento automatico è una funzione che opera su tipi di dati numerici. Genera automaticamente valori numerici sequenziali ogni volta che un record viene inserito in una tabella per un campo definito come incremento automatico.

Quando si utilizza l'incremento automatico?

Nella lezione sulla normalizzazione del database, abbiamo esaminato come i dati possono essere archiviati con ridondanza minima, archiviando i dati in molte piccole tabelle, correlate tra loro utilizzando chiavi primarie ed esterne.

Una chiave primaria deve essere univoca poiché identifica in modo univoco una riga in un database. Ma come possiamo garantire che la chiave primaria sia sempre unica? Una delle possibili soluzioni sarebbe quella di utilizzare una formula per generare la chiave primaria, che controlla l'esistenza della chiave, nella tabella, prima di aggiungere i dati. Questo può funzionare bene ma come puoi vedere l'approccio è complesso e non infallibile. Per evitare tale complessità e per garantire che la chiave primaria sia sempre univoca, possiamo utilizzare la funzionalità di incremento automatico di MySQL per generare le chiavi primarie. L'incremento automatico viene utilizzato con il tipo di dati INT. Il tipo di dati INT supporta valori sia con segno che senza segno. I tipi di dati senza segno possono contenere solo numeri positivi. Come best practice, si consiglia di definire il vincolo senza segno sulla chiave primaria di incremento automatico.

Sintassi dell'incremento automatico

Diamo ora un'occhiata allo script utilizzato per creare la tabella delle categorie dei film.

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

Notare "AUTO_INCREMENT" nel campo category_id. Ciò fa sì che l'ID della categoria venga generato automaticamente ogni volta che viene inserita una nuova riga nella tabella. Non viene fornito quando si inseriscono dati nella tabella, MySQL lo genera.

Per impostazione predefinita, il valore iniziale per AUTO_INCREMENT è 1 e aumenterà di 1 per ogni nuovo record

Esaminiamo il contenuto corrente della tabella delle categorie.

SELECT * FROM `categories`;

L'esecuzione dello script precedente nel workbench MySQL su myflixdb ci dà i seguenti risultati.

 
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

Inseriamo ora una nuova categoria nella tabella delle categorie.

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

L'esecuzione dello script precedente su myflixdb nel workbench MySQL ci dà i seguenti risultati mostrati di seguito.

 
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

Tieni presente che non abbiamo fornito l'ID della categoria. MySQL lo ha generato automaticamente per noi perché l'ID della categoria è definito come incremento automatico.

Se vuoi ottenere l'ultimo ID di inserimento che è stato generato da MySQL, puoi usare la funzione LAST_INSERT_ID per farlo. Lo script mostrato di seguito ottiene l'ultimo ID che è stato generato.

SELECT LAST_INSERT_ID();

L'esecuzione dello script precedente fornisce l'ultimo numero di incremento automatico generato dalla query INSERT. I risultati sono mostrati sotto.

Sommario

  • Attributo di incremento automatico quando specificato su una colonna con tipi di dati numerici, genera numeri in sequenza ogni volta che una nuova riga viene aggiunta al database.
  • L'incremento automatico è comunemente usato per generare chiavi primarie.
  • Il tipo di dati definito nell'incremento automatico dovrebbe essere sufficientemente grande da contenere molti record. La definizione di TINYINT come tipo di dati per un campo di incremento automatico limita il numero di record che possono essere aggiunti alla tabella solo a 255 poiché qualsiasi valore oltre a quello non sarebbe accettato dal tipo di dati TINYINT.
  • È considerata una buona pratica specificare il vincolo senza segno sulle chiavi primarie di incremento automatico per evitare di avere numeri negativi.
  • Quando una riga viene eliminata da una tabella, il suo ID incrementato automaticamente non viene riutilizzato. MySQL continua a generare nuovi numeri in sequenza.
  • Per impostazione predefinita, il valore iniziale per AUTO_INCREMENT è 1 e aumenterà di 1 per ogni nuovo record
  • Per far iniziare la sequenza AUTO_INCREMENT con un altro valore, utilizzare AUTO_INCREMENT = 10