Cualquier motor de BD al declarar un campo AUTO_INCREMENT, lleva internamente ese control. Te voy a poner un ejemplo que aparece en la web de MySQL.
Código PHP:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"),
("lax"),("whale"),("ostrich");
SELECT * FROM animals;
Resultado:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+
Si borras el registro 6 y luego agregas otro, te va a quedar así:
Código PHP:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 7 | monkey |
+----+---------+
No va a usar el 6 aunque lo hayas borrado porque el contador interno del motor de BD lleva su cuenta. Sucede lo mismo si borras todos los registros, la cuenta ya fue iniciada y continuará desde el último agregado.
Lo que si podrías hacer es alterar el contador interno para que inicie en otra secuencia. Ejemplo:
Código PHP:
ALTER TABLE tbl_name AUTO_INCREMENT = 100
, con esta sentencia, podes indicar que cambie el contador interno para que su secuencia empiece en 100, 101, 102, etc.
3.6.9 Using AUTO_INCREMENT
Para más referencia, podrías bajarte el manual de MySQL de su web oficial o revisarlo en línea ahi mismo.