Resumo : neste tutorial, você aprenderá como usar o AUTO_INCREMENT
atributo MySQL para gerar automaticamente um valor numérico exclusivo para uma coluna.
Introdução ao atributo MySQL AUTO_INCREMENT
No MySQL, você usa o AUTO_INCREMENT
atributo para gerar automaticamente números exclusivos para uma coluna cada vez que insere uma nova linha na tabela.
Normalmente, você usa o AUTO_INCREMENT
atributo da chave primária para garantir que cada linha tenha um identificador exclusivo.
Criando uma tabela com coluna MySQL AUTO_INCREMENT
Para criar uma tabela com uma coluna de incremento automático, você deve usar o AUTO_INCREMENT
atributo ao definir a coluna. Por exemplo:
CREATE TABLE contacts(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(320) NOT NULL
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, atribuímos o AUTO_INCREMENT
atributo à coluna id para defini-lo como uma chave primária de incremento automático.
Isso significa que quando você insere uma nova linha na contacts
tabela, o MySQL gera automaticamente um número exclusivo para ela.
Inserindo linhas com coluna AUTO_INCREMENT
Ao inserir linhas na tabela com uma AUTO_INCREMENT
coluna, não é necessário especificar um valor para essa coluna. O MySQL irá gerar automaticamente o valor para você. Por exemplo:
INSERT INTO contacts(name, email)
VALUES('John Doe', '[email protected]');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na INSERT
instrução, não especificamos um valor para a coluna id e fornecemos apenas os valores para a coluna nome e email. O MySQL gerou automaticamente o valor 1 para a id
coluna:
SELECT * FROM contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+----------+----------------------------+
| id | name | email |
+----+----------+----------------------------+
| 1 | John Doe | [email protected] |
+----+----------+----------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Recuperando o último valor de incremento automático
Para obter o AUTO_INCREMENT
valor que o MySQL gerou para a inserção mais recente, você usa a LAST_INSERT_ID()
função:
SELECT LAST_INSERT_ID();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A consulta retorna o último valor de incremento automático gerado para a ID
coluna, que você pode usar para outras finalidades, como inseri-lo em uma tabela relacionada.
Redefinindo o valor atual de incremento automático
Para redefinir o AUTO_INCREMENT
valor, você usa a ALTER
TABLE
instrução. Por exemplo, a instrução a seguir redefine o valor de incremento automático atual para 1:
ALTER TABLE contacts AUTO_INCREMENT = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Alternativamente, você pode excluir todas as linhas da tabela e redefinir o AUTO_INCREMENT
valor ao mesmo tempo. Para fazer isso, você usa a TRUNCATE TABLE
declaração:
TRUNCATE TABLE contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A ALTER
TABLE
instrução só terá efeito se o valor for maior ou igual ao valor máximo da AUTO_INCREMENT
coluna.
Por exemplo:
INSERT INTO contacts(name, email)
VALUES
('John Doe', '[email protected]'),
('Jane Doe', '[email protected]');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A contacts
tabela agora tem duas linhas:
+----+----------+----------------------------+
| id | name | email |
+----+----------+----------------------------+
| 1 | John Doe | [email protected] |
| 2 | Jane Doe | [email protected] |
+----+----------+----------------------------+
2 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você redefinir a AUTO_INCREMENT
coluna para qualquer número menor ou igual a 2 usando a ALTER
TABLE
instrução, a operação não terá efeitos. Por exemplo:
ALTER TABLE contacts AUTO_INCREMENT = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Agora, se você inserir uma nova linha na tabela de contatos, o MySQL usará o próximo número 3 para a nova linha. Por exemplo:
INSERT INTO contacts(name, email)
VALUES('Bob Climo', '[email protected]');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A consulta a seguir retorna todas as linhas da contacts
tabela:
SELECT * FROM contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------+-----------------------------+
| id | name | email |
+----+-----------+-----------------------------+
| 1 | John Doe | [email protected] |
| 2 | Jane Doe | [email protected] |
| 3 | Bob Climo | [email protected] |
+----+-----------+-----------------------------+
3 rows in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Adicionando uma coluna AUTO_INCREMENT a uma tabela existente
Para adicionar um AUTO_INCREMENT
a uma tabela existente, você usa a ALTER
TABLE
instrução. Por exemplo:
Primeiro, crie uma nova tabela sem AUTO_INCREMENT
coluna:
CREATE TABLE subscribers(
email VARCHAR(320) NOT NULL UNIQUE
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, adicione a coluna id
à subscribers
tabela como uma AUTO_INCREMENT
coluna:
ALTER TABLE subscribers
ADD id INT AUTO_INCREMENT PRIMARY KEY;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Atribua o
AUTO_INCREMENT
atributo a uma coluna para instruir o MySQL a gerar automaticamente valores exclusivos para essa coluna.